Travis部署阶段没有运行条件if:branch = master AND tag IS present AND type = push

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Travis部署阶段没有运行条件if:branch = master AND tag IS present AND type = push相关的知识,希望对你有一定的参考价值。

我的Travis文件包含两个阶段:

  • test,运行多个Node.js版本的构建/测试(并且工作)
  • deploy,当满足以下条件时,应运行构建并将代码部署到npm:branch = master AND tag IS present AND type = push

我把tagged commit推向了主人(因此应该满足所有三个条件),但是在test阶段成功完成后,deploy阶段is not started

以下是我的.travis.yml file的其他(可能很重要)部分:

language: node_js

node_js:
  - '8'
  - '9'
  - '10'
  #- '11' # Runs the coverage report (added below)

before_script: npm run build
script:
  - npm run lint
  - npm run coverage

jobs:
  include:
    - stage: test
      node_js: '11'
      after_success: 'cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js'
    - stage: deploy
      node_js: '11'
      script: skip
      deploy:
        provider: npm
        # ...

stages:
  - test
  - name: deploy
    if: branch = master AND tag IS present AND type = push
答案

将这些行添加到我的travis文件后,我发现了自己:

echo "$TRAVIS_EVENT_TYPE" # result: push
echo "$TRAVIS_TAG"        # result: v0.14.0
echo "$TRAVIS_BRANCH"     # result: v0.14.0

因此,当设置标记时,分支将设置为标记名称。我也在docs for environment variables上发现了这个暗示:

请注意,对于标记,git不存储标记提交的分支。

奇怪的是,您仍然可以在部署条件中检查分支。所以这对我有用:

  # ...
  deploy:
    provider: npm
    # ...
    on:
      tags: true
      branch: master

stages:
  - test
  - name: deploy
    if: type = push

以上是关于Travis部署阶段没有运行条件if:branch = master AND tag IS present AND type = push的主要内容,如果未能解决你的问题,请参考以下文章

[Javascript] Limit Built Branches on Travis

向 .travis.yml 文件添加更多配置后,TravisCI 没有运行

如何在 travis 部署脚本中运行 aws configure?

在travis CI上运行Makefile时找不到gcc命令

Travis CI - 以 sudo 运行部署步骤(PyPI)?

使用 Travis-ci 在 pypi 上部署包失败,没有任何错误消息