我有一个阶段test
和production
。我想手动确认部署到生产。有没有办法实现这个目标?
答案 0 :(得分:1)
您可以使用Conditional Deployments。这允许您指定是否推送到 var age=prompt("What is your age=");
function check(age){
if (Number(age)===18){
console.log("Cong its your first ride");
}
else if(Number(age)>18){
console.log("Powering On");
}
else{
console.log("Not qualify for ride");
}
}
check(age);
或production
。
将其与例如一个test
- 脚本,区分分支和/或标记的提交。
例如:
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)
用于.travis.yml
/ dev
/ staging
- 部署到Cloud Foundry:
live
如果分支是master&&&&&没有标记,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
如果是标记的提交,dev
+ staging
,如果它是master(发布)上的标记提交,并且满足部署条件。
授予: 也许不是最漂亮的解决方案,但绝对有效。这不是Travis等你手动确认实时部署(这会嘲笑整个自动部署原则imo),但这是一种保证,你必须以特定方式手动触发管道的方法。