我指定了多个部署脚本提供程序。一个预期运行但跳过的是:
- 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
最后三个部署仅在主分支上,因此可以跳过它们。
在与正则表达式匹配的所有分支上的第一个部署:/^release/.*$/应该针对此分支版本/2.1.5 运行。但是,它也跳过了此部署。
有人可以指出为什么在这种情况下跳过发布分支部署吗?我希望第一个部署在 linux 上运行并仅发布分支,例如:release/2.1.5。
特拉维斯版本:https://travis-ci.org/leopardslab/dunner/jobs/560593148
特拉维斯配置文件:https://github.com/leopardslab/dunner/blob/172a4c5792b0a8389556cc8ee4f690dc73fafb6e/.travis.yml
要有条件地运行部署脚本,请仅在与正则表达式匹配的分支(如释放分支(上^release/.*$
,使用条件字段并使用 && 连接多个条件。branch
或branches
字段不支持正则表达式。
如果未指定branch
或branches
字段,travis 将假定其在主分支(或默认分支(上。因此,请务必在 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