Travis 条件部署:使用正则表达式为跳过分支部署脚本,出现错误“不允许分支”



我指定了多个部署脚本提供程序。一个预期运行但跳过的是:

- 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/.*$,使用条件字段并使用 && 连接多个条件。branchbranches字段不支持正则表达式。

如果未指定branchbranches字段,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

最新更新