小智 3
您可以使用条件部署。这允许您指定是否推送到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)
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 上的标记提交(发布)并且满足部署条件,则推送到 + staging。live
当然:也许不是最漂亮的解决方案,但它绝对有效。这并不是 Travis 等待您手动确认实时部署(在我看来,这有点嘲笑整个自动化部署原则),而是一种保证您必须以特定方式手动触发管道的方法。
| 归档时间: |
|
| 查看次数: |
1284 次 |
| 最近记录: |