Skip to content

ci: skip UI unittests on Go-only PRs#20197

Open
davdhacs wants to merge 7 commits intomasterfrom
davdhacs/skip-ui-for-go
Open

ci: skip UI unittests on Go-only PRs#20197
davdhacs wants to merge 7 commits intomasterfrom
davdhacs/skip-ui-for-go

Conversation

@davdhacs
Copy link
Copy Markdown
Contributor

@davdhacs davdhacs commented Apr 23, 2026

Description

Gate ui and ui-component jobs on ui/ file changes so Go-only PRs skip Cypress and Jest test runs (~5-6m of compute saved per Go-only PR).

if: >-
  !needs.detect-changes.outputs.files ||
  contains(needs.detect-changes.outputs.files, '^ui/')

Testing and quality

  • CI results are inspected

How I validated my change

🤖 Generated with Claude Code

davdhacs and others added 2 commits April 23, 2026 13:43
Add a reusable workflow that fetches the PR's changed file list
via GitHub API and outputs it with ^/$ anchors for precise
substring matching.

Gate github-actions-lint, github-actions-shellcheck, and
openshift-ci-lint on relevant file changes. These jobs are
self-contained and low-risk for validating the approach before
expanding to more jobs.

AI-assisted.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Gate ui and ui-component jobs on ui/ file changes so Go-only
PRs skip Cypress and Jest test runs.

AI-assisted.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@openshift-ci
Copy link
Copy Markdown

openshift-ci Bot commented Apr 23, 2026

Skipping CI for Draft Pull Request.
If you want CI signal for your change, please convert it to an actual PR.
You can still manually trigger a test run with /test all

Copy link
Copy Markdown
Contributor

@sourcery-ai sourcery-ai Bot left a comment

Choose a reason for hiding this comment

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

Hey - I've left some high level feedback:

  • The contains(needs.detect-changes.outputs.files, '^ui/') condition treats the output as a flat string and looks for the literal ^ui/; if the files output is a newline/JSON list of paths, consider either dropping the caret or using a pattern that matches actual file paths (e.g., contains(..., 'ui/') or iterating over paths in detect-changes).
  • By adding needs: detect-changes you’ve introduced a hard dependency for the ui and ui-component jobs; if detect-changes fails or is skipped those jobs also skip—verify that’s acceptable, or add a fallback to still run UI tests when change detection fails.
Prompt for AI Agents
Please address the comments from this code review:

## Overall Comments
- The `contains(needs.detect-changes.outputs.files, '^ui/')` condition treats the output as a flat string and looks for the literal `^ui/`; if the `files` output is a newline/JSON list of paths, consider either dropping the caret or using a pattern that matches actual file paths (e.g., `contains(..., 'ui/')` or iterating over paths in `detect-changes`).
- By adding `needs: detect-changes` you’ve introduced a hard dependency for the `ui` and `ui-component` jobs; if `detect-changes` fails or is skipped those jobs also skip—verify that’s acceptable, or add a fallback to still run UI tests when change detection fails.

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 23, 2026

🚀 Build Images Ready

Images are ready for commit 91e951d. To use with deploy scripts:

export MAIN_IMAGE_TAG=4.11.x-784-g91e951dc9d

@codecov
Copy link
Copy Markdown

codecov Bot commented Apr 23, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 49.79%. Comparing base (121ffc3) to head (91e951d).
⚠️ Report is 1 commits behind head on master.

Additional details and impacted files
@@           Coverage Diff           @@
##           master   #20197   +/-   ##
=======================================
  Coverage   49.79%   49.79%           
=======================================
  Files        2770     2770           
  Lines      210212   210212           
