A good pipeline does three things: validate every pull request, show the plan so reviewers see what would change, and deploy when changes land.

Secrets and variables

In your repository settings: Use a separate key per environment, scoped as narrowly as you can.

Pull requests: validate and plan

validate needs no secrets. plan reads the environment, so it needs the key. Skip that step for pull requests from forks, which can’t see secrets.

Merge: deploy

GitHub environments let you require a reviewer before the production job runs, which is the right place for a human approval.

Good practice

  • Always run pawabase validate first.
  • Never use --mode override in CI unless code is truly the only source of truth.
  • Take a backup before production deploys that change tables.
  • Pin the package version (pip install pawabase-iac==X.Y.Z) so a release can’t surprise a deploy.
  • Keep .env out of git.

Plan and deploy

What deploy does.

Secrets and env

Keys and secrets.