TravisCI:在特定分支上运行after_success

Sun*_*Cho 21 travis-ci

我想知道如何after_success只为特定分支运行脚本.

我正在使用自定义脚本在构建过程后部署应用程序.我只想在prod分支上运行它.

到目前为止,我尝试过以下方法:

#1

after_success:
  - # some deployment script
  on: prod

#2

branches:
  only:
    - prod
    after_success:
      - # some deployment script
#3

after_success:
  branches:
    only:
      - prod
  - # some deployment script
Run Code Online (Sandbox Code Playgroud)

有什么建议?

Sun*_*Cho 29

我通过使用TRAVIS_BRANCH 环境变量编写一个简单的脚本并在其中执行脚本来解决它after_success

.travis.yml

after_success:
- ./deploy.sh
Run Code Online (Sandbox Code Playgroud)

deploy.sh

#!/bin/bash
if [ "$TRAVIS_BRANCH" == "prod" ]; then
  // do the deploy
fi
Run Code Online (Sandbox Code Playgroud)

  • 请记住使脚本可执行before_install: - chmod + x deploy.sh (5认同)
  • **注意**这也会触发针对该分支的拉取请求.您可能还想使用`TRAVIS_PULL_REQUEST` (5认同)
  • 请注意,在deploy.sh脚本中,如果命令返回非零代码,则构建仍将标记为成功 (2认同)

Pro*_*ank 12

您还可以在构建的部署阶段使用脚本提供程序来执行此操作.这种方法有点干净但只允许一个命令,不像after_success.

deploy:
  provider: script
  script: # some deployment script
  on:
    branch: prod
Run Code Online (Sandbox Code Playgroud)