=======================================
+ Hits       104667   104672    +5     
+ Misses      97823    97819    -4     
+ Partials     7722     7721    -1     
Flag Coverage Δ
go-unit-tests 49.79% <ø> (+<0.01%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

UI jobs use make targets (make ui-test, make ui-component-tests),
so Makefile changes should trigger them.

AI-assisted.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Base automatically changed from davdhacs/detect-changes-minimal to master April 24, 2026 14:40
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Apr 24, 2026

📝 Walkthrough

Summary by CodeRabbit

  • Chores
    • Enhanced continuous integration workflows to execute targeted tests based on changed repository files, reducing unnecessary test runs and improving build efficiency.

Walkthrough

This change adds a change detection system to GitHub workflows. A new run_all input is added to the detect-changes workflow that allows pattern matching to force broader execution. The unit-tests workflow is updated to use this detection system as a prerequisite, conditionally skipping UI-related jobs when their respective paths haven't changed.

Changes

Cohort / File(s) Summary
Change Detection Workflow
.github/workflows/detect-changes.yml
Adds optional run_all input accepting newline-separated match patterns. Detection step builds anchored filename representation and uses fixed-string grep to check patterns; on match, exits without producing files output to force downstream job execution.
Unit Tests Workflow
.github/workflows/unit-tests.yaml
Adds detect-changes prerequisite job and applies conditional if gates to ui and ui-component jobs. Jobs now run only when files output is empty or changed paths match ^ui/ or .github/actions/cache-ui-dependencies/ patterns.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The PR title clearly summarizes the main change: adding conditional logic to skip UI unit tests on Go-only PRs, which directly matches the changeset's primary objective.
Description check ✅ Passed The PR description includes the core change explanation, validation details (actionlint verification, real PR test), and acknowledges CI inspection. However, it omits sections for CHANGELOG updates and automated testing checkboxes from the template.
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 davdhacs/skip-ui-for-go

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.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🧹 Nitpick comments (4)
.github/workflows/detect-changes.yml (2)

53-56: Consider clarifying the 3000-file cap (and its relation to GITHUB_OUTPUT size).

A couple of notes on this guard:

  1. By the time the cap triggers, gh api --paginate has already fetched every page, so the cap only protects GITHUB_OUTPUT size / downstream contains() cost — not API usage. Worth a short comment to avoid future confusion.
  2. The real hard limit is the per-job output size (~1 MiB total across all outputs). 3000 anchored paths with an average length of ~100 bytes is ~300 KiB, well under the cap, so the chosen value is safe; however, if an outlier PR has very long paths, truncation could still happen. Documenting the rationale near this check would help.

Purely a documentation/robustness nit — no behavior change required.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/detect-changes.yml around lines 53 - 56, Add an inline
comment above the if [[ ${`#files`[@]} -ge 3000 ]] check explaining that this
3000-file cap is intended to limit the size of GITHUB_OUTPUT and downstream
contains() cost (not API pagination, since gh api --paginate has already fetched
all pages), note the ~1 MiB per-job output hard limit and that 3000 paths at
~100 bytes ≈300 KiB which is why 3000 was chosen, and mention the edge case that
very long file paths could still cause truncation so callers should be aware or
consider truncating/shortening entries before writing to GITHUB_OUTPUT.

39-47: Verify gh api auth on forked PRs if repo becomes private.

The GET /repos/{owner}/{repo}/pulls/{number}/files endpoint requires pull-requests: read permission, which is included in the default read access for public repos. This means the API call should work on fork PRs with the read-only GITHUB_TOKEN. However, if this repository becomes private in the future, the fork PR token may be insufficient and the call could fail. The defensive exit 0 fallback ensures the workflow defaults to running all jobs on failure, so this is fail-safe — just be aware that fork PR optimizations depend on public repo visibility or explicit permission grant.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/detect-changes.yml around lines 39 - 47, The GH API call
fetching PR files can fail for forked PRs if the repo is private because the
GITHUB_TOKEN may lack pull-requests:read on forks; add a pre-check that queries
the repo visibility with gh api "repos/${GH_REPO}" (use --jq '.private') before
attempting the pulls files call, and if the repo is private emit a clear warning
and skip the optimization (exit 0) so behavior remains safe; update the block
that references PR_NUMBER and the gh api "pulls/${PR_NUMBER}/files" call to
perform this visibility check first and only call pulls/files when the repo is
public.
.github/workflows/style.yaml (1)

319-323: Optional: tighten the openshift-ci-lint gate or justify the scope.

The ^.openshift-ci/ filter will not re-run this linter when the workflow itself (.github/workflows/style.yaml) or its pinned Python requirements/tooling change. In practice make -C .openshift-ci style/lint is self-contained, so this is probably fine — but if you later change tooling assumptions, skipped PRs could miss regressions. Consider also including ^.github/workflows/style.yaml$ in the conditional, or add a short comment documenting why the narrow scope is sufficient.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/style.yaml around lines 319 - 323, The openshift-ci-lint
job conditional currently only checks changed files under ^.openshift-ci/ which
will skip rerunning the job when the workflow or its tooling change; update the
condition for the openshift-ci-lint job to also check for changes to the
workflow itself (e.g., include a pattern for the workflow file like
^.github/workflows/style.yaml$) or add an inline comment next to the
openshift-ci-lint job explaining why the narrower scope is acceptable so future
reviewers understand the rationale.
.github/workflows/unit-tests.yaml (1)

534-534: Stale duplicate reference in mention_author.

Pre-existing nit (not introduced by this PR, but adjacent): needs.go.outputs.new-jiras is referenced twice in the chain. Since you are already touching this workflow's gating logic, this would be a low-risk place to de-dup. Ignore if out of scope.

-        mention_author: ${{ needs.go.outputs.new-jiras || needs.go-postgres.outputs.new-jiras || needs.local-roxctl-tests.outputs.new-jiras || needs.ui.outputs.new-jiras || needs.go.outputs.new-jiras || needs.shell-unit-tests.outputs.new-jiras || needs.sensor-integration-tests.outputs.new-jiras }}
+        mention_author: ${{ needs.go.outputs.new-jiras || needs.go-postgres.outputs.new-jiras || needs.local-roxctl-tests.outputs.new-jiras || needs.ui.outputs.new-jiras || needs.shell-unit-tests.outputs.new-jiras || needs.sensor-integration-tests.outputs.new-jiras }}
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/unit-tests.yaml at line 534, The mention_author expression
contains a duplicated token "needs.go.outputs.new-jiras"; remove the redundant
occurrence so the boolean OR chain only includes each
needs.<service>.outputs.new-jiras once (update the mention_author key where the
expression is defined, leaving the remaining needs.* entries intact) to
de-duplicate without changing semantics.
🤖 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/detect-changes.yml:
- Around line 49-51: The printf call prints a stray blank line when the files
array is empty; update the block that uses mapfile and the files array
(variables named files and the mapfile invocation) to only call printf '  %s\n'
"${files[@]}" if the array has at least one element (e.g., test "${`#files`[@]}"
-gt 0) so no format-only printf runs when output is empty.

In @.github/workflows/unit-tests.yaml:
- Around line 230-235: The gate currently only triggers the "ui" (and similarly
"ui-component") job if changes match '^ui/' or '^Makefile$', which misses edits
to workflow and custom action files; update the if condition on the "ui" and
"ui-component" jobs to also include '^.github/workflows/unit-tests.yaml$',
'^.github/actions/cache-ui-dependencies/', and '^.github/actions/job-preamble/'
(or the equivalent glob patterns for those directories) so that modifications to
the workflow file or the custom actions referenced by the jobs will rerun the UI
tests; adjust the contains(...) checks in the "ui" and "ui-component" job
definitions to include these additional paths.

---

Nitpick comments:
In @.github/workflows/detect-changes.yml:
- Around line 53-56: Add an inline comment above the if [[ ${`#files`[@]} -ge 3000
]] check explaining that this 3000-file cap is intended to limit the size of
GITHUB_OUTPUT and downstream contains() cost (not API pagination, since gh api
--paginate has already fetched all pages), note the ~1 MiB per-job output hard
limit and that 3000 paths at ~100 bytes ≈300 KiB which is why 3000 was chosen,
and mention the edge case that very long file paths could still cause truncation
so callers should be aware or consider truncating/shortening entries before
writing to GITHUB_OUTPUT.
- Around line 39-47: The GH API call fetching PR files can fail for forked PRs
if the repo is private because the GITHUB_TOKEN may lack pull-requests:read on
forks; add a pre-check that queries the repo visibility with gh api
"repos/${GH_REPO}" (use --jq '.private') before attempting the pulls files call,
and if the repo is private emit a clear warning and skip the optimization (exit
0) so behavior remains safe; update the block that references PR_NUMBER and the
gh api "pulls/${PR_NUMBER}/files" call to perform this visibility check first
and only call pulls/files when the repo is public.

In @.github/workflows/style.yaml:
- Around line 319-323: The openshift-ci-lint job conditional currently only
checks changed files under ^.openshift-ci/ which will skip rerunning the job
when the workflow or its tooling change; update the condition for the
openshift-ci-lint job to also check for changes to the workflow itself (e.g.,
include a pattern for the workflow file like ^.github/workflows/style.yaml$) or
add an inline comment next to the openshift-ci-lint job explaining why the
narrower scope is acceptable so future reviewers understand the rationale.

In @.github/workflows/unit-tests.yaml:
- Line 534: The mention_author expression contains a duplicated token
"needs.go.outputs.new-jiras"; remove the redundant occurrence so the boolean OR
chain only includes each needs.<service>.outputs.new-jiras once (update the
mention_author key where the expression is defined, leaving the remaining
needs.* entries intact) to de-duplicate without changing semantics.
🪄 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: Central YAML (base), Organization UI (inherited)

Review profile: CHILL

Plan: Enterprise

Run ID: 507e76c0-cfc4-4ea0-bba9-e63710aff6d8

📥 Commits

Reviewing files that changed from the base of the PR and between c499f37 and 8358f24.

📒 Files selected for processing (3)
  • .github/workflows/detect-changes.yml
  • .github/workflows/style.yaml
  • .github/workflows/unit-tests.yaml

Comment thread .github/workflows/detect-changes.yml
Comment thread .github/workflows/unit-tests.yaml Outdated
@davdhacs davdhacs changed the title ci: skip UI jobs on Go-only PRs ci: skip UI test/style on Go-only PRs Apr 24, 2026
@davdhacs davdhacs changed the title ci: skip UI test/style on Go-only PRs ci: skip UI unittests on Go-only PRs Apr 24, 2026
@davdhacs davdhacs requested review from a team and AlexVulaj April 24, 2026 14:55
@davdhacs davdhacs marked this pull request as ready for review April 24, 2026 16:29
@davdhacs davdhacs requested a review from a team as a code owner April 24, 2026 16:29
Copy link
Copy Markdown
Contributor

@sourcery-ai sourcery-ai Bot left a comment

Choose a reason for hiding this comment

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

Hey - I've left some high level feedback:

  • The contains(needs.detect-changes.outputs.files, '^ui/') and '^Makefile$' checks won’t be treated as regex by GitHub Actions, so the ^ and $ characters are just literals; consider either removing them or switching to a pattern/format that is actually supported (e.g., checking for ui/ and Makefile substrings based on how detect-changes formats files).
  • The if conditions for ui and ui-component are duplicated; consider extracting the shared expression into a single reusable piece (e.g., a job output from detect-changes or a common expression) to avoid drift if this gating logic needs to be updated later.
Prompt for AI Agents
Please address the comments from this code review:

## Overall Comments
- The `contains(needs.detect-changes.outputs.files, '^ui/')` and `'^Makefile$'` checks won’t be treated as regex by GitHub Actions, so the `^` and `$` characters are just literals; consider either removing them or switching to a pattern/format that is actually supported (e.g., checking for `ui/` and `Makefile` substrings based on how `detect-changes` formats `files`).
- The `if` conditions for `ui` and `ui-component` are duplicated; consider extracting the shared expression into a single reusable piece (e.g., a job output from `detect-changes` or a common expression) to avoid drift if this gating logic needs to be updated later.

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

UI jobs use shared actions (cache-ui-dependencies, job-preamble)
and are defined in the unit-tests workflow file. Changes to any
.github/ file should re-run them to validate.

AI-assisted.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@davdhacs davdhacs force-pushed the davdhacs/skip-ui-for-go branch from 88a84f0 to 5a0f255 Compare April 24, 2026 16:55
Shared dependencies (Makefile, make/, workflow file, job-preamble)
are declared once in run_all. If any match, all jobs run.

Job conditions now only list component-specific patterns:
  ui: '^ui/', '^.github/actions/cache-ui-dependencies/'

AI-assisted.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@davdhacs
Copy link
Copy Markdown
Contributor Author

@coderabbitai review
@sourcery-ai review

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Apr 24, 2026

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
echo "=== detect-changes.yml ==="
cat .github/workflows/detect-changes.yml

echo ""
echo "=== unit-tests.yaml ==="
cat .github/workflows/unit-tests.yaml

echo ""
echo "=== style.yaml ==="
cat .github/workflows/style.yaml

Length of output: 35160


@davdhacs: The PR image shows the workflow run where ui and ui-component are correctly shown as skipped (circle/slash icons) while all Go jobs ran successfully and detect-changes / detect completed in just 2s. The implementation is clean. Here are my findings:


Review of .github/workflows/detect-changes.yml

grep -F for run_all matching (Line 78) — The -F flag (fixed-string/literal) is the right choice here. Since the anchored file list contains literal ^ characters (e.g. ^Makefile$) and the run_all patterns also use literal ^/$, -F performs an exact substring match. Not a bug, but worth a comment explaining the intentional use of -F.

Redundant echo -n (Line 62) — Bash command substitution $(...) already strips trailing newlines from gh api output, so echo -n "${output}" is harmless but slightly redundant. You could use printf '%s' "${output}" or just feed "${output}" to mapfile directly via a here-string: mapfile -t files <<< "${output}".

# Instead of:
mapfile -t files < <(echo -n "${output}")
# Consider:
mapfile -t files <<< "${output}"

detect-changes.yml not in its own consumers' run_all — In unit-tests.yaml, the run_all input covers ^.github/workflows/unit-tests.yaml$ but not ^.github/workflows/detect-changes.yml$. If detect-changes.yml itself is modified (e.g., the files output format changes), detect-changes will run with the new code, but the downstream ui/ui-component jobs may still be incorrectly skipped since no run_all pattern forces them. Consider adding it:

  detect-changes:
    uses: ./.github/workflows/detect-changes.yml
    with:
      run_all: |
        ^Makefile$
        ^make/
        ^.github/workflows/unit-tests.yaml$
        ^.github/workflows/detect-changes.yml$
        ^.github/actions/job-preamble/

The same applies to style.yaml if you ever add run_all there.


Review of .github/workflows/unit-tests.yaml

cache-ui-dependencies placement is intentional and correct — It's in the ui/ui-component if conditions but deliberately absent from run_all, so Go jobs don't re-run when only the UI cache action changes.

slack-on-unit-tests-failure behavior with skipped jobs — When ui/ui-component are skipped, GitHub Actions sets their result to skipped, not failure, so failure() in the Slack job correctly does not trigger. ✅


Review of .github/workflows/style.yaml

detect-changes without run_all — Intentionally correct: the linting jobs (github-actions-lint, github-actions-shellcheck, openshift-ci-lint) don't depend on Makefile or make/, so no run_all is needed here.

github-actions-lint gated on '^.github/' — This will also trigger on changes to detect-changes.yml (since it's under .github/), which is good for catching actionlint issues in the new workflow. ✅


Summary

The overall approach is well-designed. The primary actionable suggestion is adding ^.github/workflows/detect-changes.yml$ to run_all in unit-tests.yaml (and optionally style.yaml) to avoid a silent skip gap when the shared reusable workflow itself is modified.

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

🧹 Nitpick comments (1)
.github/workflows/detect-changes.yml (1)

71-80: Optional: add a one-liner explaining why grep -F is used.

The fixed-string match is intentional because run_all patterns embed literal ^ and $ anchors (same format as the emitted files output), but this isn't obvious at a glance. A brief inline comment will save a future reader from wondering whether regex metacharacters were overlooked.

📝 Proposed clarifying comment
           if [[ -n "${RUN_ALL}" ]]; then
+            # -F: patterns use literal ^/$ anchors (same format as `files`
+            # output), so treat them as fixed strings, not regex.
             anchored=$(printf '^%s$\n' "${files[@]}")
             while IFS= read -r pattern; do
               [[ -z "$pattern" ]] && continue
               if echo "${anchored}" | grep -qF "$pattern"; then
                 echo "run_all: matched '${pattern}', running all jobs" >&2
                 exit 0
               fi
             done <<< "${RUN_ALL}"
           fi
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/detect-changes.yml around lines 71 - 80, Add a short
inline comment explaining that grep is invoked with -F (fixed-string) because
RUN_ALL contains literal anchor characters like '^' and '$' that must be matched
literally against the constructed anchored variable; reference the
variables/commands in the block (anchored, RUN_ALL, pattern, and the grep -qF
call) and place the one-line comment immediately above the if echo "${anchored}"
| grep -qF "$pattern" line so future readers know the literal-match choice is
intentional.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In @.github/workflows/detect-changes.yml:
- Around line 71-80: Add a short inline comment explaining that grep is invoked
with -F (fixed-string) because RUN_ALL contains literal anchor characters like
'^' and '$' that must be matched literally against the constructed anchored
variable; reference the variables/commands in the block (anchored, RUN_ALL,
pattern, and the grep -qF call) and place the one-line comment immediately above
the if echo "${anchored}" | grep -qF "$pattern" line so future readers know the
literal-match choice is intentional.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Central YAML (base), Organization UI (inherited)

Review profile: CHILL

Plan: Enterprise

Run ID: e1dc3c15-0e1a-4210-b330-6ba4f4b2d689

📥 Commits

Reviewing files that changed from the base of the PR and between 8358f24 and 91e951d.

📒 Files selected for processing (2)
  • .github/workflows/detect-changes.yml
  • .github/workflows/unit-tests.yaml
🚧 Files skipped from review as they are similar to previous changes (1)
  • .github/workflows/unit-tests.yaml

inputs:
run_all:
description: >
Newline-separated list of patterns (same ^/$ anchored
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Suggested change
Newline-separated list of patterns (same ^/$ anchored
Newline-separated regex-like patterns (same ^/$ anchored

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants