Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ jobs:
with:
persist-credentials: false
- name: Set up Node.js 24
uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: 24.x
cache: npm
Expand Down Expand Up @@ -75,7 +75,7 @@ jobs:
fetch-depth: 0
persist-credentials: false
- name: Set up Node.js ${{ matrix.node-version }}
uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: ${{ matrix.node-version }}
cache: npm
Expand Down Expand Up @@ -112,7 +112,7 @@ jobs:
with:
persist-credentials: false
- name: Set up Node.js 22
uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: 22.x
cache: npm
Expand All @@ -134,7 +134,7 @@ jobs:
with:
persist-credentials: false
- name: Set up Node.js 24
uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: 24.x
cache: npm
Expand All @@ -154,7 +154,7 @@ jobs:
with:
persist-credentials: false
- name: Set up Node.js 26
uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: 26.x
cache: npm
Expand All @@ -181,7 +181,7 @@ jobs:
with:
persist-credentials: false
- name: Set up Node.js 24
uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: 24.x
cache: npm
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/live-smoke.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ jobs:
with:
persist-credentials: false
- name: Set up Node.js 24
uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: 24.x
cache: npm
Expand Down
7 changes: 4 additions & 3 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ jobs:

echo "release-commit=${release_commit}" >> "$GITHUB_OUTPUT"
- name: Set up Node.js 24
uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: 24.x
cache: npm
Expand Down Expand Up @@ -163,7 +163,7 @@ jobs:
persist-credentials: false
ref: ${{ needs.verify.outputs.release-commit }}
- name: Set up Node.js 24
uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: 24.x
cache: npm
Expand Down Expand Up @@ -204,9 +204,10 @@ jobs:
persist-credentials: false
ref: ${{ needs.verify.outputs.release-commit }}
- name: Set up Node.js 24
uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: 24.x
package-manager-cache: false
registry-url: https://registry.npmjs.org
- name: Use a Trusted Publishing-capable npm CLI
run: npm install --global npm@11.12.1
Expand Down
6 changes: 1 addition & 5 deletions scripts/publish-artifact.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,7 @@ set -euo pipefail

artifact_directory="${ARTIFACT_DIRECTORY:-release-artifacts}"

# actions/setup-node exports this fixed sentinel when registry-url is configured,
# including the npm-documented Trusted Publishing workflow.
setup_node_auth_placeholder="XXXXX-XXXXX-XXXXX-XXXXX"
if [[ -n "${NPM_TOKEN:-}" ]] || \
[[ -n "${NODE_AUTH_TOKEN:-}" && "${NODE_AUTH_TOKEN}" != "$setup_node_auth_placeholder" ]]; then
if [[ -n "${NPM_TOKEN:-}" ]] || [[ -n "${NODE_AUTH_TOKEN:-}" ]]; then
echo "Registry tokens are forbidden; publication must use npm Trusted Publishing." >&2
exit 1
fi
Expand Down
15 changes: 4 additions & 11 deletions tests/publish-artifact.test.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ import { afterEach, describe, expect, it } from "vitest";
const script = fileURLToPath(
new URL("../scripts/publish-artifact.sh", import.meta.url),
);
const setupNodeAuthPlaceholder = "XXXXX-XXXXX-XXXXX-XXXXX";
const temporaryDirectories = [];

afterEach(() => {
Expand Down Expand Up @@ -97,17 +96,11 @@ describe("publish artifact authentication", () => {
);
});

it("allows the actions/setup-node authentication placeholder", () => {
const { log, result } = runPublish({
nodeAuthToken: setupNodeAuthPlaceholder,
});
expect(result.status, result.stderr).toBe(0);
expect(log).toMatch(
/^token-present\npublish .* --provenance --tag next\n$/,
);
});

it.each([
[
"NODE_AUTH_TOKEN setup-node sentinel",
{ nodeAuthToken: "XXXXX-XXXXX-XXXXX-XXXXX" },
],
["NODE_AUTH_TOKEN", { nodeAuthToken: "opaque" }],
["NPM_TOKEN", { npmToken: "opaque" }],
])("rejects the %s registry credential", (_name, options) => {
Expand Down
3 changes: 3 additions & 0 deletions tests/workflow-contract.test.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,9 @@ describe("GitHub Actions workflow contract", () => {
expect(publishWorkflow).not.toContain("NPM_ALPHA1_BOOTSTRAP");
expect(publishWorkflow).not.toContain("recover-verify");
expect(publishWorkflow).not.toContain("recover-publish");
expect(publish).toMatch(
/package-manager-cache: false\n {10}registry-url: https:\/\/registry\.npmjs\.org/,
);
});

it("pins third-party actions and disables checkout credential persistence", () => {
Expand Down