DEV Community

Mike Coutermarsh
Mike Coutermarsh

Posted on • Edited on

8

GitHub Actions - Deploy to Heroku

Here's how to deploy to Heroku using GitHub Actions. Without adding any new dependencies.

First, you need a Heroku auth token. You can generate one on your machine using the following:

heroku authorizations:create

Copy the Token value and add it as a secret to your repository (Go to your repository Settings -> Secrets. Name it HEROKU_API_TOKEN)

Next, add this to your workflow.

- name: Deploy to Heroku
  env:
    HEROKU_API_TOKEN: ${{ secrets.HEROKU_API_TOKEN }}
    HEROKU_APP_NAME: "your-app-name-here"
  if: github.ref == 'refs/heads/master' && job.status == 'success'
  run: git push https://heroku:$HEROKU_API_TOKEN@git.heroku.com/$HEROKU_APP_NAME.git origin/master:master

This will only run for builds on the Master branch and if previous steps have worked properly.

Here's a full example for a Rails app. This runs your tests, and if successful, deploys to Heroku.

name: Ruby Test and Deploy
on: [push]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v1
    - name: Set up Ruby
      uses: actions/setup-ruby@v1
      with:
        ruby-version: 2.6.3
    - uses: actions/cache@v1
      with:
        path: vendor/bundle
        key: ${{ runner.os }}-gem-${{ hashFiles('**/Gemfile.lock') }}
        restore-keys: |
          ${{ runner.os }}-gem-
    - name: Install Bundler
      run: |
        gem install bundler
    - name: Install Gems
      run: bundle install --path vendor/bundle --jobs 4 --retry 3
    - name: Run Tests
      run: |
        bundle exec rake test
    - name: Deploy to Heroku
      env:
        HEROKU_API_TOKEN: ${{ secrets.HEROKU_API_TOKEN }}
        HEROKU_APP_NAME: "your-app-name-here"
      if: github.ref == 'refs/heads/master' && job.status == 'success'
      run: git push https://heroku:$HEROKU_API_TOKEN@git.heroku.com/$HEROKU_APP_NAME.git origin/master:master

Hostinger image

Get n8n VPS hosting 3x cheaper than a cloud solution

Get fast, easy, secure n8n VPS hosting from $4.99/mo at Hostinger. Automate any workflow using a pre-installed n8n application and no-code customization.

Start now

Top comments (1)

Collapse
 
marckohlbrugge profile image
Marc Köhlbrugge

Thanks for sharing this, Mike! Been experimenting with GitHub Actions lately, but wasn't able to figure out how to deploy to Heroku. Also nice to see the cache action. That will speed up builds dramatically.

In case anyone wonders how to run database migrations as part of your deployment process, you can simply add the following to your Procfile: release: bin/rails db:migrate. Heroku will then take care of it for you. (docs)

Alternatively, you could probably use the Heroku action, but the above feels much simpler.

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay