Centralized, reusable GitHub Actions workflows for the infinite-automations organization.
- Centralize workflow maintenance — action updates, tests, and releases in one place
- Standardize CI/CD patterns across all repositories
| Workflow | Description |
|---|---|
lint.yml |
Linting via Super-Linter with file-based config |
docs-action.yml |
Documentation for GitHub Actions/Workflows via action-docs |
docs-terraform.yml |
Documentation for Terraform modules via terraform-docs |
docs-mkdocs.yml |
MkDocs site build + GitHub Pages deployment |
release.yml |
Semantic Release with configurable plugins |
| Workflow | Composes | Use Case |
|---|---|---|
ci-action.yml |
lint → docs → release | GitHub Action repos without custom tests |
ci-terraform-module.yml |
lint → docs → release | Terraform module repos without custom tests |
Note: Toplevel workflows do not include test jobs. GitHub Actions requires
uses:to be a static string, so custom test workflows cannot be dynamically referenced. Run your tests before or alongside the toplevel workflow.
name: CI
on:
push:
branches: ["main"]
pull_request:
branches: ["main"]
permissions: {}
jobs:
lint:
uses: infinite-automations/workflows/.github/workflows/lint.yml@v1.0.0
permissions:
contents: read
packages: read
statuses: write
test:
needs: [lint]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- run: echo "your tests here"
release:
needs: [lint, test]
uses: infinite-automations/workflows/.github/workflows/release.yml@v1.0.0
with:
dry-run: ${{ github.event_name == 'pull_request' }}
secrets: inherit
permissions:
contents: write
issues: write
pull-requests: writename: CI
on:
push:
branches: ["main"]
pull_request:
branches: ["main"]
jobs:
ci:
uses: infinite-automations/workflows/.github/workflows/ci-action.yml@v1.0.0
with:
dry-run: ${{ github.event_name == 'pull_request' }}
secrets: inheritCreate .github/linters/.super-linter.env to configure Super-Linter:
VALIDATE_GITHUB_ACTIONS=true
VALIDATE_GITHUB_ACTIONS_ZIZMOR=true
VALIDATE_YAML=trueThe same file is used for local linting via Docker.
./scripts/lint-local.shOr directly with Docker:
docker run --rm \
-e RUN_LOCAL=true \
-e DEFAULT_BRANCH=main \
--env-file .github/linters/.super-linter.env \
-v "$(pwd):/tmp/lint" \
ghcr.io/super-linter/super-linter:v8.6.0- Composable — baseline workflows are independent building blocks
- Configurable — no hardcoded parameters; all via inputs, secrets, and env files
- Dry-run — every workflow supports
dry-run: truefor PR validation - Consistent — inputs use
kebab-case, secrets useUPPER_SNAKE_CASE - Observable — every workflow writes a standardized
$GITHUB_STEP_SUMMARY - Secure — all actions pinned to SHA, minimal permissions
Full documentation is available at the GitHub Pages site.