Continuous Deployment to the following providers is supported:
- AWS CodeDeploy
- AWS Elastic Beanstalk
- AWS Lambda
- AWS OpsWorks
- AWS S3
- Azure Web Apps
- Bluemix CloudFoundry
- Chef Supermarket
- Cloud 66
- Engine Yard
- GitHub Pages
- GitHub Releases
- Google App Engine
- Google Cloud Storage
- Google Firebase
- Puppet Forge
- Rackspace Cloud Files
- Ubuntu Snap Store
Uploading Files and skip_cleanup
When deploying files to a provider, prevent Travis CI from resetting your
working directory and deleting all changes made during the build (
--all) by adding
skip_cleanup to your
deploy: skip_cleanup: true
Deploying to Multiple Providers
Deploying to multiple providers is possible by adding the different providers
deploy section as a list. For example, if you want to deploy to both
cloudControl and Heroku, your
deploy section would look something like this:
deploy: - provider: cloudcontrol email: "YOUR CLOUDCONTROL EMAIL" password: "YOUR CLOUDCONTROL PASSWORD" deployment: "APP_NAME/DEP_NAME" - provider: heroku api_key: "YOUR HEROKU API KEY"
Conditional Releases with
Set your build to deploy only in specific circumstances by configuring the
on: key for any deployment provider.
deploy: provider: s3 access_key_id: "YOUR AWS ACCESS KEY" secret_access_key: "YOUR AWS SECRET KEY" bucket: "S3 Bucket" skip_cleanup: true on: branch: release condition: $MY_ENV = super_awesome
When all conditions specified in the
on: section are met, your build will deploy.
Use the following options to configure conditional deployment:
repo: in the form
owner_name/repo_name. Deploy only when the build occurs on a particular repository. For example
on: repo: travis-ci/dpl
branch: name of the branch. If omitted, this defaults to the
app-specific branch, or
master. If the branch name is not known ahead of time, you can specify
all_branches: trueinstead of
branch:and use other conditions to control your deployment.
go: for language runtimes that support multiple versions, you can limit the deployment to happen only on the job that matches a specific version.
condition: deploy when a single bash condition evaluates to
true. This must be a string value, and is equivalent to
if [[ <condition> ]]; then <deploy>; fi. For example,
$CC = gcc.
falseor any other string:
tags: true: deployment is triggered if and only if
$TRAVIS_TAGis set. Depending on your workflow, you may set
$TRAVIS_TAGexplicitly, even if this is a non-tag build when it was initiated. This causes the
branchcondition to be ignored.
tags: false: deployment is triggered if and only if
$TRAVIS_TAGis empty. This also causes the
branchcondition to be ignored.
tagsis not set, or set to any other value,
$TRAVIS_TAGis ignored, and the
branchcondition is considered, if it is set.
Examples of Conditional Deployment
This example deploys to Appfog only from the
staging branch when the test has run on Node.js version 0.11.
deploy: provider: appfog user: ... api_key: ... on: branch: staging node: '0.11' # this should be quoted; otherwise, 0.10 would not work
The next example deploys using a custom script
deploy.sh, only for builds on the branches
deploy: provider: script script: deploy.sh on: all_branches: true condition: $TRAVIS_BRANCH =~ ^staging|production$
The next example deploys to S3 only when
$CC is set to
deploy: provider: s3 access_key_id: "YOUR AWS ACCESS KEY" secret_access_key: "YOUR AWS SECRET KEY" skip_cleanup: true bucket: "S3 Bucket" on: condition: "$CC = gcc"
This example deploys to GitHub Releases when a tag is set and the Ruby version is 2.0.0.
deploy: provider: releases api_key: "GITHUB OAUTH TOKEN" file: "FILE TO UPLOAD" skip_cleanup: true on: tags: true rvm: 2.0.0
Adding a deployment provider
We are working on adding support for other PaaS providers. If you host your application with a provider not listed here and you would like to have Travis CI automatically deploy your application, please get in touch.
If you contribute to or experiment with the deploy tool make sure you use the edge version from GitHub:
deploy: provider: awesome-experimental-provider edge: true
Note that pull request builds skip the deployment step altogether.