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