Skip to content
You're viewing an older version of this GitHub Action. Do you want to see the latest version instead?
play

GitHub Action

PR Preview Deploys

v0.0.4

PR Preview Deploys

play

PR Preview Deploys

Easy PR Preview Deploy UX

Installation

Copy and paste the following snippet into your .yml file.

              

- name: PR Preview Deploys

uses: urcomputeringpal/[email protected]

Learn more about this action in urcomputeringpal/pr-preview-deploy-ux-action

Choose a version

pr-preview-deploy-ux-action

GitHub Actions allows users to configure an environment for a job, but it's not yet possible to configure that environment as transient. This GitHub Action creates and updates transient Deployment objects using the GitHub API to provide a friendly user-experience for interacting with PR preview deployments that are conventionally destroyed when a PR is merged or closed.

Features

  • Each open PR contains a link to its active deployments in the timeline.
  • No additional notifications or emails are generated.
  • PRs and the Deployments tab show the history of all deployments. Following PR close, deployment links are no longer available. Deployments are reflected as 'Destroyed' in the UI.
  • Environments are cleaned up on PR merge or close, hiding stale preview deployments from the Environment section in the Repository sidebar and the Settings tab.

Requirements

  • GitHub App with repo Administration permissions

Example

Active PR

image

Merged PR

image

Usage

Create Preview Deploy when PRs are created or updated

name: PR Preview
on:
  pull_request:

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: urcomputeringpal/pr-preview-deploy-ux-action@v0
        name: Start preview deploy
        id: start
        with:
          step: start
          token: ${{ secrets.GITHUB_TOKEN }}
          head_ref: ${{ github.head_ref }}
          env: preview-${{ github.event.pull_request.number }}
          env_url: https://pr-preview-${{ github.event.pull_request.number }}.example.com
          
      - run: echo perform your preview deploy logic here

      - uses: urcomputeringpal/pr-preview-deploy-ux-action@v0
        name: Finish preview deploy
        if: always()
        with:
          step: finish
          status: ${{ job.status }}
          token: ${{ secrets.GITHUB_TOKEN }}
          head_ref: ${{ github.head_ref }}
          env: preview-${{ github.event.pull_request.number }}

          deployment_id: ${{ steps.start.outputs.deployment_id }}
          env_url: https://pr-preview-${{ github.event.pull_request.number }}.example.com

Delete Preview environments when PRs are merged or closed

  • Create a new app with the following permissions:
    • Repository Deployments: Read and write
    • Repository Administration: Read and write
  • Create secrets for the App ID and the App Private key.
name: PR Preview Cleanup
on:
 pull_request:
   types: [ closed ]
 
jobs:
 cleanup:
   runs-on: ubuntu-latest
   steps:
     - run: echo perform your cleanup logic here

     - name: Cleanup Preview deploy
       uses: urcomputeringpal/pr-preview-deploy-ux-action@v0
       with:
         step: cleanup
         env: preview-${{ github.event.pull_request.number }}
         app_id: ${{ secrets.APP_ID }}
         private_key: ${{ secrets.APP_PEM }}            

See .github/workflows for more examples.