This action automates the deployment process for your project to Heroku. It works by executing commands in your shell via NodeJS.
- A
Procfile
orDockerfile
in your project. - A GitHub repository with a
.github
folder. - A Heroku account and API key.
- Create a
.github
folder in your repository. - Inside
.github
, create aworkflows
folder. - Inside
workflows
, create a file namedmain.yml
with the following content:
name: Deploy
on:
push:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: 5hojib/heroku-deploy-action@v2 # This action
with:
heroku_api_key: ${{ secrets.HEROKU_API_KEY }}
heroku_app_name: "YOUR APP's NAME" # Must be unique in Heroku
heroku_email: "YOUR EMAIL"
-
heroku_api_key
:- Description: Your Heroku API key (stored as a GitHub secret).
- Example:
${{ secrets.HEROKU_API_KEY }}
-
heroku_app_name
:- Description: Unique name for your Heroku app.
- Example:
"your-app-name"
-
heroku_email
:- Description: Your Heroku email address.
- Example:
"your_email@example.com"
-
Build Configuration:
buildpack
:- Description: URL of a custom buildpack for your project.
- Example:
"https://github.com/heroku/heroku-buildpack-ruby"
branch
:- Description: Branch to deploy (defaults to HEAD).
- Example:
"dev"
,"staging"
dontautocreate
:- Description: Set to true to prevent automatic Heroku app creation.
- Example:
"true"
dontuseforce
:- Description: Set to true to skip forced branch switching on Heroku.
- Example:
"true"
-
Docker Options:
usedocker
:- Description: Deploy using a Dockerfile.
- Example:
"true"
docker_heroku_process_type
:- Description: Type of Heroku process (web, worker, etc.) (requires
usedocker
). - Example:
"web"
,"worker"
- Description: Type of Heroku process (web, worker, etc.) (requires
docker_build_args
:- Description: List of arguments to pass to the Docker build (requires
usedocker
). - Example:
"NODE_ENV=production"
- Description: List of arguments to pass to the Docker build (requires
-
Application Structure:
appdir
:- Description: Path to your application directory within the project (for subdirectories).
- Example:
"api"
-
Health Check Options:
healthcheck
:- Description: URL to a health check endpoint (checks for a 200 response).
- Example:
"https://yourapp.com/health"
checkstring
:- Description: Value to check for in the health check response.
- Example:
"ok"
delay
:- Description: Time (in seconds) to wait before performing health check (defaults to 0).
- Example:
"5"
rollbackonhealthcheckfailed
:- Description: Set to true to rollback on a failed health check.
- Example:
"true"
-
Other Options:
-
procfile
:- Description: Contents of the Procfile to save and deploy.
- Example:
"web: npm start"
-
env_file
:- Description: Path to an environment variable file (relative to
appdir
). - Example:
".env"
- Description: Path to an environment variable file (relative to
-
justlogin
:- Description: Set to true to only login to Heroku (no deployment).
- Example:
"true"
-
region
:- Description: Heroku region for app deployment.
- Example:
"us"
,"eu"
-
stack
:- Description: The Heroku stack to use for this app.
- Example:
"heroku-20"
-
team
:- Description: The Heroku team to assign this app to (for Heroku Enterprise users).
- Example:
"your-team-name"
-