Getting Started
Prerequisites
- A GitHub repository in the infinite-automations organization
- Workflows must be referenced by SHA or tag (enforced by linting)
Step 1: Configure Linting
Create .github/linters/.super-linter.env in your repository:
# Enable the linters relevant to your project
VALIDATE_GITHUB_ACTIONS=true
VALIDATE_GITHUB_ACTIONS_ZIZMOR=true
VALIDATE_YAML=true
# For Terraform repos, add:
# VALIDATE_TERRAFORM_TFLINT=true
# VALIDATE_TERRAFORM_FMT=true
# For repos with shell scripts:
# VALIDATE_BASH=true
Step 2: Create Your CI Workflow
Option A: Use Toplevel Workflow (Simple)
Best for repos without custom tests:
name: CI
on:
push:
branches: ["main"]
pull_request:
branches: ["main"]
permissions: {}
jobs:
ci:
uses: infinite-automations/workflows/.github/workflows/ci-action.yml@v1.0.0
with:
dry-run: ${{ github.event_name == 'pull_request' }}
secrets: inherit
Option B: Compose Baselines (Flexible)
Best for repos with custom 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
permissions:
contents: read
steps:
- uses: actions/checkout@v6
- name: Your Tests
run: echo "Run 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
Step 3: Configure Semantic Release
Create .releaserc.json in your repository root:
{
"branches": ["main"],
"plugins": [
["@semantic-release/commit-analyzer", { "preset": "conventionalcommits" }],
[
"@semantic-release/release-notes-generator",
{ "preset": "conventionalcommits" }
],
"@semantic-release/github"
]
}
Step 4: Configure Renovate
Add renovate.json to keep dependencies updated: