如何使用Travis CI设置“在分支上部署”,分支名称匹配正则表达式?

时间:2018-02-23 22:10:59

标签: travis-ci

当我们为我们的产品削减发布分支时,我们将其版本化为:

释放/ X.X.X

是否有一种方法可以将travis.yml文件设置为匹配正则表达式模式的deploy on branch

travis.yml片段:

provider: script
script: bash dockerbuildandpush.sh
on:
  branch: /^release\/.*$/

上述代码段不起作用。任何帮助,将不胜感激。

3 个答案:

答案 0 :(得分:3)

想出来。把它留给那些试图做同样事情的人。

provider: script
script: bash dockerbuildandpush.sh
on:
  all_branches: true
  condition: ${TRAVIS_PULL_REQUEST_BRANCH:-$TRAVIS_BRANCH} =~ ^release\/.*$

${TRAVIS_PULL_REQUEST_BRANCH:-$TRAVIS_BRANCH}的说明可以在这里找到: https://github.com/travis-ci/travis-ci/issues/6652

https://graysonkoonce.com/getting-the-current-branch-name-during-a-pull-request-in-travis-ci/

答案 1 :(得分:2)

我还需要仅在匹配正则表达式的分支上进行部署。

我的检查如下:

  • 有标签吗?
  • 我们是主分公司吗? (避免在Pull请求上部署)
  • 如果是,会看起来像1.0.0还是0.4.3

如果这两个检查匹配,我可以使用标签发布版本安全部署。

.travis.yml的有趣部分:

deploy:
  skip_cleanup: true
  provider: pypi
  distributions: sdist bdist_wheel
  on:
    tags: true
    branch:
      - master
      - /(\d+\.)?(\d+\.)?(\*|\d+)$/

希望这有帮助。

度过愉快的一天。

答案 2 :(得分:0)

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

如果未指定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