GitHub Action
Dynamic Preview Environments using Humanitec
This GitHub Action allows you to dynamically create and deleted preview environments using the Humanitec Platform Orchestrator.
Note
The preview environment is cloned from thebase-env
specified in the action inputs (defaults todevelopment
if not specified). Ensure the source environment id,base-env
, is up-to-date before creating preview environments, otherwise they may be cloned from an old version.
humanitec-token
(required), Humanitec API tokenhumanitec-org
(required), The name of the Humanitec orghumanitec-app
(required), The name of the Humanitec appaction
(required), The action to be performed (create, notify or delete)base-env
(optional), The source environment id, defaults todevelopment
if not specified.image
(optional), The image of the workload that should be deployed,registry.humanitec.io/${humanitec-org}/${GITHUB_REPOSITORY}
by default.environment-url-template
(optional), Provide a custom mustache template for the environment url,https://app.humanitec.io/orgs/{{orgId}}/apps/{{appId}}/envs/{{envId}}
by default.humanitec-api
(optional), Use a different Humanitec API host.github-token
(optional), GitHub token used for commenting inside the PR.
environment-url
: Rendered URL of the preview environment.humanitec-env
: Id of the created environment.
Create preview environments when a PR is created and remove it again once the PR is closed.
.github/workflows/create-preview-env.yml
name: Create Preview environment
on:
pull_request_target:
types: [ opened, reopened ]
jobs:
create-preview-env:
runs-on: ubuntu-latest
steps:
- uses: humanitec/preview-envs-action@v2
with:
humanitec-token: ${{ secrets.HUMANITEC_TOKEN }}
humanitec-org: my-org
humanitec-app: my-app
action: create
github-token: ${{ secrets.GITHUB_TOKEN }}
.github/workflows/delete-preview-env.yml
name: Delete Preview environment
on:
pull_request_target:
types: [ closed ]
jobs:
delete-preview-env:
runs-on: ubuntu-latest
steps:
- uses: humanitec/preview-envs-action@v2
with:
humanitec-token: ${{ secrets.HUMANITEC_TOKEN }}
humanitec-org: my-org
humanitec-app: my-app
action: delete
github-token: ${{ secrets.GITHUB_TOKEN }}
Add the following snipped after your CI step (commonly the build-push-to-humanitec step) to notify the underlying GitHub Environment about the newly pushed image. When the environment-url-template
parameter is provided, GitHub will display a "View Deployment" button for convenient access to the preview environment using the generated URL.
- uses: humanitec/preview-envs-action@v2
with:
humanitec-org: my-org
humanitec-app: my-app
action: notify
github-token: ${{ secrets.GITHUB_TOKEN }}
environment-url-template: https://dev-{{envId}}.my-domain.app
All actions above return the output parameter environment-url
. If you just want to retrieve the environment url you can use this step:
- name: Get Preview Environment
id: preview-env
uses: humanitec/preview-envs-action@v2
with:
humanitec-org: my-org
humanitec-app: my-app
action: get-environment-url
github-token: ${{ secrets.GITHUB_TOKEN }}
environment-url-template: "https://{{envId}}-app.humanitec.io"
- name: Print preview environment url
run: |
echo "This is the preview environment url: ${{ steps.preview-env.outputs.environment-url }}"
Running the tests requires an Humanitec account. Once this is created, the following environment variables need to be configured:
HUMANITEC_ORG
HUMANITEC_TOKEN
HUMANITEC_APP