Deploy to Heroku
Deploying your application to Heroku from Bitbucket Pipelines.
A full end-to-end example is available in this repository if you prefer a more hands-on experimentation with deploying to Heroku using Pipelines and Pipes.
Step 1: Add your Heroku API token and app name as an environment variables
To define the following two variables for your Heroku repository, select Repository settings on the left sidebar, select Repository variables under the PIpeline section:
Name | Value |
---|---|
| API token generated from Heroku. Use a secured variable so that it is masked and encrypted |
| Heroku app name |
You can define these variable at the deployment environment, repository, or workspace level.
Step 2: Configure your Pipeline to do a full clone
Heroku deployments require a full Git clone. By default, Pipelines clones your repository with a depth of 50 to shorten your build time. You can configure your Pipeline to do a full Git clone in your bitbucket-pipelines.yml
file.
Example — using the depth option to full clone for every step in the pipeline
clone:
depth: full
pipelines:
default:
- step:
script:
- ls $BITBUCKET_CLONE_DIR
Example — using the depth option to full clone for a single step
pipelines:
default:
- step:
clone:
depth: full
script:
- ls $BITBUCKET_CLONE_DIR
Step 3: Use a pipe to deploy to Heroku
Deploy your application to Heroku using the Heroku deploy pipe. The pipe repository contains more usage examples, which variables you can use, and support information. Below is a sample bitbucket-pipelines.yml
configuration that deploys an application to Heroku. This example also provides insights on some best practices, like having separate steps for building and deploying an application and also using Bitbucket Deployments to deploy to different environments.
# This is a sample build configuration for Python.
# Check our guides at https://confluence.atlassian.com/x/x4UWN for more examples.
# Only use spaces to indent your .yml configuration.
# -----
# You can specify a custom docker image from Docker Hub as your build environment.
image: python:3.7.2
pipelines:
default:
- step:
name: Test
script:
- cd sample-python-app
- pip install -r requirements.txt
- ./manage.py test
- step:
name: Build
script:
- cd sample-python-app
- git archive --format=tar.gz main -o sample-app.tar.gz
artifacts:
- sample-python-app/sample-app.tar.gz
- step:
name: Deploy to production
deployment: production
caches:
- pip
script:
- pipe: atlassian/heroku-deploy:0.1.1
variables:
HEROKU_API_KEY: $HEROKU_API_KEY
HEROKU_APP_NAME: $HEROKU_APP_NAME
ZIP_FILE: sample-python-app/sample-app.tar.gz
You can check your bitbucket-pipelines.yml file with our online validator.
Was this helpful?