Вы можете использовать Условное развертывание .Это позволяет вам указать, нажимаете ли вы на 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
/ live
в Cloud Foundry:
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
, если это фиксация с тегами, и staging
+ live
, если это коммит с фиксацией на master (версия) и развертывание.условие выполнено.
Предоставлено: Возможно, не самое красивое решение, но оно определенно работает.И это не Трэвис, ожидающий, что вы вручную подтвердите развертывание в режиме реального времени (что бы высмеивало весь принцип автоматического развертывания imo), но это способ гарантировать, что вам придется вручную запускать конвейер определенным образом.