Travis手动确认下一阶段

isA*_*Don 5 travis-ci

我有一个舞台testproduction。我想手动确认部署到生产环境。有办法实现吗?

小智 3

您可以使用条件部署。这允许您指定是否推送到productiontest。将其与例如check-live-deployment.sh脚本结合起来并区分分支和/或标记的提交。

例如:

#!/bin/bash
set -e

contains() {
    if [[ $TRAVIS_TAG = *"-live"* ]]
    then
        #"-live" is in $TRAVIS_TAG
        echo "true"
    else
        #"-live" is not in $TRAVIS_TAG
        echo "false"
    fi
}

echo "============== CHECKING IF DEPLOYMENT CONDITION IS MET =============="
export LIVE=$(contains)
Run Code Online (Sandbox Code Playgroud)

对于/ / -.travis.yml部署到 Cloud Foundry:devstaginglive

sudo: false
language: node_js
node_js:
  - '8.9.4'
branches:
  only:
    - master
    - "/v*/"
script:
  - printenv 
before_install:
  - chmod +x -R ci
install:
  - source ci/check_live_deployment.sh
  - ./ci/check_live_deployment.sh
deploy:
  - provider: script
    skip_cleanup: true
    script: env CF_SPACE=$CF_SPACE_DEV CF_MANIFEST=manifest-dev.yml ci/deploy_to_cf.sh
    on:
      tags: false
  - provider: script
    skip_cleanup: true
    script: env CF_SPACE=$CF_SPACE_STAGING CF_MANIFEST=manifest-staging.yml ci/deploy_to_cf.sh
    on:
      tags: true
  - provider: script
    skip_cleanup: true
    script: env CF_SPACE=$CF_SPACE_LIVE CF_MANIFEST=manifest-live.yml ci/deploy_to_cf.sh
    on:
      tags: true
      condition: $LIVE = true
Run Code Online (Sandbox Code Playgroud)

dev如果分支是 master && 不存在标签,staging如果它是标记提交,则此示例推送到,如果它是 master 上的标记提交(发布)并且满足部署条件,则推送到 + staginglive

当然:也许不是最漂亮的解决方案,但它绝对有效。这并不是 Travis 等待您手动确认实时部署(在我看来,这有点嘲笑整个自动化部署原则),而是一种保证您必须以特定方式手动触发管道的方法。