Skip to content

chore: update ci/cd configuration#789

Merged
petermasking merged 8 commits into
mainfrom
786-update-ci-config
Jun 10, 2026
Merged

chore: update ci/cd configuration#789
petermasking merged 8 commits into
mainfrom
786-update-ci-config

Conversation

@basmasking

Copy link
Copy Markdown
Member

Fixes #786

Changes proposed in this pull request:

  • releases only from release environment to prevent unauthorized publications
  • updated dependency scanning to match .npmrc config
  • boyscout: fixed class name for ModuleNotFound
  • boyscout: renamed vite.config.ts to vitest.config.ts to indicate vitest specific config
  • boyscout: updated dependencies

@MaskingTechnology/jitar

@basmasking basmasking requested a review from petermasking as a code owner June 10, 2026 07:10
@basmasking basmasking linked an issue Jun 10, 2026 that may be closed by this pull request
@coderabbitai

coderabbitai Bot commented Jun 10, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 0c42bd20-cb5a-4338-adfc-a1cb28da75e0

📥 Commits

Reviewing files that changed from the base of the PR and between 09cceb1 and 3b124d7.

⛔ Files ignored due to path filters (1)
  • package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (1)
  • package.json

Summary by CodeRabbit

  • New Features

    • Added manual trigger for the publish workflow.
  • Chores

    • Bumped TypeScript to 6.0.3 and updated package manager requirement.
    • Simplified Node.js engine requirement to >=22.9.0.
    • Added a 4-day cooldown to Dependabot npm updates.
    • Updated website dev dependencies (cpx2 → 9.0.0, minify → 15.3.1).
    • Standardized test configs to use the v8 coverage provider across packages.
    • Adjusted CI/workflow metadata, schedules and job-level permissions.

Walkthrough

Standardizes Vitest configs across packages (v8 coverage), bumps TypeScript and packageManager, simplifies Node engine, renames a build error class, updates website dev deps, and adjusts Dependabot and GitHub Actions (publish, CodeQL, Node CI) configurations.

Changes

Build Infrastructure and Dependency Modernization

Layer / File(s) Summary
Vitest configuration migration
packages/analysis/vitest.config.ts, packages/build/vitest.config.ts, packages/cli/vitest.config.ts, packages/configuration/vitest.config.ts, packages/execution/vitest.config.ts, packages/health/vitest.config.ts, packages/http/vitest.config.ts, packages/init/vitest.config.ts, packages/jitar/vitest.config.ts, packages/logging/vitest.config.ts, packages/middleware/vitest.config.ts, packages/runtime/vitest.config.ts, packages/scheduling/vitest.config.ts, packages/services/vitest.config.ts, packages/sourcing/vitest.config.ts, packages/validation/vitest.config.ts
All packages now use dedicated vitest.config.ts files (or remove vite.config.ts) with test.coverage.provider = 'v8'; header comments updated where applicable.
Dependabot cooldown and schedule
.github/dependabot.yml
Add monthly GitHub Actions update schedule and npm cooldown: default-days: 4 to throttle Dependabot PR frequency.
Publish workflow adjustments
.github/workflows/publish.yml
Add workflow_dispatch, move permissions to jobs.publish, and set jobs.publish.environment.name to release; publish steps unchanged.
CodeQL and Node CI updates
.github/workflows/codeql.yml, .github/workflows/nodejsci.yml
Pin actions to specific commit SHAs, drop explicit contents: read in CodeQL permissions, and limit Node CI matrix to 22.x and 24.x.
Root package.json updates
package.json
Bump devDependencies.typescript to ^6.0.3, simplify engines.node to >=22.9.0, set packageManager to npm@11.16.0, and add allowScripts entries.
Build package error class rename
packages/build/src/source/segment/errors/ModuleNotFound.ts
Rename default exported error class from ModuleNotLoadedModuleNotFound.
Website build tool dependency updates
website/package.json
Bump cpx2 to ^9.0.0 and minify to ^15.3.1.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

  • MaskingTechnology/jitar#736: Both PRs modify the GitHub publish workflow (.github/workflows/publish.yml), including adding/adjusting workflow_dispatch and permissions for the publish job.
  • MaskingTechnology/jitar#706: Both PRs modify .github/workflows/codeql.yml to adjust GitHub CodeQL workflow action usage/versioning/permissions.
  • MaskingTechnology/jitar#757: Overlaps on root package.json engine constraints and dependency updates.

