Cleanup Transient

Automate cleanup of transient deployments. Remove Git tags, branches, Docker images, Helm charts, Kubernetes resources, and GitHub deployments with ease.

Complete Cleanup Solution

One action to clean up all your transient deployment artifacts

🏷️

Git Tags

Automatically find and delete Git tags matching your environment patterns.

🐳

Docker Images

Remove Docker images from GitHub Container Registry by version tag.

Helm Charts

Clean up Helm chart versions from GHCR with charts/ prefix support.

🌍

Deployments

Delete GitHub deployments, environments, and branches.

Quick Start

Add this to your workflow to clean up PR deployments

name: Cleanup PR Environment
on:
  pull_request:
    types: [closed]

jobs:
  cleanup:
    runs-on: ubuntu-latest
    permissions:
      contents: write
      packages: write
      deployments: write
    steps:
      - name: Checkout
        uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Cleanup PR artifacts
        uses: starburst997/cleanup-transient@v1
        with:
          pattern: pr-${{ github.event.pull_request.number }}
          token: ${{ secrets.GITHUB_TOKEN }}

Reference

Complete action inputs and outputs documentation

📥 Required Inputs

patternREQUIRED
Pattern suffix to clean (e.g., "rc", "pr-123")
Example: rc, pr-123, pr-456

⚙️ General Configuration

versions
Space-separated list of versions to clean. If not specified, versions are auto-detected from git tags matching the pattern.
Example: "1.0.0-rc.1 1.0.0-rc.2" (optional)
token
GitHub token with permissions to delete packages and environments
Default: ${{ github.token }}
registry
Container registry URL
Default: ghcr.io
username
Username or organization (defaults to repository owner)
Default: ${{ github.repository_owner }}
repo-owner
Repository owner
Default: ${{ github.repository_owner }}
repo-name
Repository name
Default: ${{ github.event.repository.name }}

🐳 Docker & Helm (GHCR)

docker-image-name
Custom Docker image name
Default: repo name in lowercase
helm-chart-name
Custom Helm chart name
Default: charts/{repo-name} in lowercase
chart-prefix
Prefix for Helm chart names (combined with repo name if helm-chart-name is not provided)
Default: charts

⎈ Kubernetes Cleanup (Optional)

kube-config
Kubernetes config file content for kubectl access. If not provided, K8s cleanup is skipped.
Default: none (K8s cleanup disabled)
namespace
Kubernetes namespace for Helm release (used when kube-config is provided)
Default: preview
helm
Helm release name to uninstall from Kubernetes cluster
Default: none

🌍 Deployment Configuration

environment-name
Custom GitHub deployment name
Default: 'staging' for rc, pattern for pr-XXX
bot-token
Alternative token for Git operation
Default: uses token input

🌿 Automatic Features

Branch Deletion
When triggered from a pull_request event, automatically deletes the PR's branch after cleanup. No configuration needed.
Automatic for pull_request events

📤 Outputs

versions
Space-separated list of versions that were cleaned up
Example: 1.0.0-rc.1 1.0.0-rc.2
versions-markdown
Markdown-formatted bullet list of versions for GitHub comments
Example: - 1.0.0-rc.1\n- 1.0.0-rc.2