CI Pipeline Workflow¶
The ci.yml workflow provides a complete CI pipeline by orchestrating all other workflows.
Usage¶
jobs:
ci:
uses: go-gamma/actions/.github/workflows/ci.yml@v1
with:
go-version: '1.24'
secrets:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
Execution Flow¶
flowchart TB
subgraph "Phase 1: Quality Checks (Parallel)"
direction LR
T["🧪 Test<br/>go test -race<br/>coverage upload"]
L["🔍 Lint<br/>golangci-lint<br/>50+ linters"]
S["🔒 Security<br/>gosec<br/>govulncheck"]
end
subgraph "Phase 2: Build Verification"
B["🔨 Build Matrix<br/>Linux | macOS | Windows"]
end
T --> B
L --> B
S --> B Inputs¶
| Input | Type | Default | Description |
|---|---|---|---|
go-version | string | '1.24' | Go version |
go-version-file | string | '' | Path to go.mod |
working-directory | string | '.' | Code directory |
skip-lint | boolean | false | Skip linting |
skip-security | boolean | false | Skip security scan |
skip-build | boolean | false | Skip build matrix |
platforms | string | 'ubuntu-latest,...' | Build platforms |
race-detection | boolean | true | Enable race detector |
upload-coverage | boolean | true | Upload to Codecov |
upload-sarif | boolean | true | Upload to Code Scanning |
fail-on-vulns | boolean | true | Fail on vulnerabilities |
only-new-issues | boolean | false | New lint issues only |
Secrets¶
| Secret | Required | Description |
|---|---|---|
CODECOV_TOKEN | No | Codecov upload token |
Permissions¶
For SARIF upload to GitHub Code Scanning, you must pass permissions to the workflow:
permissions:
contents: read
security-events: write # Required for SARIF upload
jobs:
ci:
uses: go-gamma/actions/.github/workflows/ci.yml@v1
permissions:
contents: read
security-events: write
Optional SARIF Upload
If you don't provide security-events: write, security scanning still runs but SARIF upload is skipped gracefully.
Examples¶
Full Configuration¶
name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
permissions:
contents: read
security-events: write
jobs:
ci:
uses: go-gamma/actions/.github/workflows/ci.yml@v1
permissions:
contents: read
security-events: write
with:
go-version: '1.24'
race-detection: true
upload-coverage: true
upload-sarif: true
fail-on-vulns: true
only-new-issues: ${{ github.event_name == 'pull_request' }}
secrets:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
Library Only (No Build)¶
jobs:
ci:
uses: go-gamma/actions/.github/workflows/ci.yml@v1
with:
go-version: '1.24'
skip-build: true # No binary to build
Fast Feedback¶
jobs:
ci:
uses: go-gamma/actions/.github/workflows/ci.yml@v1
with:
go-version: '1.24'
skip-security: true # Faster for feature branches
platforms: 'ubuntu-latest' # Single platform
Job Dependencies¶
The build phase waits for all quality checks:
- If test fails → build is skipped
- If lint fails → build is skipped
- If security fails → build is skipped
When phases are skipped, dependencies adjust automatically.