Continuous Deployment to the following providers is supported:
- AWS CodeDeploy
- AWS Elastic Beanstalk
- AWS Lambda
- AWS OpsWorks
- 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
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
Deployment can be controlled by setting the
on: for each 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, deployment for this
provider will be performed.
Common options are:
repoName of the repository, along with the owner (e.g.,
branchName 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 the desired version.
condition: You may set bash condition with this option. This must be a string value, which will be pasted into a bash expression of the form
if [[ <condition> ]]; then <deploy>; fiIt can be complex, but there can be only one. For example,
$CC = gcc.
tags: When set to
true, the application is deployed when a tag is applied to the commit. This causes the
branchcondition to be ignored.
Examples of Conditional Releases using
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 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 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.