Skip to content

infinite-automations/workflows

Repository files navigation

Reusable Workflows

Release

Centralized, reusable GitHub Actions workflows for the infinite-automations organization.

📖 Documentation

Purpose

  1. Centralize workflow maintenance — action updates, tests, and releases in one place
  2. Standardize CI/CD patterns across all repositories

Available Workflows

Baseline (Composable Building Blocks)

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

Toplevel (Convenience Compositions)

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.

Quick Start

Compose Baselines (Recommended for repos with tests)

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: write

Use Toplevel Workflow (Simple repos)

name: 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: inherit

Configuration

Linting

Create .github/linters/.super-linter.env to configure Super-Linter:

VALIDATE_GITHUB_ACTIONS=true
VALIDATE_GITHUB_ACTIONS_ZIZMOR=true
VALIDATE_YAML=true

The same file is used for local linting via Docker.

Local Linting

./scripts/lint-local.sh

Or 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

Design Principles

  • 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: true for PR validation
  • Consistent — inputs use kebab-case, secrets use UPPER_SNAKE_CASE
  • Observable — every workflow writes a standardized $GITHUB_STEP_SUMMARY
  • Secure — all actions pinned to SHA, minimal permissions

Documentation

Full documentation is available at the GitHub Pages site.

License

MIT

About

reusable workflows

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors