我指定了多个部署脚本提供程序。可以运行但被跳过的是:
- provider: script
skip_cleanup: true
script: curl -sL https://git.io/goreleaser | bash -s -- --rm-dist --skip-publish
verbose: true
on:
condition: "$TRAVIS_OS_NAME = linux"
branches:
only:
- /^release\/.*$/
go: 1.11.x
最后三个部署仅在master分支上,因此有权跳过它们。
在所有与regexp相匹配的分支上的第一个部署:/^release/.*$/应该为此分支版本2.1.5运行。但是,它也跳过了此部署。
有人可以指出在这种情况下为什么跳过发布分支部署吗?我希望第一个部署在Linux上运行,并且只发布分支,例如:release / 2.1.5。
Travis版本:https://travis-ci.org/leopardslab/dunner/jobs/560593148
Travis配置文件:https://github.com/leopardslab/dunner/blob/172a4c5792b0a8389556cc8ee4f690dc73fafb6e/.travis.yml
答案 0 :(得分:0)
要有条件地运行部署脚本,请仅在与正则表达式匹配的分支(例如,发布分支为^release\/.*$
)上说,使用条件字段并使用&&连接多个条件。 branch
或branches
字段不支持正则表达式。
如果未指定branch
或branches
字段,则travis假定其位于master分支(或默认分支)上。因此,请确保在travis配置中包含all_branches: true
行。
您可以使用travis env变量$TRAVIS_BRANCH
访问当前分支名称。
deploy:
- provider: script
script: bash myscript.sh
verbose: true
on:
all_branches: true
condition: $TRAVIS_BRANCH =~ ^release\/.*$ && $TRAVIS_OS_NAME = linux