This page documents deployments using the next major version dpl v2 which currently is in a preview release phase. Please see our blog post for details. The current default version is dpl v1. Check dpl v1 documentation here.
How to opt in to v2 #
In order to use version
v2 of our deployment tooling, please add the
following to your
deploy: provider: <provider> # ⋮ edge: true
Supported Providers #
Continuous Deployment to the following providers is supported:
- AWS CloudFormation
- AWS CodeDeploy
- AWS Elastic Beanstalk
- AWS Lambda
- AWS OpsWorks
- AWS S3
- Azure Web Apps
- Bluemix CloudFoundry
- Chef Supermarket
- Cloud 66
- Cloud Foundry
- Engine Yard
- GitHub Pages
- GitHub Releases
- Google App Engine
- Google Cloud Storage
- Google Firebase
- Netlify Drop
- Puppet Forge
- Rackspace Cloud Files
- Snap Store
Pull Requests #
Note that pull request builds skip the deployment step altogether.
Maturity Levels #
In order to communicate the current development status and maturity of dpl’s support for a particular service, the respective provider is marked with one of the following maturity levels, according to the given criteria:
dev- the provider is in development (initial level)
alpha- the provider is fully tested
beta- the provider has been in alpha for at least a month and successful real-world production deployments have been observed
stable- the provider has been in beta for at least two months and there are no open issues that qualify as critical (such as deployments failing, documented functionality broken, etc.)
Dpl v2 represents a major rewrite, so support for all providers has been reset to
alpha, depending on the test status.
For all levels except
stable a message will be printed to your build log
that informs you about the current status.
Securing secrets #
Secret option values should be given as either encrypted strings in your build
.travis.yml file) or environment variables in your repository
Environment variables can be set on the settings page of your repository, or
travis env set:
travis env set <PROVIDER_NAME>_PASSWORD <password>
In order to encrypt option values when adding them to your
travis encrypt <password>
--add to directly add it to your
.travis.yml file. Note that this command has to be run in your repository’s root directory:
travis encrypt --add deploy.password <password>
Conditional Deploys #
You can deploy only when certain conditions are met.
Cleaning up the Git Working Directory #
By default your Git working directory will not be cleaned up before the deploy step, so it might contain left over artifacts from previous steps.
For many providers and deployment targets this is not an issue or even intended.
If you do need to clean up the working directory from any changes made during
the build process, you can add the following to your
deploy: provider: [your provider] cleanup: true
Please note that the previous version of dpl, our deployment integration tooling, used to reset your working directory and delete all changes made during the build using
git stash --all. In order to keep changes one had to opt out using
skip_cleanup: true. This default turned out to be useful only for very few providers and has been changed in dpl v2. You still might find external tutorials or posts mentioning
Running commands before and after the deploy step #
Sometimes you want to run commands before or after deploying.
You can use the
after_deploy steps for this. These will
only be triggered if Travis CI is actually deploying.
before_deploy: "echo ready?" deploy: # ⋮ after_deploy: - ./after_deploy_1.sh - ./after_deploy_2.sh
Deploying to multiple targets #
Running multiple deployments to different providers (or the same provider with
different configurations) is possible by adding configurations to the
section as a list. For example, if you want to deploy to both s3 and Heroku,
deploy section would look something like this:
deploy: - provider: s3 access_key_id: <AWS access key id> secret_access_key: <AWS secret access key> # ⋮ - provider: heroku api_key: <Heroku api key> # ⋮
Running an edge version #
If you contribute to or experiment with dpl, our deployment tooling, make sure you use the edge version from GitHub:
deploy: provider: <your-provider> edge: branch: master source: <GitHub handle>/dpl # only needed for forks of travis-ci/dpl
You can find more information about contributing to dpl here.