Reusable CI/CD
A collection of reusable GitHub Actions workflows and composite actions for common CI/CD tasks.
Available Workflows
- Actionlint — Lint GitHub Actions workflows on PRs with reviewdog integration.
- Golang CLI Build and Test — Run tests, linting, and build verification for Go CLI applications on pull requests.
- Golang CLI Release — Automate semantic versioning and GoReleaser-based releases for Go CLI applications.
- MkDocs Deploy — Build and deploy MkDocs sites to GitHub Pages.
- MkDocs + Helm Pages — Build MkDocs and publish into an existing Helm Pages branch.
- Simple Semantic Release — Automate versioning and changelog generation with semantic-release.
- Docker Build and Push — Build multi-platform Docker images and push to GHCR (e.g. after a release).
- Terraform Docs — Generate Terraform module docs and commit back to the PR.
- Helm Lint — Lint Helm charts with chart-testing (
ct lint) on pull requests. - Helm Docs — Generate chart documentation with helm-docs and optionally commit back to the PR.
- Helm Releaser — Automate packaging and publishing of Helm charts to GitHub Pages.
- ArgoCD Diff Preview — Generate ArgoCD manifest diffs on pull requests and post them as PR comments.
Composite actions
- Helm Repo Init — Bootstrap a chart repository from the helm chart template.
- ArgoCD Diff Preview — Building blocks for the Argo CD diff workflow (Helm prep + Docker run + PR comments).
GitHub App requirements
Most workflows that push commits, tags, or releases use a GitHub App token instead of the default GITHUB_TOKEN. They expect two secrets to be configured at the repository or organization level:
GITHUB_APP_IDGITHUB_APP_PRIVATE_KEY
How to create a GitHub App for these workflows
- In GitHub, go to Settings → Developer settings → GitHub Apps → New GitHub App.
- Choose a name and, under Repository permissions, grant at least:
- Contents: Read and write
- Pull requests: Read and write (for workflows that update PRs)
- Issues: Read and write (if you want releases or automation to touch issues)
- Set Where can this GitHub App be installed? to your user or organization, then create the app.
- On the app page:
- Copy the App ID and store it as the
GITHUB_APP_IDsecret. - Generate a private key and store its PEM contents as the
GITHUB_APP_PRIVATE_KEYsecret. - Install the app on the repositories that will call these reusable workflows (from the Install App section of the GitHub App settings).