giskard-actions
Reusable GitHub Actions automation from Giskard.
| What | Form | Use it from |
|---|---|---|
| Release notes | Composite action | Giskard-AI/giskard-actions/.github/actions/release-notes@<sha> |
| Codex PR review | Reusable workflow | Giskard-AI/giskard-actions/.github/workflows/codex-pr-review.yml@<sha> |
| Python CI | Reusable workflow | Giskard-AI/giskard-actions/.github/workflows/python-ci.yml@<sha> |
| TypeScript CI | Reusable workflow | Giskard-AI/giskard-actions/.github/workflows/ts-ci.yml@<sha> |
| zizmor scan | Reusable and organization-required workflow | Giskard-AI/giskard-actions/.github/workflows/zizmor-scan.yml@<sha> |
Release notes and Codex PR review read their per-repository settings from .github/giskard/ in your repository. See Configuration for the files and their JSON Schemas. The shared CI workflows take inputs only.
Pinning and versioning
The repository has one SemVer version for everything it ships.
- Tags
vX.Y.Zand GitHub Releases are created only by therelease.ymlworkflow on pushes tomain. Conventional commits since the last tag pick the bump:fix,perfor any type with thedepsscope (for examplechore(deps): ...from Renovate, including its weekly lock file maintenance) is a patch,feata minor, and a!header or aBREAKING CHANGE:footer line a major (a minor while the version is0.x). Merged dependency updates therefore always publish a patch release, so runtime and security updates reach consumers. A range with none of these (onlychore,docs,test,ci, … without thedepsscope) creates no release. Maintainers can runrelease.ymlmanually onmainwith aversioninput to release an explicitX.Y.Zinstead (for example the first1.0.0); it must be higher than every existing tag. - There are no floating tags (
v0) and no per-action tags. - The version lives only in the git tags.
versioninpyproject.tomlstays0.0.0and is never bumped. -
Pin the full 40-character commit SHA of a release with a version comment, and use the same SHA for every reference to this repository:
uses: Giskard-AI/giskard-actions/.github/actions/release-notes@<full-commit-sha> # vX.Y.Z - Renovate with the
helpers:pinGitHubActionDigestspreset proposes SHA and comment updates when a new release is published.
Security model
- Trusted code is the pinned unpack. Helper scripts, prompts, output schemas and the Azure model catalog run from the directory GitHub unpacks at your pinned SHA. The reusable workflow references its own composites with the self-repository syntax
$/, so they resolve to that same commit. - Reviewer configuration comes from the default branch HEAD, never the PR head or its base commit. A pull request cannot change or retarget the reviewer map or personas used to review it.
- Least privilege. Every workflow starts from
permissions: {}. Only the Codex prepare job reads GitHub, only reviewer and aggregate jobs hold the Azure key, and a separate job withpull-requests: writeand no Azure credentials posts the review. - Sandboxed model execution. Each Codex pass runs in its own job with sudo dropped, in a read-only bubblewrap sandbox without web search, and its output is checked for the key before upload. See the security model.
- Untrusted input stays data. Only comments, issues and pull requests authored by owners, members and collaborators (or, for release notes, accounts listed by user id in
trusted_github_authors) reach the models, and model output is sanitized (images, raw HTML, invisible characters and untrusted links removed) before it is published.
Report vulnerabilities privately; see SECURITY.md.