diff --git a/.github/workflows/__test-workflow-continuous-integration.yml b/.github/workflows/__test-workflow-continuous-integration.yml
index de2ab7d..0df6eb6 100644
--- a/.github/workflows/__test-workflow-continuous-integration.yml
+++ b/.github/workflows/__test-workflow-continuous-integration.yml
@@ -11,10 +11,7 @@ jobs:
uses: $/.github/workflows/continuous-integration.yml
permissions:
contents: read
- id-token: write
packages: read
- pull-requests: write
- security-events: write
with:
working-directory: tests/continuous-integration
build: ""
@@ -28,10 +25,7 @@ jobs:
uses: $/.github/workflows/continuous-integration.yml
permissions:
contents: read
- id-token: write
packages: read
- pull-requests: write
- security-events: write
with:
checks: false
container: invalid.example.invalid/must-not-be-pulled:latest
@@ -55,10 +49,7 @@ jobs:
uses: $/.github/workflows/continuous-integration.yml
permissions:
contents: read
- id-token: write
packages: read
- pull-requests: write
- security-events: write
with:
working-directory: tests/source-package
build: ""
@@ -354,10 +345,7 @@ jobs:
needs: arrange-with-container
permissions:
contents: read
- id-token: write
packages: read
- pull-requests: write
- security-events: write
with:
container: ${{ fromJSON(needs.arrange-with-container.outputs.built-images).ci-npm.images[0] }}
working-directory: /usr/src/app/
diff --git a/.github/workflows/continuous-integration.md b/.github/workflows/continuous-integration.md
index 1e6efe9..b1d1e19 100644
--- a/.github/workflows/continuous-integration.md
+++ b/.github/workflows/continuous-integration.md
@@ -3,7 +3,7 @@
# GitHub Reusable Workflow: Node.js Continuous Integration
-

+
---
@@ -16,7 +16,6 @@
[](http://choosealicense.com/licenses/mit/)
[](https://img.shields.io/github/stars/hoverkraft-tech/ci-github-nodejs?style=social)
[](https://github.com/hoverkraft-tech/ci-github-nodejs/blob/main/CONTRIBUTING.md)
-
@@ -35,13 +34,20 @@ Workflow to performs continuous integration steps against a Node.js project:
- Build
- Test
+Set permissions on the calling job for the enabled features. Build, lint and
+tests require contents: read and packages: read. CodeQL additionally requires
+security-events: write; Codecov requires id-token: write; GitHub coverage
+comments require pull-requests: write (unless using a separate github-token).
+Disable coverage reporting with test: '{"coverage":null}' for read-only tests.
+Test and CodeQL jobs inherit the caller's permissions; other jobs restrict
+their permissions explicitly. Grant only the scopes your selected checks need.
+The generated permission list below is the read-only baseline. Default checks
+also need security-events: write and pull-requests: write on the calling job.
+
### Permissions
- **`contents`**: `read`
-- **`id-token`**: `write`
- **`packages`**: `read`
-- **`pull-requests`**: `write`
-- **`security-events`**: `write`
@@ -61,10 +67,7 @@ jobs:
uses: hoverkraft-tech/ci-github-nodejs/.github/workflows/continuous-integration.yml@02a04ad25ceaacdf3b7200e45fb7fec07fadf4fa # 2.1.0
permissions:
contents: read
- id-token: write
packages: read
- pull-requests: write
- security-events: write
secrets:
# Secrets to be used during the build step.
# Must be a multi-line env formatted string.
diff --git a/.github/workflows/continuous-integration.yml b/.github/workflows/continuous-integration.yml
index 80e6a09..30197f1 100644
--- a/.github/workflows/continuous-integration.yml
+++ b/.github/workflows/continuous-integration.yml
@@ -4,6 +4,16 @@
# - Linting
# - Build
# - Test
+#
+# Set permissions on the calling job for the enabled features. Build, lint and
+# tests require contents: read and packages: read. CodeQL additionally requires
+# security-events: write; Codecov requires id-token: write; GitHub coverage
+# comments require pull-requests: write (unless using a separate github-token).
+# Disable coverage reporting with test: '{"coverage":null}' for read-only tests.
+# Test and CodeQL jobs inherit the caller's permissions; other jobs restrict
+# their permissions explicitly. Grant only the scopes your selected checks need.
+# The generated permission list below is the read-only baseline. Default checks
+# also need security-events: write and pull-requests: write on the calling job.
name: Node.js Continuous Integration
@@ -227,8 +237,7 @@ on:
description: "ID of the build artifact) uploaded during the build step."
value: ${{ jobs.build.outputs.artifact-id }}
-permissions: {}
-
+# Optional reporting permissions are supplied by the calling job.
jobs:
prepare:
name: 📦 Prepare configuration
@@ -484,8 +493,7 @@ jobs:
code-ql:
name: 🛡️ CodeQL Analysis
if: inputs.checks == true && inputs.code-ql != ''
- permissions:
- security-events: write
+ # Inherit the caller's permission grant when CodeQL is enabled.
runs-on: *ci-runner
steps:
- uses: hoverkraft-tech/ci-github-common/actions/checkout@ce885f8dd6bf7191a79e3eebdf37bca805d40932 # 3.0.0
@@ -643,11 +651,7 @@ jobs:
needs:
- prepare
- build
- permissions:
- contents: read
- id-token: write # Required for Codecov uploads with OIDC authentication
- packages: read
- pull-requests: write
+ # Inherit the caller's reporting permissions; coverage can be disabled.
steps:
- uses: hoverkraft-tech/ci-github-common/actions/checkout@ce885f8dd6bf7191a79e3eebdf37bca805d40932 # 3.0.0
if: inputs.container == ''