CI integration
Doc type: How-to · Applies to: POSE ≥ 0.9.0
GitHub Action
The distribution ships a composite action (pose-action/):
jobs:
pose:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: oseiaspereira88/pose/pose-action@main # pin to a release tag or commit SHA in production
with:
mode: strict # or tolerant
lint-specs: "true"
recurrence-check: "true"
history-check: "true"
It runs pose check, pose lint-spec --all, pose recurrence-check and
pose history-check — all offline, requiring the native pose binary and git.
Use POSE from pre-commit.com
Require pre-commit 4.4 or newer and install POSE in the repository first. Pin the POSE repository to an immutable release tag or commit:
repos:
- repo: https://github.com/oseiaspereira88/pose
rev: v0.9.0 # pin to an immutable release tag
hooks: [{id: pose-check}, {id: pose-lint-spec}, {id: pose-history-check}]
Run pre-commit install, then use pre-commit run --all-files in CI. The
hooks call pose from PATH in strict mode and do not
receive staged filenames. Run one manually with
pre-commit run pose-check --hook-stage manual --all-files. Skip a single
hook temporarily with SKIP=pose-history-check git commit ...; CI remains the
delivery authority and should not skip required gates.
Recommended rollout
- Observability first: run the action in
tolerantmode on PRs; publish logs as artifacts; raise no new gates. - Enforce on main: switch to
strict; adjustmoduleOverridesfor modules that aren't ready instead of weakening the default. - Promote checks: move stable
optionalchecks torequiredper domain. - Harden: review the matrix periodically; remove temporary exceptions.
Releases
Tagging v* triggers the release pipeline: POSE gates + Go tests + installer
E2E, then goreleaser publishes the multi-platform pose binary
with SHA-256 checksums, the installer script, and release notes consolidated
from the POSE changelog fragments. See docs/RELEASE.md in the repository for
the full process and ownership of the remaining manual steps.