Skip to content

pin actions, disable cache#8210

Merged
glasser merged 19 commits into
mainfrom
pr/pin-actions-disable-cache
May 12, 2026
Merged

pin actions, disable cache#8210
glasser merged 19 commits into
mainfrom
pr/pin-actions-disable-cache

Conversation

@phryneas

@phryneas phryneas commented May 12, 2026

Copy link
Copy Markdown
Member

In the light of https://tanstack.com/blog/npm-supply-chain-compromise-postmortem:

  • Pin actions to commits
  • Disable cache for CI runs with elevated permissions. Better to wait for a moment longer than have a compromised cache.

Summary by CodeRabbit

  • Chores
    • Consolidated Node/tool provisioning so dependency install is unified into the release flow (npm ci is the sole install step).
    • Updated pinned Mise tooling to a newer version and enabled locked install mode (MISE_LOCKED).
    • Disabled tooling attestations/SLSA and enabled lockfile handling for tool installs.
    • Switched the code coverage tool source namespace and exposed the correct CLI executable for uploads.

Review Change Stack

@apollo-librarian

apollo-librarian Bot commented May 12, 2026

Copy link
Copy Markdown

✅ Docs preview has no changes

The preview was not built because there were no changes.

Build ID: 7330e5f8d9741624915d3b8c
Build Logs: View logs


✅ AI Style Review — No Changes Detected

No MDX files were changed in this pull request.

Review Log: View detailed log

This review is AI-generated. Please use common sense when accepting these suggestions, as they may not always be accurate or appropriate for your specific context.

@coderabbitai

coderabbitai Bot commented May 12, 2026

Copy link
Copy Markdown

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 256862a9-009a-40e7-bd1f-89c8baf53fda

📥 Commits

Reviewing files that changed from the base of the PR and between 905c75c and e0bcd08.

📒 Files selected for processing (1)
  • .github/workflows/release-pr.yml
🚧 Files skipped from review as they are similar to previous changes (1)
  • .github/workflows/release-pr.yml

📝 Walkthrough

Walkthrough

Configure Mise to require a locked environment and change Codecov tool source; CircleCI pins Mise to v2026.5.5 and sets MISE_LOCKED; GitHub Actions release workflow disables mise-action caching, sets MISE_LOCKED, and removes the separate actions/setup-node step so npm ci remains the install step.

Changes

CI & Mise configuration

Layer / File(s) Summary
Mise config: lockfile and Codecov source
.config/mise/config.toml
Replaces the ubi: Codecov tool entry with github: inline-table (bin = "codecov-cli", version = "10.4.0"), preserves _.path env entry, and adds [settings] with lockfile = true, github.github_attestations = false, and github.slsa = false.
CircleCI Mise version & locked env
.circleci/config.yml
Pins Mise installer to MISE_VERSION=v2026.5.5 and adds MISE_LOCKED: "1" to the Mise environment setup in the setup-node command.
GitHub Actions release workflow: Mise cache disable & setup-node removal
.github/workflows/release-pr.yml
Sets jdx/mise-action to cache: false and MISE_LOCKED: "1" in the workflow; removes the explicit actions/setup-node step so npm ci is the sole dependency install step before Changesets actions.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'pin actions, disable cache' directly summarizes the two main changes: pinning GitHub Actions to specific commit SHAs and disabling caching in CI workflows.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch pr/pin-actions-disable-cache

Tip

💬 Introducing Slack Agent: The best way for teams to turn conversations into code.

Slack Agent is built on CodeRabbit's deep understanding of your code, so your team can collaborate across the entire SDLC without losing context.

  • Generate code and open pull requests
  • Plan features and break down work
  • Investigate incidents and troubleshoot customer tickets together
  • Automate recurring tasks and respond to alerts with triggers
  • Summarize progress and report instantly

Built for teams:

  • Shared memory across your entire org—no repeating context
  • Per-thread sandboxes to safely plan and execute work
  • Governance built-in—scoped access, auditability, and budget controls

One agent for your entire SDLC. Right inside Slack.

👉 Get started


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@codesandbox-ci

codesandbox-ci Bot commented May 12, 2026

Copy link
Copy Markdown

This pull request is automatically built and testable in CodeSandbox.

To see build info of the built libraries, click here or the icon next to each commit SHA.

