Conditional Deployments
This page documents deployments using the dpl v2. Please see our blog post for details. You can check previous dpl v1 documentation here.
Set your build to deploy only in specific circumstances by using the on
option for any deployment provider.
deploy:
provider: <provider>
# ⋮
on:
branch: release
condition: $MY_ENV = value
If all conditions specified in the on section are met, your build will deploy.
The following conditions are available:
Repo #
To deploy only when the build occurs on a particular repository, add repo in the form owner_name/repo_name:
deploy:
provider: <provider>
# ⋮
on:
repo: travis-ci/dpl
Branch #
By default, deployments will only happen on the master branch. You can overwrite this by using the branch and all_branches options.
For example, to deploy on the production branch only use:
deploy:
provider: <provider>
# ⋮
on:
branch: production
In order to deploy from all branches:
deploy:
provider: <provider>
# ⋮
on:
all_branches: true
Condition #
You can specify a single Bash condition that needs to evaluate to true in
order for the deployment to happen.
This must be a string value that will be wrapped into if [[ <condition> ]]; then <deploy>; fi.
For example, in order to only deploy if $CC is gcc use:
deploy:
provider: s3
# ⋮
on:
condition: $CC = gcc
Tag #
You can specify whether or not to deploy on tag builds using the option tags.
If set to to true the deployment will only happen on tag builds, if set to
false it will not happen on tag builds.
For example, in order to deploy on tag builds only:
deploy:
provider: <provider>
# ⋮
on:
tags: true
tagscan betrue,falseor any other string:
This will check if the environment variable $TRAVIS_TAG is set. Depending on
your workflow, you may set $TRAVIS_TAG explicitly, even if this is a non-tag
build when it was initiated.
Setting tags to true causes the branch condition to be ignored, otherwise
$TRAVIS_TAG is ignored, and the branch condition is considered.
Examples for conditional deployments #
This deploys using a custom script deploy.sh, only for builds on the branches
staging and production.
deploy:
provider: script
script: deploy.sh
on:
all_branches: true
condition: $TRAVIS_BRANCH =~ ^(staging|production)$
This deploys using custom scripts deploy_production.sh and
deploy_staging.sh depending on the branch that triggered the job.
deploy:
- provider: script
script: deploy_production.sh
on:
branch: production
- provider: script
script: deploy_staging.sh
on:
branch: staging
This deploys to S3 only when $CC is set to gcc.
deploy:
provider: s3
access_key_id: <encrypted access_key_id>
secret_access_key: <encrypted secret_access_key>
bucket: <bucket>
on:
condition: $CC = gcc