feat(changed-paths): add shared_paths input to trigger full matrix on root-level file changes#155
feat(changed-paths): add shared_paths input to trigger full matrix on root-level file changes#155
Conversation
… root-level file changes
WalkthroughRenames the changed-paths action inputs from snake_case to kebab-case and adds a new Changes
Estimated code review effort🎯 4 (Complex) | ⏱️ ~45 minutes 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
📝 Coding Plan
Comment |
🔍 Lint Analysis
|
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@src/config/changed-paths/action.yml`:
- Around line 190-196: When DIRS_FROM_SHARED is true and FILTER_PATHS starts
with '[', the JSON parsing using "jq -er '.[]'" for FILTER_PATHS must check jq's
exit status like other parsing blocks; update the branch that sets DIRS to run
the jq command, capture its exit code, and on non-zero print an error
(consistent with existing logging) and exit with a non-zero status so malformed
JSON in FILTER_PATHS fails clearly (refer to the DIRS_FROM_SHARED, FILTER_PATHS,
DIRS variables and the "jq -er '.[]'" invocation).
In `@src/config/changed-paths/README.md`:
- Line 14: Update the README inputs table entry for filter_paths so it matches
action.yml: mention it accepts either a newline-separated list of path prefixes
or a JSON array of path prefixes (both formats supported), and keep the default
value `''`; reference the input name filter_paths and action.yml to locate the
source of truth and ensure the table text mirrors the exact wording used in
action.yml.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yml
Review profile: ASSERTIVE
Plan: Pro
Run ID: 115e3ae0-d6dd-4613-ac86-3c12c35b0eba
📒 Files selected for processing (2)
src/config/changed-paths/README.mdsrc/config/changed-paths/action.yml
There was a problem hiding this comment.
Actionable comments posted: 1
♻️ Duplicate comments (1)
src/config/changed-paths/action.yml (1)
190-196:⚠️ Potential issue | 🟡 MinorMissing error handling for malformed JSON in
filter-pathswhen shared path triggers.Line 193 parses JSON without validating
jqexit status. Other branches (lines 167-171, 212-216) include error handling. This inconsistency causes unclear failures iffilter-pathsis malformed JSON.Proposed fix
if [[ "$DIRS_FROM_SHARED" == "true" ]]; then # Use all filter_paths as the build targets if [[ "$FILTER_PATHS" == "["* ]]; then - DIRS=$(echo "$FILTER_PATHS" | jq -er '.[]') + DIRS=$(echo "$FILTER_PATHS" | jq -er '.[]' 2>/dev/null) + if [[ $? -ne 0 ]]; then + echo "::error::filter-paths looks like a JSON array but is malformed: $FILTER_PATHS" + exit 1 + fi else DIRS="$FILTER_PATHS" fi🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/config/changed-paths/action.yml` around lines 190 - 196, The DIRS_FROM_SHARED branch parses FILTER_PATHS JSON into DIRS using jq without checking jq's exit status, so malformed JSON will fail silently; modify the block handling DIRS_FROM_SHARED (the condition using DIRS_FROM_SHARED, FILTER_PATHS and assigning to DIRS) to validate jq's result and exit with an error message if parsing fails—mirror the existing error handling used in the other branches (lines handling FILTER_PATHS elsewhere) by capturing jq's exit code, logging a clear error mentioning FILTER_PATHS, and exiting non‑zero when jq fails.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@src/config/changed-paths/action.yml`:
- Around line 5-48: The action inputs were renamed from snake_case to kebab-case
(e.g., filter-paths, shared-paths, path-level, get-app-name, app-name-prefix,
app-name-overrides, normalize-to-filter, ignore-dirs, fallback-app-name,
consolidate-to-root, consolidate-keep-dirs) but the README still documents the
old snake_case names; update the changed-paths README to use the new kebab-case
input names everywhere (descriptions, examples, and sample workflows), add a
clear “Breaking change” note plus a short migration mapping table showing each
old snake_case -> new kebab-case name, and update any example usages to
demonstrate the new names (optionally include a one-line compatibility hint for
callers migrating from snake_case).
---
Duplicate comments:
In `@src/config/changed-paths/action.yml`:
- Around line 190-196: The DIRS_FROM_SHARED branch parses FILTER_PATHS JSON into
DIRS using jq without checking jq's exit status, so malformed JSON will fail
silently; modify the block handling DIRS_FROM_SHARED (the condition using
DIRS_FROM_SHARED, FILTER_PATHS and assigning to DIRS) to validate jq's result
and exit with an error message if parsing fails—mirror the existing error
handling used in the other branches (lines handling FILTER_PATHS elsewhere) by
capturing jq's exit code, logging a clear error mentioning FILTER_PATHS, and
exiting non‑zero when jq fails.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yml
Review profile: ASSERTIVE
Plan: Pro
Run ID: 32c500c9-82d8-4a0a-81fa-67e29e159997
📒 Files selected for processing (7)
.github/workflows/build.yml.github/workflows/gptchangelog.yml.github/workflows/pr-security-scan.yml.github/workflows/release.yml.github/workflows/typescript-build.yml.github/workflows/typescript-release.ymlsrc/config/changed-paths/action.yml
There was a problem hiding this comment.
Actionable comments posted: 1
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
.github/workflows/build.yml (1)
256-261:⚠️ Potential issue | 🟡 MinorAddress SC2001 shellcheck warning (pipeline failure).
The pipeline reports SC2001 on line 255 for the
sedsubstitution. While bash parameter expansion can't replicate this regex, you can suppress the warning with a directive or use an alternative approach.Option 1: Suppress with shellcheck directive
- name: Extract version from tag id: version run: | TAG="${GITHUB_REF#refs/tags/}" # Strip app prefix by finding -v and extracting from there # e.g., agent-v1.0.0-beta.1 -> v1.0.0-beta.1 # e.g., control-plane-v1.0.0-beta.1 -> v1.0.0-beta.1 + # shellcheck disable=SC2001 VERSION=$(echo "$TAG" | sed 's/.*-\(v[0-9]\)/\1/') echo "version=$VERSION" >> "$GITHUB_OUTPUT" echo "Extracted version: $VERSION from tag: $TAG"Option 2: Use bash regex match
- name: Extract version from tag id: version run: | TAG="${GITHUB_REF#refs/tags/}" # Strip app prefix by finding -v and extracting from there # e.g., agent-v1.0.0-beta.1 -> v1.0.0-beta.1 # e.g., control-plane-v1.0.0-beta.1 -> v1.0.0-beta.1 - VERSION=$(echo "$TAG" | sed 's/.*-\(v[0-9]\)/\1/') + if [[ "$TAG" =~ (v[0-9].*) ]]; then + VERSION="${BASH_REMATCH[1]}" + else + VERSION="$TAG" + fi echo "version=$VERSION" >> "$GITHUB_OUTPUT" echo "Extracted version: $VERSION from tag: $TAG"🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.github/workflows/build.yml around lines 256 - 261, The sed command extracting the version from TAG triggers shellcheck SC2001; replace it with a bash regex match to avoid the warning: test TAG with if [[ $TAG =~ .*(-v[0-9].*) ]]; then set VERSION="${BASH_REMATCH[1]}"; else set VERSION="$TAG"; fi to populate VERSION (replacing the current VERSION=$(echo "$TAG" | sed 's/.*-\(v[0-9]\)/\1/') line), or alternatively add a shellcheck disable directive (# shellcheck disable=SC2001) immediately above the existing sed line if you prefer to keep sed.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In @.github/workflows/gptchangelog.yml:
- Around line 417-418: The PROMPT assignment is one long string that violates
yamllint's line-length rule; refactor the assignment to span multiple lines or
use a heredoc so each YAML line is under the limit. Replace the single-line
PROMPT="..." with a multiline heredoc (e.g., read -r -d '' PROMPT <<'EOF' ...
EOF) or concatenate multiple quoted strings, then keep ESCAPED_PROMPT=$(echo
"$PROMPT" | jq -Rs .) unchanged; ensure the variable name PROMPT and the
subsequent ESCAPED_PROMPT invocation remain the same.
---
Outside diff comments:
In @.github/workflows/build.yml:
- Around line 256-261: The sed command extracting the version from TAG triggers
shellcheck SC2001; replace it with a bash regex match to avoid the warning: test
TAG with if [[ $TAG =~ .*(-v[0-9].*) ]]; then set VERSION="${BASH_REMATCH[1]}";
else set VERSION="$TAG"; fi to populate VERSION (replacing the current
VERSION=$(echo "$TAG" | sed 's/.*-\(v[0-9]\)/\1/') line), or alternatively add a
shellcheck disable directive (# shellcheck disable=SC2001) immediately above the
existing sed line if you prefer to keep sed.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yml
Review profile: ASSERTIVE
Plan: Pro
Run ID: 83509cbd-3c18-4287-815a-c511c5d21094
📒 Files selected for processing (3)
.github/workflows/build.yml.github/workflows/gptchangelog.yml.github/workflows/typescript-build.yml
…le shellcheck rules
There was a problem hiding this comment.
Actionable comments posted: 3
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In @.github/workflows/gptchangelog.yml:
- Around line 264-265: Remove the unnecessary ShellCheck disable by deleting the
comment "# shellcheck disable=SC2193" that precedes the if statement; leave the
conditional if [[ "${{ github.ref }}" == refs/tags/* ]]; then intact so the
GitHub Actions expression is evaluated at runtime and ShellCheck false-positive
suppression is avoided.
- Around line 297-299: Replace the bare redirection token ">
/tmp/apps_updated.txt" with an explicit no-op command to satisfy shellcheck
SC2188; update the invocation that currently uses "> /tmp/apps_updated.txt" (in
the workflow step initializing files) to use a no-op like the shell builtin
colon or the true command with the same redirection (for example, ": >
/tmp/apps_updated.txt" or "true > /tmp/apps_updated.txt") so the redirection has
a command to execute.
- Around line 531-532: Replace the "useless cat" usage in the APPS_LIST
assignment by feeding /tmp/apps_updated.txt directly to cut; update the
APPS_LIST assignment (the line that sets APPS_LIST) to use input redirection
with cut -d: -f1,2 < /tmp/apps_updated.txt and keep the rest of the pipeline (tr
'\n' ', ' | sed 's/,$//') unchanged so SC2002 is no longer suppressed.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yml
Review profile: ASSERTIVE
Plan: Pro
Run ID: a1b0f501-6363-479c-9b48-5c2ffea40051
📒 Files selected for processing (3)
.github/workflows/build.yml.github/workflows/gptchangelog.yml.github/workflows/release.yml
…in remaining workflows
All comments addressed.
There was a problem hiding this comment.
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
.github/workflows/gptchangelog.yml (1)
586-594:⚠️ Potential issue | 🟡 MinorFix pipeline failure: unused
APP_NAMEandVERSIONvariables (SC2034).The loop reads
APP_NAMEandVERSIONbut doesn't use them in the body. Prefix with_to indicate intentional discard.Proposed fix
- while IFS=: read -r APP_NAME VERSION WORKING_DIR; do + while IFS=: read -r _APP_NAME _VERSION WORKING_DIR; do🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.github/workflows/gptchangelog.yml around lines 586 - 594, The loop currently reads variables "APP_NAME" and "VERSION" in the line "while IFS=: read -r APP_NAME VERSION WORKING_DIR; do" but never uses them, causing SC2034; change those unused identifiers to be prefixed with an underscore (e.g., "_APP_NAME" and "_VERSION") so the shell indicates they are intentionally discarded while keeping "WORKING_DIR" and the rest of the logic (the CHANGELOG_PATH calculation, git add, and echo) unchanged.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Outside diff comments:
In @.github/workflows/gptchangelog.yml:
- Around line 586-594: The loop currently reads variables "APP_NAME" and
"VERSION" in the line "while IFS=: read -r APP_NAME VERSION WORKING_DIR; do" but
never uses them, causing SC2034; change those unused identifiers to be prefixed
with an underscore (e.g., "_APP_NAME" and "_VERSION") so the shell indicates
they are intentionally discarded while keeping "WORKING_DIR" and the rest of the
logic (the CHANGELOG_PATH calculation, git add, and echo) unchanged.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yml
Review profile: ASSERTIVE
Plan: Pro
Run ID: 517b238e-bf18-4710-83a2-c05e223ecfb3
📒 Files selected for processing (3)
.github/workflows/gptchangelog.yml.github/workflows/typescript-build.yml.github/workflows/typescript-release.yml
There was a problem hiding this comment.
Actionable comments posted: 3
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (2)
.github/workflows/gptchangelog.yml (1)
583-594:⚠️ Potential issue | 🟡 MinorFix unused variables flagged by shellcheck (pipeline failure).
APP_NAMEandVERSIONare read but never used in this loop—onlyWORKING_DIRis referenced. Use underscore prefix to indicate intentionally unused variables, consistent with line 609.Proposed fix
if [ -f /tmp/apps_updated.txt ]; then - while IFS=: read -r APP_NAME VERSION WORKING_DIR; do + while IFS=: read -r _APP_NAME _VERSION WORKING_DIR; do if [ "$WORKING_DIR" != "." ]; then CHANGELOG_PATH="${WORKING_DIR}/CHANGELOG.md" else🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.github/workflows/gptchangelog.yml around lines 583 - 594, Change the while-read loop to mark the unused fields as intentionally unused to satisfy shellcheck: in the loop that currently uses "while IFS=: read -r APP_NAME VERSION WORKING_DIR; do" replace the unused variables with underscore-prefixed names (e.g., "_APP_NAME" and "_VERSION") so only WORKING_DIR is treated as used; keep the rest of the loop (the conditional building of CHANGELOG_PATH, git add, and echo) unchanged.src/config/changed-paths/README.md (1)
65-135: 🧹 Nitpick | 🔵 TrivialPre-existing snake_case in legacy section headers.
Headers like
### Default (get_app_name: false),### With ignore_dirs,### Single app mode (fallback_app_name)still use snake_case. Consider updating for full consistency, though this is lower priority than the newshared-pathssection.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/config/changed-paths/README.md` around lines 65 - 135, The README section headers use legacy snake_case (e.g., "Default (get_app_name: false)", "With ignore_dirs", "Single app mode (fallback_app_name)") which breaks consistency with the new kebab-case style (e.g., "shared-paths"); update those headers to use kebab-case flags and names (for example "Default (get-app-name: false)", "With ignore-dirs", "Single app mode (fallback-app-name)") and likewise change any inline flag mentions like get_app_name, ignore_dirs, fallback_app_name to get-app-name, ignore-dirs, fallback-app-name so all section headers and flag references match the new naming convention.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@src/config/changed-paths/action.yml`:
- Around line 37-48: Update the input descriptions to stop referencing internal
snake_case names and instead use the action input identifiers shown in this file
(e.g., use fallback-app-name, consolidate-to-root, consolidate-keep-dirs,
filter-paths, and get-app-name) so the docs match the actual input names; edit
the description strings for fallback-app-name, consolidate-to-root and
consolidate-keep-dirs to replace occurrences of filter_paths, fallback_app_name,
get_app_name, consolidate_keep_dirs, and consolidate_to_root with the
corresponding hyphenated input names used by the action.
- Around line 214-220: The error message uses snake_case `filter_paths` but
elsewhere the input name is kebab-case `filter-paths`; update the echo in the
JSON-array validation block (where FILTER_PATHS is parsed into FILTER_LIST) to
reference `filter-paths` instead of `filter_paths`, and scan other uses of
FILTER_PATHS/FILTER_LIST in the same file to ensure all user-facing messages
consistently use `filter-paths`.
In `@src/config/changed-paths/README.md`:
- Around line 163-181: The README has inconsistent naming: the header and
explanatory text use snake_case "shared_paths" while the rest of the docs and
breaking change use hyphenated "shared-paths"; update the header text "With
shared_paths (monorepo root-level files)" and any occurrences of "shared_paths"
in that example block or explanation to "shared-paths" so the section
consistently references the hyphenated config key (look for the header and the
explanatory sentence around the example and the YAML comment mentioning
shared-paths/shared_paths).
---
Outside diff comments:
In @.github/workflows/gptchangelog.yml:
- Around line 583-594: Change the while-read loop to mark the unused fields as
intentionally unused to satisfy shellcheck: in the loop that currently uses
"while IFS=: read -r APP_NAME VERSION WORKING_DIR; do" replace the unused
variables with underscore-prefixed names (e.g., "_APP_NAME" and "_VERSION") so
only WORKING_DIR is treated as used; keep the rest of the loop (the conditional
building of CHANGELOG_PATH, git add, and echo) unchanged.
In `@src/config/changed-paths/README.md`:
- Around line 65-135: The README section headers use legacy snake_case (e.g.,
"Default (get_app_name: false)", "With ignore_dirs", "Single app mode
(fallback_app_name)") which breaks consistency with the new kebab-case style
(e.g., "shared-paths"); update those headers to use kebab-case flags and names
(for example "Default (get-app-name: false)", "With ignore-dirs", "Single app
mode (fallback-app-name)") and likewise change any inline flag mentions like
get_app_name, ignore_dirs, fallback_app_name to get-app-name, ignore-dirs,
fallback-app-name so all section headers and flag references match the new
naming convention.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yml
Review profile: ASSERTIVE
Plan: Pro
Run ID: 93979df0-8699-42f5-9bf0-53c28f7e803b
📒 Files selected for processing (3)
.github/workflows/gptchangelog.ymlsrc/config/changed-paths/README.mdsrc/config/changed-paths/action.yml
There was a problem hiding this comment.
Actionable comments posted: 1
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (3)
src/config/changed-paths/README.md (3)
121-123: 🧹 Nitpick | 🔵 TrivialBackticked references use snake_case.
Line 123 uses backticks around
filter_pathsandfallback_app_name, implying these are the actual input names. With kebab-case inputs, these should befilter-pathsandfallback-app-name.Proposed fix
-When `filter_paths` is empty and `fallback_app_name` is set, the composite skips change detection and returns a single-item matrix: +When `filter-paths` is empty and `fallback-app-name` is set, the composite skips change detection and returns a single-item matrix:🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/config/changed-paths/README.md` around lines 121 - 123, Update the README section titled "Single app mode (fallback_app_name)" to use the actual kebab-case input names: replace backticked `filter_paths` with `filter-paths` and `fallback_app_name` with `fallback-app-name` (referencing the README text around the "Single app mode" heading and the descriptive sentence that explains the composite behavior when the inputs are set).
189-196:⚠️ Potential issue | 🟡 MinorTable header uses snake_case
path_levelbut input is nowpath-level.Line 191's table header still shows
path_level(snake_case) while the input was renamed topath-level. This table documents the input's behavior, so the header should match the actual input name.Proposed fix
-| Original Path | path_level | Result | +| Original Path | path-level | Result |🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/config/changed-paths/README.md` around lines 189 - 196, Update the table header in the "How path-level works" section by replacing the snake_case header text `path_level` with the actual input name `path-level` so the documentation matches the current input; locate the header cell containing `path_level` in that table and change it to `path-level` (leave the other columns like `Original Path` and `Result` unchanged).
65-135: 🧹 Nitpick | 🔵 TrivialSection headers still use snake_case while inputs are now kebab-case.
Headers like "Default (get_app_name: false)" (line 65), "With ignore_dirs" (line 106), "Single app mode (fallback_app_name)" (line 121), and "Type 2 monorepo (consolidate_to_root)" (line 135) reference the old snake_case names. Newer sections (lines 163, 183, 189) correctly use kebab-case.
This creates confusion since the breaking change table tells users to migrate to kebab-case. Consider updating these headers for consistency.
Suggested updates
-### Default (get_app_name: false) +### Default (get-app-name: false) -### With app names (get_app_name: true) +### With app names (get-app-name: true) -### With prefix (app_name_prefix: "myapp") +### With prefix (app-name-prefix: "myapp") -### With ignore_dirs +### With ignore-dirs -### Single app mode (fallback_app_name) +### Single app mode (fallback-app-name) -### Type 2 monorepo (consolidate_to_root) +### Type 2 monorepo (consolidate-to-root)🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/config/changed-paths/README.md` around lines 65 - 135, Update the README section headers to use kebab-case input names to match the rest of the docs and the breaking-change guidance: replace "Default (get_app_name: false)" with "Default (get-app-name: false)", "With ignore_dirs" with "With ignore-dirs", "Single app mode (fallback_app_name)" with "Single app mode (fallback-app-name)", and "Type 2 monorepo (consolidate_to_root)" with "Type 2 monorepo (consolidate-to-root)"; keep the example snippets and descriptions unchanged so only the header strings are modified for consistency.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@src/config/changed-paths/action.yml`:
- Around line 211-212: The if condition that filters on FILTER_PATHS is
redundant because [[ -n "$FILTER_PATHS" ]] and [[ "$FILTER_PATHS" != "" ]] are
equivalent; simplify the conditional in src/config/changed-paths/action.yml by
removing one of those checks (e.g., keep [[ -n "$FILTER_PATHS" ]] and remove the
[[ "$FILTER_PATHS" != "" ]] clause) while preserving the other checks
(FILTER_PATHS != "[]" and the JSON/newline handling) so the behavior of the
FILTER_PATHS gating remains unchanged.
---
Outside diff comments:
In `@src/config/changed-paths/README.md`:
- Around line 121-123: Update the README section titled "Single app mode
(fallback_app_name)" to use the actual kebab-case input names: replace
backticked `filter_paths` with `filter-paths` and `fallback_app_name` with
`fallback-app-name` (referencing the README text around the "Single app mode"
heading and the descriptive sentence that explains the composite behavior when
the inputs are set).
- Around line 189-196: Update the table header in the "How path-level works"
section by replacing the snake_case header text `path_level` with the actual
input name `path-level` so the documentation matches the current input; locate
the header cell containing `path_level` in that table and change it to
`path-level` (leave the other columns like `Original Path` and `Result`
unchanged).
- Around line 65-135: Update the README section headers to use kebab-case input
names to match the rest of the docs and the breaking-change guidance: replace
"Default (get_app_name: false)" with "Default (get-app-name: false)", "With
ignore_dirs" with "With ignore-dirs", "Single app mode (fallback_app_name)" with
"Single app mode (fallback-app-name)", and "Type 2 monorepo
(consolidate_to_root)" with "Type 2 monorepo (consolidate-to-root)"; keep the
example snippets and descriptions unchanged so only the header strings are
modified for consistency.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yml
Review profile: ASSERTIVE
Plan: Pro
Run ID: b71a560f-c6d6-4bfd-9df6-0ee4ff7a66c0
📒 Files selected for processing (2)
src/config/changed-paths/README.mdsrc/config/changed-paths/action.yml
…prose to kebab-case
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@src/config/changed-paths/README.md`:
- Around line 28-40: The README inputs table must exactly match action.yml:
remove the trailing text from the path-level row so its default cell is exactly
`0` (i.e., change the `path-level` default from "`0` (disabled)" to just
`\`0\`"), and normalize default-value formatting for the listed inputs
(`filter-paths`, `shared-paths`, `app-name-prefix`, `app-name-overrides`,
`normalize-to-filter`, `ignore-dirs`, `fallback-app-name`,
`consolidate-to-root`, `consolidate-keep-dirs`) by replacing the current
backticked `''` representation with an empty backticked value that matches
action.yml (i.e., use `` for an empty default), ensuring each row follows the
exact pattern `| \`input-name\` | description | No | \`default\` |`.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yml
Review profile: ASSERTIVE
Plan: Pro
Run ID: 26da3f86-8c9b-4874-a4eb-5fb1f07ff52d
📒 Files selected for processing (1)
src/config/changed-paths/README.md
… cell to description
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@src/config/changed-paths/README.md`:
- Line 55: The README example references the action tag uses:
LerianStudio/github-actions-shared-workflows@v1.0.0 but demonstrates the new
kebab-case inputs (e.g., filter-paths, path-level) which v1.0.0 does not
support; update that uses: reference to either `@develop` (for testing unreleased
changes), `@feat/changed-paths-shared-paths` (the feature branch), or a future tag
like `@v2.0.0` with a note that the kebab-case syntax requires v2+, so replace the
existing `@v1.0.0` in the uses line accordingly to match the demonstrated input
syntax.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yml
Review profile: ASSERTIVE
Plan: Pro
Run ID: 3a0f9cea-911d-4d70-9a5d-51f0b34df2a8
📒 Files selected for processing (1)
src/config/changed-paths/README.md
GitHub Actions Shared Workflows
Description
Adds a
shared_pathsinput to thechanged-pathscomposite action. When any changed file matches a pattern inshared_paths, all components listed infilter_pathsare included in the build matrix — bypassing the normal per-directory filtering.This fixes the scenario where root-level files like
go.modorgo.sumare modified in a monorepo: because theirdirnameresolves to., they never matched anyfilter_pathsprefix, causing the matrix to be empty and all builds to be skipped.Before:
go.modchange →matrix=[],has_builds=false→ builds skipped →gitops-updatefails.After:
go.modchange +shared_paths: go.mod→ allfilter_pathscomponents included in the matrix.Example usage:
Type of Change
feat: New workflow or new input/output/step in an existing workflowBreaking Changes
None.
Testing
'', which disables the feature entirely)Caller repo / workflow run: Reproducer described in issue #108 (Build v1.2.0-beta.7 #22723003821)
Related Issues
Closes #108
Summary by CodeRabbit
New Features
Chores
Documentation