Skip to main content

Setup & Prerequisites

Before you can configure a hook, your repository needs to meet a couple of prerequisites.

Enterprise license

info

Hooks are an Enterprise-only feature.

Plan encryption key

When any hooks are configured, the PIPELINES_PLAN_ENCRYPTION_KEY secret must be set.

Pipelines adds the OpenTofu/Terraform plan output to the job's artifacts so that after-hooks can read it. Because plan output can contain sensitive information, Pipelines encrypts it before storing it as an artifact, and the PIPELINES_PLAN_ENCRYPTION_KEY secret is the key used to do so.

If a hook is declared and this secret is missing, Pipelines fails its preflight checks before running.

Generating a key

The secret can be any non-empty value. Use a long, randomly generated value rather than a memorable passphrase. For example:

openssl rand -base64 32

Store the generated value somewhere safe (such as a password manager) and treat it like any other sensitive credential. If you rotate the key, plan artifacts encrypted with the previous value can no longer be decrypted.

Configuring the secret

Make the generated value available to your Pipelines workflows as a secret named PIPELINES_PLAN_ENCRYPTION_KEY.

Add a repository or organization secret named PIPELINES_PLAN_ENCRYPTION_KEY under Settings > Secrets and variables > Actions. See GitHub's documentation on encrypted secrets for details.

Then pass it through to the Pipelines workflow in your .github/workflows/pipelines.yml by adding it to the secrets block:

jobs:
GruntworkPipelines:
uses: gruntwork-io/pipelines-workflows/.github/workflows/pipelines.yml@v4
secrets:
# ... other secrets ...
PIPELINES_PLAN_ENCRYPTION_KEY: ${{ secrets.PIPELINES_PLAN_ENCRYPTION_KEY }}

Next steps