Suggested reviewers

  • petermasking

Poem

🐰 I hopped through configs, tidy and bright,
Vitest now hums with coverage light,
TypeScript climbed to a shiny six,
Publish gates set, Dependabot ticks,
CI pins in place — a careful bite.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title 'chore: update ci/cd configuration' directly summarizes the main changes in the PR, which focuses on updating CI/CD workflows, Dependabot config, and related configurations.
Description check ✅ Passed The description follows the template structure with all required sections: fixes reference (#786), clear list of proposed changes, and mention of the team (@MaskingTechnology/jitar).
Linked Issues check ✅ Passed The PR addresses issue #786 requirements: restricts releases to 'release' environment [#786], updates dependency scanning config [#786], and includes boyscout improvements (class rename, config rename, dependency updates) [#786].
Out of Scope Changes check ✅ Passed All changes are within scope of issue #786: CI/CD workflow updates, Dependabot configuration, config file migrations, and related housekeeping. No unrelated changes detected.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

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


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.

@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: 6

🤖 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/publish.yml:
- Around line 17-18: The checkout step using actions/checkout@v6 currently
persists GitHub credentials; add persist-credentials: false to that step (the
actions/checkout@v6 usage block) so credentials are not kept for later steps,
preventing credential leakage during publish-related workflow runs.
- Around line 17-18: Replace the tag-based action references so the workflow
pins to exact SHAs: locate the uses entries currently set to actions/checkout@v6
and actions/setup-node@v6 and update them to the corresponding commit SHAs
(e.g., actions/checkout@<sha> and actions/setup-node@<sha>); you may add a
trailing comment noting the original v6 tag for traceability, but ensure the
uses fields contain the full commit SHAs to prevent floating updates.
- Around line 7-9: The workflow currently declares global permissions
(permissions: id-token: write, contents: read); move this block into the single
job definition so permissions are scoped at job level, and add brief comments
near the job-level permissions explaining why id-token: write is required for
OIDC-based npm publishing and why contents: read is needed (e.g., to access repo
metadata/packaging), keeping the permission values unchanged but limiting their
scope to the job that performs the publish.

In `@package.json`:
- Line 41: Update the top-level engines.node constraint in package.json (the
engines.node field) to require Node 22+ to match website devDependency
requirements: change the current "node": "^20.19.0 || ^22.9.0 || >=24" to a
stricter range such as ">=22.0.0" (or ">=22.9.0" if you want to enforce the
specific minor) so tools like cpx2 and minify won’t trigger engine warnings or
break the website build.

In `@packages/build/src/source/segment/errors/ModuleNotFound.ts`:
- Line 2: The repo has an inconsistent rename: packages/build uses
ModuleNotFound (referenced by MemberLocator) while packages/sourcing still
defines/exports and throws ModuleNotLoaded; fix by making the rename repo-wide
or scoping it. Either update packages/sourcing to rename the error class and all
exports/imports/throw sites from ModuleNotLoaded to ModuleNotFound (update the
class name, export names, import statements, and any throw new
ModuleNotLoaded(...) to throw new ModuleNotFound(...)), or revert packages/build
to use ModuleNotLoaded so names match; ensure all references (e.g., the error
class, exports, and MemberLocator imports) are updated consistently across both
packages.

In `@website/package.json`:
- Line 16: The package.json uses the cpx invocation cpx -u
"src/**/*.{svg,png,txt}" dist; instead of treating cpx2@9.0.0 as a breaking
concern, add a lightweight smoke test that runs that exact command and verifies
expected files were copied (e.g., check a couple of known svg/png/txt files
exist under dist) and wire it into CI or as an npm script so we can quickly
confirm that the -u flag and brace glob behave as expected; locate the cpx
invocation in package.json and add an npm script like "cpx-smoke" that executes
the same cpx command and a small existence-check step (shell or Node script) to
assert the copy worked.
🪄 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: ASSERTIVE

Plan: Pro

Run ID: 02e53440-14bc-4f9e-916b-91a98a238b7b

📥 Commits

Reviewing files that changed from the base of the PR and between 373a98d and 220abde.

⛔ Files ignored due to path filters (3)
  • documentation/package-lock.json is excluded by !**/package-lock.json
  • package-lock.json is excluded by !**/package-lock.json
  • website/package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (33)
  • .github/dependabot.yml
  • .github/workflows/publish.yml
  • package.json
  • packages/analysis/vitest.config.ts
  • packages/build/src/source/segment/errors/ModuleNotFound.ts
  • packages/build/vitest.config.ts
  • packages/cli/vitest.config.ts
  • packages/configuration/vitest.config.ts
  • packages/execution/vite.config.ts
  • packages/execution/vitest.config.ts
  • packages/health/vite.config.ts
  • packages/health/vitest.config.ts
  • packages/http/vite.config.ts
  • packages/http/vitest.config.ts
  • packages/init/vite.config.ts
  • packages/init/vitest.config.ts
  • packages/jitar/vite.config.ts
  • packages/jitar/vitest.config.ts
  • packages/logging/vite.config.ts
  • packages/logging/vitest.config.ts
  • packages/middleware/vite.config.ts
  • packages/middleware/vitest.config.ts
  • packages/runtime/vite.config.ts
  • packages/runtime/vitest.config.ts
  • packages/scheduling/vite.config.ts
  • packages/scheduling/vitest.config.ts
  • packages/services/vite.config.ts
  • packages/services/vitest.config.ts
  • packages/sourcing/vite.config.ts
  • packages/sourcing/vitest.config.ts
  • packages/validation/vite.config.ts
  • packages/validation/vitest.config.ts
  • website/package.json
💤 Files with no reviewable changes (12)
  • packages/middleware/vite.config.ts
  • packages/validation/vite.config.ts
  • packages/health/vite.config.ts
  • packages/sourcing/vite.config.ts
  • packages/execution/vite.config.ts
  • packages/runtime/vite.config.ts
  • packages/init/vite.config.ts
  • packages/http/vite.config.ts
  • packages/services/vite.config.ts
  • packages/jitar/vite.config.ts
  • packages/logging/vite.config.ts
  • packages/scheduling/vite.config.ts

Comment thread .github/workflows/publish.yml Outdated
Comment on lines 7 to 9
permissions:
id-token: write
contents: read

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion | 🟠 Major | ⚡ Quick win

Scope permissions to job level and add explanatory comments.

Permissions should be scoped as narrowly as possible. Since there's only one job, move permissions to the job level. Additionally, document why these permissions are required for OIDC-based npm publishing.

🔐 Proposed refactor
-permissions:
-  id-token: write
-  contents: read
-
 jobs:
   publish:
     runs-on: ubuntu-latest
+    # OIDC-based npm publish requires id-token: write for provenance and contents: read for checkout
+    permissions:
+      id-token: write
+      contents: read
     environment:
🧰 Tools
🪛 zizmor (1.25.2)

[error] 8-8: overly broad permissions (excessive-permissions): id-token: write is overly broad at the workflow level

(excessive-permissions)


[warning] 8-8: permissions without explanatory comments (undocumented-permissions): needs an explanatory comment

(undocumented-permissions)

🤖 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 @.github/workflows/publish.yml around lines 7 - 9, The workflow currently
declares global permissions (permissions: id-token: write, contents: read); move
this block into the single job definition so permissions are scoped at job
level, and add brief comments near the job-level permissions explaining why
id-token: write is required for OIDC-based npm publishing and why contents: read
is needed (e.g., to access repo metadata/packaging), keeping the permission
values unchanged but limiting their scope to the job that performs the publish.

Comment thread .github/workflows/publish.yml Outdated
Comment on lines +17 to +18
- name: ⚙️ Checkout Repository
uses: actions/checkout@v6

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 | 🟠 Major | ⚡ Quick win

Add persist-credentials: false to prevent credential leakage.

When publishing packages, the workflow should not persist GitHub credentials in the checkout to minimize the risk of accidental credential exposure in subsequent steps.

🔒 Proposed fix
     - name: ⚙️ Checkout Repository
       uses: actions/checkout@v6
+      with:
+        persist-credentials: false
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
- name: ⚙️ Checkout Repository
uses: actions/checkout@v6
- name: ⚙️ Checkout Repository
uses: actions/checkout@v6
with:
persist-credentials: false
🧰 Tools
🪛 zizmor (1.25.2)

[warning] 17-18: credential persistence through GitHub Actions artifacts (artipacked): does not set persist-credentials: false

(artipacked)


[error] 18-18: unpinned action reference (unpinned-uses): action is not pinned to a hash (required by blanket policy)

(unpinned-uses)

🤖 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 @.github/workflows/publish.yml around lines 17 - 18, The checkout step using
actions/checkout@v6 currently persists GitHub credentials; add
persist-credentials: false to that step (the actions/checkout@v6 usage block) so
credentials are not kept for later steps, preventing credential leakage during
publish-related workflow runs.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Description: Check if there's a documented policy requiring SHA-pinned actions

# Search for security policy or workflow guidelines
fd -t f -e md -e txt . | xargs rg -l "pin.*action|SHA.*hash|commit.*hash" | head -10

Repository: MaskingTechnology/jitar

Length of output: 49


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== publish.yml =="
sed -n '1,120p' .github/workflows/publish.yml

echo
echo "== All uses: actions/ in workflows (unpinned/tags only) =="
rg --no-heading -n --glob '.github/workflows/*.yml' --glob '.github/workflows/*.yaml' \
  'uses:\s*([^/@\s]+/[^/@\s]+)@([^#\s]+)' .github/workflows \
  | head -n 200

echo
echo "== Look for SHA pinning / supply-chain policy docs (more broadly) =="
rg -n --hidden --glob '!**/node_modules/**' \
  'pin actions|SHA-pinned|commit SHA|supply[- ]chain|pin to (commit|SHA)|workflow.*policy|policy.*actions' \
  .github README* LICENSE* SECURITY* *.md 2>/dev/null || true

echo
echo "== Look for pinning policy keywords anywhere in repo =="
rg -n --hidden --glob '!**/node_modules/**' \
  'pin actions|SHA-pinned|commit SHA|pin to commit|pin to SHA' . 2>/dev/null | head -n 50 || true

Repository: MaskingTechnology/jitar

Length of output: 1343


🏁 Script executed:

#!/bin/bash
nl -ba .github/workflows/publish.yml | sed -n '1,80p'

Repository: MaskingTechnology/jitar

Length of output: 108


🏁 Script executed:

#!/bin/bash
awk 'NR>=12 && NR<=30 {printf "%d:%s\n", NR, $0}' .github/workflows/publish.yml

Repository: MaskingTechnology/jitar

Length of output: 551


Pin GitHub Actions to commit SHAs (avoid @v6 tags)

  • .github/workflows/publish.yml uses tag-based actions: actions/checkout@v6 (17-18) and actions/setup-node@v6 (20-21).
  • Update both uses: entries to the exact commit SHAs for the intended v6 releases (e.g., actions/checkout@<sha>, actions/setup-node@<sha>), optionally keeping a comment referencing the upstream tag.
🧰 Tools
🪛 zizmor (1.25.2)

[warning] 17-18: credential persistence through GitHub Actions artifacts (artipacked): does not set persist-credentials: false

(artipacked)


[error] 18-18: unpinned action reference (unpinned-uses): action is not pinned to a hash (required by blanket policy)

(unpinned-uses)

🤖 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 @.github/workflows/publish.yml around lines 17 - 18, Replace the tag-based
action references so the workflow pins to exact SHAs: locate the uses entries
currently set to actions/checkout@v6 and actions/setup-node@v6 and update them
to the corresponding commit SHAs (e.g., actions/checkout@<sha> and
actions/setup-node@<sha>); you may add a trailing comment noting the original v6
tag for traceability, but ensure the uses fields contain the full commit SHAs to
prevent floating updates.

Comment thread package.json Outdated
@@ -1,5 +1,5 @@

export default class ModuleNotLoaded extends Error
export default class ModuleNotFound extends Error

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 | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Description: Search for any remaining references to the old ModuleNotLoaded class name

# Search for imports, type references, or usage of ModuleNotLoaded
rg -n --type=ts -C3 '\bModuleNotLoaded\b'

Repository: MaskingTechnology/jitar

Length of output: 3355


🏁 Script executed:

#!/bin/bash
# Check where ModuleNotFound is defined and used
rg -n --type=ts -C3 '\bModuleNotFound\b' .

# Check whether the build-side ModuleNotFound is imported from the sourcing-side
rg -n --type=ts -C3 "ModuleNotFound" packages/build packages/sourcing

Repository: MaskingTechnology/jitar

Length of output: 4524


🏁 Script executed:

#!/bin/bash
# Search for old name only within packages/build
rg -n --type=ts -C3 '\bModuleNotLoaded\b' packages/build

Repository: MaskingTechnology/jitar

Length of output: 49


🏁 Script executed:

#!/bin/bash
# Search for any remaining references to the old ModuleNotLoaded class name (build package only)
rg -n --type=ts -C3 '\bModuleNotLoaded\b' packages/build

Repository: MaskingTechnology/jitar

Length of output: 49


🏁 Script executed:

rg -n --type=ts -C3 '\bModuleNotLoaded\b' packages/build

Repository: MaskingTechnology/jitar

Length of output: 49


🏁 Script executed:

#!/bin/bash
# Verify no remaining references to ModuleNotLoaded in packages/build
rg -n --type=ts -C3 '\bModuleNotLoaded\b' packages/build

Repository: MaskingTechnology/jitar

Length of output: 49


Rename consistency is correct in packages/build, but not repo-wide.
packages/build has no remaining ModuleNotLoaded references, and MemberLocator now imports/throws ModuleNotFound from packages/build/src/source/segment/errors/ModuleNotFound.ts.
packages/sourcing still defines/exports and throws ModuleNotLoaded (e.g., packages/sourcing/src/modules/errors/ModuleNotLoaded.ts), so either scope this rename check to packages/build or complete the rename in packages/sourcing.

🤖 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 `@packages/build/src/source/segment/errors/ModuleNotFound.ts` at line 2, The
repo has an inconsistent rename: packages/build uses ModuleNotFound (referenced
by MemberLocator) while packages/sourcing still defines/exports and throws
ModuleNotLoaded; fix by making the rename repo-wide or scoping it. Either update
packages/sourcing to rename the error class and all exports/imports/throw sites
from ModuleNotLoaded to ModuleNotFound (update the class name, export names,
import statements, and any throw new ModuleNotLoaded(...) to throw new
ModuleNotFound(...)), or revert packages/build to use ModuleNotLoaded so names
match; ensure all references (e.g., the error class, exports, and MemberLocator
imports) are updated consistently across both packages.

Comment thread website/package.json
},
"devDependencies": {
"cpx2": "^8.0.0",
"cpx2": "^9.0.0",

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 | 🟡 Minor

🧩 Analysis chain

🌐 Web query:

What are the breaking changes in cpx2 version 9.0.0 compared to 8.0.0?

💡 Result:

As of June 10, 2026, version 9.0.0 of the cpx2 package has been published to npm (published on May 19, 2026) [1][2]. However, there is no publicly documented list of breaking changes, release notes, or a changelog explicitly detailing the transitions between version 8.0.0 and 9.0.0 in the primary cpx2 repository or its associated documentation [3][2]. Users upgrading to version 9.0.0 should be aware that cpx2 acts as a maintained fork of the original cpx package, intended to be a drop-in replacement for CLI usage, while requiring users to update their Node.js imports from cpx to cpx2 [3][4]. Given the lack of formal documentation regarding the 9.0.0 release, it is recommended to review the package.json dependency differences or test the package in a development environment to identify any potential breaking behavior [1][2]. Other software products with similar names, such as "Abilis CPX 2000" [5] or various unrelated tools [6][7][8], should not be confused with the cpx2 npm package.

Citations:


🏁 Script executed:

#!/bin/bash
# Description: Test the cpx2 command syntax used in website build scripts

echo "=== Current cpx2 usage in scripts ==="
jq -r '.scripts | to_entries[] | select(.value | contains("cpx")) | "\(.key): \(.value)"' website/package.json

echo -e "\n=== cpx2 version in lockfile ==="
jq -r '.packages["node_modules/cpx2"].version // "not found"' website/package-lock.json

echo -e "\n=== Files matched by cpx glob pattern ==="
fd -e svg -e png -e txt . website/src/ | head -10

Repository: MaskingTechnology/jitar

Length of output: 701


Relax the request: cpx2 v9.0.0 breaking changes aren’t documented; focus on a build/script smoke test.

website/package.json uses cpx -u "src/**/*.{svg,png,txt}" dist and the lockfile resolves cpx2 to 9.0.0, but there’s no publicly documented 8.0.0→9.0.0 breaking-change list specifying CLI flag/glob behavior. Keep the check as a practical verification (ensure -u and the {svg,png,txt} brace glob still work), not as a major compatibility concern based on known breaking changes.

🤖 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 `@website/package.json` at line 16, The package.json uses the cpx invocation
cpx -u "src/**/*.{svg,png,txt}" dist; instead of treating cpx2@9.0.0 as a
breaking concern, add a lightweight smoke test that runs that exact command and
verifies expected files were copied (e.g., check a couple of known svg/png/txt
files exist under dist) and wire it into CI or as an npm script so we can
quickly confirm that the -u flag and brace glob behave as expected; locate the
cpx invocation in package.json and add an npm script like "cpx-smoke" that
executes the same cpx command and a small existence-check step (shell or Node
script) to assert the copy worked.

@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: 2

🤖 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/nodejsci.yml:
- Line 20: The YAMLlint brackets rule is violated for the node-version matrix
entry; update the node-version matrix list (the line containing "node-version: [
22.x, 24.x ]") to remove the extra spaces inside the brackets so it reads
"node-version: [22.x, 24.x]" (or convert it to a block sequence with "- 22.x"
and "- 24.x") to satisfy YAMLlint.

In @.github/workflows/publish.yml:
- Around line 16-17: The workflow uses actions/checkout@... without disabling
credential persistence; update the checkout step that uses actions/checkout to
include a with block setting persist-credentials: false (i.e., add "with:
persist-credentials: false" to the Checkout step) so the GITHUB_TOKEN is not
persisted to subsequent steps/artifacts; ensure every checkout step across
workflows uses this same change.
🪄 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: ASSERTIVE

Plan: Pro

Run ID: 18c5af4a-1288-4f74-bf1b-a49319542fbb

📥 Commits

Reviewing files that changed from the base of the PR and between 220abde and 09cceb1.

⛔ Files ignored due to path filters (1)
  • package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (4)
  • .github/workflows/codeql.yml
  • .github/workflows/nodejsci.yml
  • .github/workflows/publish.yml
  • package.json

strategy:
matrix:
node-version: [ 20.x, 22.x, 24.x ]
node-version: [ 22.x, 24.x ]

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 | 🟡 Minor | ⚡ Quick win

Fix YAMLlint bracket spacing in the matrix list.

This line violates YAMLlint’s brackets rule.

🧹 Proposed fix
-        node-version: [ 22.x, 24.x ]
+        node-version: [22.x, 24.x]
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
node-version: [ 22.x, 24.x ]
node-version: [22.x, 24.x]
🧰 Tools
🪛 YAMLlint (1.37.1)

[error] 20-20: too many spaces inside brackets

(brackets)


[error] 20-20: too many spaces inside brackets

(brackets)

🤖 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 @.github/workflows/nodejsci.yml at line 20, The YAMLlint brackets rule is
violated for the node-version matrix entry; update the node-version matrix list
(the line containing "node-version: [ 22.x, 24.x ]") to remove the extra spaces
inside the brackets so it reads "node-version: [22.x, 24.x]" (or convert it to a
block sequence with "- 22.x" and "- 24.x") to satisfy YAMLlint.

Source: Linters/SAST tools

Comment on lines +16 to +17
- name: ⚙️ Checkout Repository
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3

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 | 🟠 Major | ⚡ Quick win

Shared root cause: actions/checkout credential persistence is enabled in multiple workflows.

Both workflows should set with.persist-credentials: false on checkout to reduce token exposure across later steps/artifacts.

🧰 Tools
🪛 zizmor (1.25.2)

[warning] 16-17: credential persistence through GitHub Actions artifacts (artipacked): does not set persist-credentials: false

(artipacked)

🤖 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 @.github/workflows/publish.yml around lines 16 - 17, The workflow uses
actions/checkout@... without disabling credential persistence; update the
checkout step that uses actions/checkout to include a with block setting
persist-credentials: false (i.e., add "with: persist-credentials: false" to the
Checkout step) so the GITHUB_TOKEN is not persisted to subsequent
steps/artifacts; ensure every checkout step across workflows uses this same
change.

Source: Linters/SAST tools

@sonarqubecloud

Copy link
Copy Markdown

@petermasking petermasking merged commit b53cb79 into main Jun 10, 2026
24 checks passed
@petermasking petermasking deleted the 786-update-ci-config branch June 10, 2026 10:34
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.

Update CI config

2 participants