我在 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
,里面也有。