Skip to content

Heroku

Heroku #442

Workflow file for this run

# Based on https://janjones.me/posts/github-action-heroku-deployment/
name: Heroku
on:
deployment_status:
issue_comment:
types: [created, edited]
jobs:
deployment-status:
name: Check deployment status
runs-on: ubuntu-latest
# Continue only if some definitive status has been reported. Also allow
# manual refresh of status checks by commenting '/refresh-heroku-status'.
if: ${{ github.event.deployment_status.state != 'pending'
|| (contains(github.event.comment.body, '/refresh-heroku-status') && github.event.issue.pull_request) }}
steps:
- uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1
with:
egress-policy: audit
# Forward deployment's status to the deployed commit.
- uses: octokit/request-action@872c5c97b3c85c23516a572f02b31401ef82415d # v2.3.1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
route: POST /repos/:repository/statuses/${{ github.event.deployment.sha }}
repository: ${{ github.repository }}
state: ${{ github.event.deployment_status.state }}
target_url: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}
description: >
${{ format('Heroku deployment is {0}', github.event.deployment_status.state) }}
context: Heroku / Deployment status
health-check:
name: Check site health
runs-on: ubuntu-latest
# Run health check only if deployment succeeds. Also allow manual refresh
# of status checks by commenting '/refresh-heroku-status'.
if: ${{ github.event.deployment_status.state == 'success'
|| (contains(github.event.comment.body, '/refresh-heroku-status') && github.event.issue.pull_request) }}
# Check that the deployed app returns successful HTTP response.
steps:
- uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1
with:
egress-policy: audit
- id: health_check
uses: jtalk/url-health-check-action@b716ccb6645355dd9fcce8002ce460e5474f7f00 # v4
with:
url: ${{ github.event.deployment.payload.web_url }}
follow-redirect: true
max-attempts: 4
retry-delay: 30s
continue-on-error: true
# Set appropriate status to the deployed commit.
- uses: octokit/request-action@872c5c97b3c85c23516a572f02b31401ef82415d # v2.3.1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
route: POST /repos/:repository/statuses/${{ github.event.deployment.sha }}
repository: ${{ github.repository }}
state: ${{ steps.health_check.outcome }}
target_url: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}
description: >
${{ format('Site health is {0}', steps.health_check.outcome) }}
context: Heroku / Site health