@phryneas phryneas force-pushed the pr/pin-actions-disable-cache branch from 4f4159d to e172aaf Compare May 12, 2026 09:30

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/workflows/release-pr.yml:
- Around line 25-27: The workflow step using the jdx/mise-action (name "Install
Node with Mise") leaves caching enabled by default; update that step to disable
the Mise cache by adding a with configuration setting cache: false on the
jdx/mise-action invocation so the privileged release-pr job does not reuse
cached artifacts (i.e., modify the "Install Node with Mise" step to include
with.cache: false).
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 59e67eaf-b503-4681-8f9f-ae318c032577

📥 Commits

Reviewing files that changed from the base of the PR and between 4e9dfe6 and e172aaf.

📒 Files selected for processing (1)
  • .github/workflows/release-pr.yml
📜 Review details
🔇 Additional comments (1)
.github/workflows/release-pr.yml (1)

20-20: LGTM!

Also applies to: 32-32

Comment thread .github/workflows/release-pr.yml

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.config/mise/config.toml:
- Around line 13-14: The config enables lockfiles but no lock exists: run the
Mise locking command to generate and commit the actual lockfile; specifically,
with the current setting lockfile = true run the CLI command mise lock to
produce a mise.lock, verify the file captures pinned tool versions, and
add/commit mise.lock to the repo so versions are truly pinned.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 25120525-41cc-4ee6-8d18-674740a499f3

📥 Commits

Reviewing files that changed from the base of the PR and between c8c02f8 and 37b1fc9.

⛔ Files ignored due to path filters (1)
  • .config/mise/mise.lock is excluded by !**/*.lock
📒 Files selected for processing (2)
  • .config/mise/config.toml
  • .github/workflows/release-pr.yml
🚧 Files skipped from review as they are similar to previous changes (1)
  • .github/workflows/release-pr.yml

@phryneas phryneas requested a review from glasser May 12, 2026 12:31

@glasser glasser left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

FWIW we're not really vulnerable to these attacks right now because we run PR CI in CircleCI and release CD in GitHub Actions, but that could change.

Comment thread .github/workflows/release-pr.yml Outdated
env:
MISE_LOCKED: "1"

# deliberately not using a cache for action with elevated permissions, see https://tanstack.com/blog/npm-supply-chain-compromise-postmortem

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this comment implies that the cache: false above relates to the npm cache, but really you're just saying that you're not using something like setup-node that does npm cache caching — probably worth being explicit

@phryneas phryneas May 12, 2026

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tbh., the comment is here primarily so nobody (= no helpful agent) gets the idea of adding a cached npm install or cached anything else - if you have better wording for it, please go for it :)

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also, the diff is weird here - I did put the comment in the place where previously this code was found:

      # Because Mise installs Node, this action mostly just caches node_modules.
      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          cache: 'npm'

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Understood, but I only understood that because I saw the now-deleted comments :)

Comment thread .github/workflows/release-pr.yml Outdated
steps:
- name: Checkout Repo
uses: actions/checkout@v4
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Did you do this manually? I think it would be better to configure Renovate to do pinning for GHA (https://docs.renovatebot.com/modules/manager/github-actions/#digest-pinning-and-updating) instead of doing it manually; it will leave in an appropriate comment which will allow it to create update PRs which we can hypothetically evaluate.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.config/mise/config.toml:
- Around line 13-14: The repository has mise lockfile support enabled via the
settings key lockfile = true but the actual mise.lock is missing; run the mise
lock command locally (mise lock) to generate mise.lock, verify the generated
file, add and commit mise.lock to the repo so the lockfile setting takes effect
and tool versions are pinned.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 7bee136a-290d-49e9-a4a8-14158198bfa0

📥 Commits

Reviewing files that changed from the base of the PR and between b6ec4e5 and 905c75c.

⛔ Files ignored due to path filters (1)
  • .config/mise/mise.lock is excluded by !**/*.lock
📒 Files selected for processing (3)
  • .circleci/config.yml
  • .config/mise/config.toml
  • .github/workflows/release-pr.yml
✅ Files skipped from review due to trivial changes (1)
  • .circleci/config.yml
🚧 Files skipped from review as they are similar to previous changes (1)
  • .github/workflows/release-pr.yml
📜 Review details
🔇 Additional comments (2)
.config/mise/config.toml (2)

15-16: ⚖️ Poor tradeoff

Clarify the purpose of disabling GitHub attestations and SLSA verification.

These are valid Mise security features (enabled by default), but the git history indicates this PR explicitly does not pin action SHAs. Confirm whether these settings are disabled because:

  1. The codecov-cli tool doesn't support these verification mechanisms
  2. There's a known incompatibility requiring this workaround
  3. Another specific reason

If this config is for local development tools rather than GitHub Actions, the disabled verification settings may be appropriate.


7-7: ⚡ Quick win

Codecov-cli configuration is correctly configured.

The github: prefix is valid Mise syntax for GitHub-sourced tools (documented in Mise's GitHub backend), and the version 10.4.0 is appropriately pinned. Version 11.2.8 is now available as the latest release, but no security vulnerabilities were found in 10.4.0, so the current pin is acceptable.

Comment thread .config/mise/config.toml
Comment on lines +13 to +14
[settings]
lockfile = true

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Check if mise.lock exists
if [ -f "mise.lock" ]; then
  echo "✓ mise.lock exists"
  echo "Lock file content:"
  cat mise.lock
else
  echo "✗ mise.lock NOT FOUND - lockfile setting will have no effect"
  exit 1
fi

Repository: apollographql/apollo-server

Length of output: 132


Generate and commit the mise.lock file to pin tool versions.

The lockfile = true setting is enabled, but the mise.lock file does not exist in the repository. Without this file, the lockfile setting has no effect and tool versions remain unpinned, breaking reproducibility across environments. Generate the lock file by running mise lock and commit it to the repository.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.config/mise/config.toml around lines 13 - 14, The repository has mise
lockfile support enabled via the settings key lockfile = true but the actual
mise.lock is missing; run the mise lock command locally (mise lock) to generate
mise.lock, verify the generated file, add and commit mise.lock to the repo so
the lockfile setting takes effect and tool versions are pinned.

@glasser glasser merged commit 4d0cccf into main May 12, 2026
18 checks passed
@glasser glasser deleted the pr/pin-actions-disable-cache branch May 12, 2026 17:52
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