mirror of
https://github.com/jdx/mise-action.git
synced 2026-05-14 13:50:33 +00:00
Adds [zizmor](https://github.com/zizmorcore/zizmor) to audit GitHub
Actions workflows for security issues. Runs on push to main and on PRs
that change `.github/workflows/**`. Fails CI on any finding.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
<!-- CURSOR_SUMMARY -->
---
> [!NOTE]
> **Medium Risk**
> Mostly CI/workflow hardening, but it also changes release automation
(`postversion.sh`) and workflow permissions/credentials behavior, which
could break tagging/publishing if misconfigured.
>
> **Overview**
> Adds a new `zizmor` workflow that runs on PRs/pushes touching
`.github/workflows/**` to security-audit workflows.
>
> Hardens existing workflows by defaulting to least-privilege
`permissions`, setting `actions/checkout` to `persist-credentials:
false`, and adjusting related behavior (e.g., `scripts/postversion.sh`
now runs `gh auth setup-git` so `git push` still works; `ci.yml`
disables `mise-action` caching; `test.yml` avoids interpolating
`steps.bad.outcome` inside a shell string by passing it via env).
>
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
d878aee510. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
---------
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
36 lines
1.3 KiB
Bash
Executable file
36 lines
1.3 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
set -euxo pipefail
|
|
|
|
VERSION=$(jq -r .version package.json)
|
|
MAJOR_VERSION=$(echo "$VERSION" | cut -d. -f1)
|
|
|
|
# Configure git to use gh's credential helper. The checkout step uses
|
|
# persist-credentials: false (per zizmor's artipacked audit), so the
|
|
# token isn't written to .git/config and raw `git push` would 403.
|
|
gh auth setup-git
|
|
|
|
# create the version tag (allow it to fail if it already exists)
|
|
git tag "v$VERSION" || echo "Tag v$VERSION already exists locally"
|
|
|
|
# push changes to github
|
|
git push
|
|
# push the current tag to github
|
|
git push origin "v$VERSION" || echo "Tag v$VERSION already exists on remote"
|
|
|
|
# set the major version tag to this release
|
|
git tag "v$MAJOR_VERSION" -f
|
|
# push the major version tag to github (retry with pull if it fails)
|
|
if ! git push origin "v$MAJOR_VERSION" -f; then
|
|
echo "Failed to push v$MAJOR_VERSION tag, pulling and retrying..."
|
|
git fetch origin "refs/tags/v$MAJOR_VERSION:refs/tags/v$MAJOR_VERSION" -f
|
|
git tag "v$MAJOR_VERSION" -f
|
|
git push origin "v$MAJOR_VERSION" -f
|
|
fi
|
|
|
|
# check if release already exists before creating
|
|
if gh release view "v$VERSION" >/dev/null 2>&1; then
|
|
echo "Release v$VERSION already exists, skipping creation"
|
|
else
|
|
# create a release on github
|
|
gh release create "v$VERSION" --generate-notes --verify-tag
|
|
fi
|