Travis的regexp分支部署脚本因错误“分支不允许”而被跳过

时间:2019-07-19 16:23:08

标签: deployment continuous-integration travis-ci

我指定了多个部署脚本提供程序。可以运行但被跳过的是:

- 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

1 个答案:

答案 0 :(得分:0)

要有条件地运行部署脚本,请仅在与正则表达式匹配的分支(例如,发布分支为^release\/.*$)上说,使用条件字段并使用&&连接多个条件。 branchbranches字段不支持正则表达式。

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