Travis CI 通过"部署"分支自动启动作业,但失败



我在 GitHub Pages 上为 Hugo 博客设置了一个部署作业,代码本身存储在dev分支中,而作为渲染博客的静态文件存储在master分支中。

因此,我创建了一个 YAML.travis.yml文件,该文件将所有内容渲染成public/并将其部署到master.travis.yml的相关部分如下所示:

branches:
only:
- dev
except:
- master
deploy:
github_token: $GITHUB_TOKEN
provider: pages
target_branch: master
skip_cleanup: true
local_dir: public
on:
branch: dev

这很完美。每当我推送代码以dev脚本运行并且静态网站正在渲染并生成到public/时,但由于某种原因,这也创建了一个由Deployment Bot (from Travis CI)创建和启动的自动构建作业。

我在master分支中没有.travis.yml文件,所以特拉维斯显然对此有所抱怨,他说:

Could not find .travis.yml, using standard configuration.

稍后执行rake失败:

$ rake
rake aborted!
No Rakefile found (looking for: rakefile, Rakefile, rakefile.rb, Rakefile.rb)
/home/travis/.rvm/gems/ruby-2.4.1@global/gems/rake-12.0.0/exe/rake:27:in `<top (required)>'
/home/travis/.rvm/gems/ruby-2.4.1/bin/ruby_executable_hooks:15:in `eval'
/home/travis/.rvm/gems/ruby-2.4.1/bin/ruby_executable_hooks:15:in `<main>'
(See full trace by running task with --trace)
The command "rake" exited with 1.

我理解为什么这项工作失败了。问题是这个作业不应该首先运行。没有理由对静态文件运行任何 CI 作业,静态文件是原始预期 CI 作业的结果。

如何让 Travis 在部署后自动停止构建此作业?Travis 不会忽略主分支上的构建,尽管它列在 YAML 文件中的branches: except下。

不幸的是,Travis CI 必须在项目的每个活动分支中都有一个.travis.yml文件。

分支"安全列表"也优先于"阻止列表"。尝试将branches:部分更改为:

branches:
only:
- dev

。并在你的主人身上放一个.travis.yml,里面也有。

最新更新