Skip to content

ci: add zizmor workflow audit - #72

Merged
LukasHirt merged 3 commits into
owncloud:mainfrom
oc-tmueller:ci/zizmor
Oct 26, 2026
Merged

LukasHirt merged 3 commits into
owncloud:mainfrom
oc-tmueller:ci/zizmor

Conversation

@oc-tmueller

Copy link
Copy Markdown
Contributor

Adds a zizmor audit of this repository's GitHub Actions workflows and Dependabot config, through the reusable owncloud/reusable-workflows/.github/workflows/zizmor.yml (owncloud/reusable-workflows#104). It's part of an org-wide rollout. Once the repo PRs have landed, Zizmor / Zizmor becomes a required check through owncloud/admin.

  • Behaviour: any finding, at any severity, fails the check, with an annotation on the offending line. The check runs on every PR, on pushes to main and weekly, because online audits such as known-vulnerable actions can start failing without a code change.
  • Permissions: contents: read only, so it also works on fork PRs.
  • Config: owncloud/* references may stay on @main. Everything else must be SHA-pinned.

Existing findings fixed (separate commits)

  • excessive-permissions: CI declares contents: read. The repository default is already read-only, so nothing changes at runtime, but the workflow no longer depends on that setting.
  • artipacked: checkouts do not persist credentials. The only git use after checkout is commitlint reading local history.
  • dependabot-cooldown: npm and gomod updates wait 7 days, as github-actions already does.
  • adhoc-packages, suppressed inline: the existing unpinned npm install --no-save @commitlint/cli @commitlint/config-conventional.

For the maintainers: CI resolves the latest commitlint, 21.x today, while the root package.json and the husky hook use ^19.5.0. npm also resolves the root devDependencies (husky) without a lockfile. Pinning the install to the package.json range, or committing a root lockfile and using a frozen install, would close the gap and let the suppression go. I left it as is because it would change which rules CI enforces. The root package.json also has no Dependabot entry; only /frontend does.

zizmor 1.31.1 reports no findings on this branch.

🤖 Generated with Claude Code

oc-tmueller and others added 3 commits October 26, 2026 14:49
Runs zizmor over this repository's workflows and Dependabot config on
every pull request, on pushes to the default branch and weekly, through
owncloud/reusable-workflows' zizmor.yml. Any finding fails the check.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Thomas Müller <323649642+oc-tmueller@users.noreply.github.com>
- excessive-permissions: CI declares contents: read. The repository
  default is already read-only, so nothing changes at runtime; the
  workflow no longer depends on that setting.
- artipacked: checkouts do not persist credentials. The only git use
  after checkout is commitlint reading local history.
- adhoc-packages: the unpinned commitlint install is suppressed inline.
  It is a lint-only tool for PR commit messages and runs with no
  secrets and a read-only token; the repository root has no lockfile
  to install it from.
- dependabot-cooldown: npm and gomod updates wait 7 days, as
  github-actions already does.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Thomas Müller <323649642+oc-tmueller@users.noreply.github.com>
The unpinned commitlint install does not follow the root package.json:
CI resolves the latest release (21.x today) while package.json and the
husky hook use ^19.5.0, and npm also resolves the root devDependencies
without a lockfile. Pinning would change which rules CI enforces, so the
install stays as it is; the suppression now says it is a pre-existing
gap left to the maintainers instead of claiming it is harmless.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Thomas Müller <323649642+oc-tmueller@users.noreply.github.com>
@oc-tmueller
oc-tmueller requested a review from a team as a code owner October 26, 2026 13:56
@LukasHirt
LukasHirt merged commit 656a89a into owncloud:main Oct 26, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants