Skip to content

Fix PRs blocked by skipped build-and-test check - #1611

Merged
aantn merged 3 commits into
masterfrom
claude/fix-missing-check-skip-otuou
Feb 22, 2026
Merged

aantn merged 3 commits into
masterfrom
claude/fix-missing-check-skip-otuou

Conversation

@aantn

@aantn aantn commented Feb 21, 2026 •

Copy link
Copy Markdown
Collaborator

Replace path filters on workflow triggers with a check-changes job that
uses git diff to detect source changes. The build matrix is conditional
on that check. A gate job (build-and-test-gate) always runs and reports
the correct status: pass for docs-only PRs, pass/fail based on actual
test results for code PRs.

Branch protection should require "build-and-test-gate" instead of the
individual build matrix jobs.

https://claude.ai/code/session_01Y9hWTJfZiQuNXuQyTvw7Uq
Signed-off-by: Claude noreply@anthropic.com

Summary by CodeRabbit

  • Chores
    • CI now detects whether source changes require tests and conditionally runs the build only when needed.
    • Added an always-running gate job that aggregates check and build results for branch protection.
    • Workflow sequencing updated so build depends on the change check; tooling steps for checkout and Python setup were upgraded for improved reliability.

Replace path filters on workflow triggers with a check-changes job that
uses git diff to detect source changes. The build matrix is conditional
on that check. A gate job (build-and-test-gate) always runs and reports
the correct status: pass for docs-only PRs, pass/fail based on actual
test results for code PRs.

Branch protection should require "build-and-test-gate" instead of the
individual build matrix jobs.

https://claude.ai/code/session_01Y9hWTJfZiQuNXuQyTvw7Uq
Signed-off-by: Claude <noreply@anthropic.com>
@github-actions

github-actions Bot commented Feb 21, 2026 •

Copy link
Copy Markdown
Contributor

📂 Previous Runs

📜 Run @ 5762d79 (#22259708913)

✅ Results of HolmesGPT evals

Automatically triggered by commit 5762d79 on branch claude/fix-missing-check-skip-otuou

View workflow logs

Results of HolmesGPT evals

  • ask_holmes: 9/9 test cases were successful, 0 regressions
Status Test case Time Turns Tools Cost
✅ 09_crashpod 36.1s 7 11 $0.2666
✅ 101_loki_historical_logs_pod_deleted 33.2s 4 8 $0.2306
✅ 111_pod_names_contain_service 32.8s 5 12 $0.2419
✅ 112_find_pvcs_by_uuid 33.5s 6 9 $0.2636
✅ 12_job_crashing 30.3s 5 11 $0.2426
✅ 176_network_policy_blocking_traffic_no_runbooks 48.9s 8 16 $0.3284
✅ 24_misconfigured_pvc 31.8s 5 15 $0.2450
✅ 43_current_datetime_from_prompt 5.0s 1 — $0.1114
✅ 61_exact_match_counting 17.4s 4 4 $0.1702
Total 29.9s avg 5.0 avg 10.8 avg $2.1003
📜 Run @ 77b752a (#22259212595)

✅ Results of HolmesGPT evals

Automatically triggered by commit 77b752a on branch claude/fix-missing-check-skip-otuou

View workflow logs

Results of HolmesGPT evals

  • ask_holmes: 9/9 test cases were successful, 0 regressions
Status Test case Time Turns Tools Cost
✅ 09_crashpod 31.8s 5 11 $0.2418
✅ 101_loki_historical_logs_pod_deleted 47.9s 7 11 $0.2778
✅ 111_pod_names_contain_service 31.1s 6 9 $0.2247
✅ 112_find_pvcs_by_uuid 24.8s 4 6 $0.2177
✅ 12_job_crashing 31.3s 5 10 $0.2380
✅ 176_network_policy_blocking_traffic_no_runbooks 39.6s 6 15 $0.2839
✅ 24_misconfigured_pvc 44.7s 8 18 $0.2914
✅ 43_current_datetime_from_prompt 5.1s 1 — $0.1116
✅ 61_exact_match_counting 15.9s 4 4 $0.1681
Total 30.2s avg 5.1 avg 10.5 avg $2.0550

✅ Results of HolmesGPT evals

Automatically triggered by commit 5b59ee2 on branch claude/fix-missing-check-skip-otuou

View workflow logs

Results of HolmesGPT evals

  • ask_holmes: 9/9 test cases were successful, 0 regressions
Status Test case Time Turns Tools Cost
✅ 09_crashpod 26.2s 4 9 $0.2130
✅ 101_loki_historical_logs_pod_deleted 51.2s 8 12 $0.3030
✅ 111_pod_names_contain_service 32.8s 5 12 $0.2399
✅ 112_find_pvcs_by_uuid 35.2s 7 9 $0.2820
✅ 12_job_crashing 26.0s 4 8 $0.2118
✅ 176_network_policy_blocking_traffic_no_runbooks 44.7s 6 19 $0.2991
✅ 24_misconfigured_pvc 36.5s 6 13 $0.2526
✅ 43_current_datetime_from_prompt 4.5s 1 — $0.1110
✅ 61_exact_match_counting 14.0s 3 2 $0.1521
Total 30.1s avg 4.9 avg 10.5 avg $2.0644
📖 Legend
Icon Meaning
✅ The test was successful
➖ The test was skipped
⚠️ The test failed but is known to be flaky or known to fail
🚧 The test had a setup failure (not a code regression)
🔧 The test failed due to mock data issues (not a code regression)
🚫 The test was throttled by API rate limits/overload
❌ The test failed and should be fixed before merging the PR
🔄 Re-run evals manually

⚠️ Warning: /eval comments always run using the workflow from master, not from this PR branch. If you modified the GitHub Action (e.g., added secrets or env vars), those changes won't take effect.

To test workflow changes, use the GitHub CLI or Actions UI instead:

gh workflow run eval-regression.yaml --repo HolmesGPT/holmesgpt --ref claude/fix-missing-check-skip-otuou -f markers=regression -f filter=

Option 1: Comment on this PR with /eval:

/eval
tags: regression

Or with more options (one per line):

/eval
model: gpt-4o
tags: regression
filter: 09_crashpod
iterations: 5

Run evals on a different branch (e.g., master) for comparison:

/eval
branch: master
tags: regression
Option Description
model Model(s) to test (default: same as automatic runs)
tags Pytest tags / markers (no default - runs all tests!)
filter Pytest -k filter (use /list to see valid eval names)
iterations Number of runs, max 10
branch Run evals on a different branch (for cross-branch comparison)

Quick re-run: Use /rerun to re-run the most recent /eval on this PR with the same parameters.

Option 2: Trigger via GitHub Actions UI → "Run workflow"

Option 3: Add PR labels to include extra evals in automatic regression runs:

Label Effect
evals-tag-<name> Run tests with tag <name> alongside regression
evals-id-<name> Run a specific eval by test ID

Examples: evals-tag-easy, evals-id-09_crashpod

🏷️ Valid tags

benchmark, chain-of-causation, compaction, confluence, context_window, coralogix, counting, database, datadog, datetime, easy, elasticsearch, embeds, fast, frontend, grafana-dashboard, hard, integration, kafka, kubernetes, leaked-information, logs, loki, medium, metrics, network, newrelic, no-cicd, numerical, one-test, port-forward, prometheus, question-answer, regression, runbooks, slackbot, storage, toolset-limitation, traces, transparency


Commands: /eval · /rerun · /list

CLI: gh workflow run eval-regression.yaml --repo HolmesGPT/holmesgpt --ref claude/fix-missing-check-skip-otuou -f markers=regression -f filter=

@github-actions

github-actions Bot commented Feb 21, 2026 •

Copy link
Copy Markdown
Contributor

✅ Docker image ready for 8b74708d (built in 1m 1s)

⚠️ Warning: does not support ARM (ARM images are built on release only - not on every PR)

Use this tag to pull the image for testing.

📋 Copy commands

⚠️ Temporary images are deleted after 30 days. Copy to a permanent registry before using them:

gcloud auth configure-docker us-central1-docker.pkg.dev
docker pull us-central1-docker.pkg.dev/robusta-development/temporary-builds/holmes:8b74708d
docker tag us-central1-docker.pkg.dev/robusta-development/temporary-builds/holmes:8b74708d me-west1-docker.pkg.dev/robusta-development/development/holmes-dev:8b74708d
docker push me-west1-docker.pkg.dev/robusta-development/development/holmes-dev:8b74708d

Patch Helm values in one line (choose the chart you use):

HolmesGPT chart:

helm upgrade --install holmesgpt ./helm/holmes \
  --set registry=me-west1-docker.pkg.dev/robusta-development/development \
  --set image=holmes-dev:8b74708d

Robusta wrapper chart:

helm upgrade --install robusta robusta/robusta \
  --reuse-values \
  --set holmes.registry=me-west1-docker.pkg.dev/robusta-development/development \
  --set holmes.image=holmes-dev:8b74708d

@coderabbitai

coderabbitai Bot commented Feb 21, 2026 •

Copy link
Copy Markdown
Contributor

Walkthrough

Adds a runtime change detector job check-changes that emits should_test; build now depends on and runs only when should_test == 'true'; introduces a always-running build-and-test-gate job to aggregate status; updates actions to actions/checkout@v4 and actions/setup-python@v5.

Changes

Cohort / File(s) Summary
GitHub Actions workflow
.github/workflows/build-and-test.yaml
Added check-changes job that computes should_test output (docs-only skip and always-test exceptions); made build depend on check-changes and conditional on needs.check-changes.outputs.should_test == 'true'; added build-and-test-gate job that always runs and aggregates results; updated actions/checkout -> v4 and actions/setup-python -> v5.

Sequence Diagram(s)

sequenceDiagram
    participant Trigger as "Push / PR / workflow_dispatch"
    participant Runner as "GitHub Actions Runner"
    participant Check as "check-changes (job)"
    participant Build as "build (job)"
    participant Gate as "build-and-test-gate (job)"

    Trigger->>Runner: start workflow
    Runner->>Check: execute check-changes
    Check-->>Runner: outputs should_test (true/false)
    alt should_test == "true"
        Runner->>Build: run build job (needs: check-changes)
        Build-->>Runner: build result (success/failure)
    end
    Runner->>Gate: always run gate (depends on check-changes & build)
    alt should_test == "false"
        Gate-->>Runner: report success (docs-only / no build run)
    else build failed
        Gate-->>Runner: report failure
    else build success
        Gate-->>Runner: report success
    end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

Suggested reviewers

  • yuryrudey
  • arikalon1
  • moshemorad
🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title directly addresses the main objective of the PR: fixing the issue where PRs are blocked by a skipped build-and-test check by implementing a gate job that properly reports results for docs-only PRs.
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.

@netlify

netlify Bot commented Feb 21, 2026 •

Copy link
Copy Markdown

✅ Deploy Preview for holmes-docs ready!

Name Link
🔨 Latest commit 5b59ee2
🔍 Latest deploy log https://app.netlify.com/projects/holmes-docs/deploys/6999d6cdfb4c2400089b28db
😎 Deploy Preview https://deploy-preview-1611--holmes-docs.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

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/build-and-test.yaml:
- Line 18: Replace deprecated GitHub Action versions: update every occurrence of
"actions/checkout@v2" to "actions/checkout@v4" and every
"actions/setup-python@v2" to "actions/setup-python@v5" (these appear in the
workflow where the checkout/setup-python steps are defined, e.g., the lines
referencing actions/checkout and actions/setup-python); ensure the step names
and inputs remain unchanged and run a quick lint or actionlint check to confirm
no other required parameter changes for the newer major versions.
- Around line 30-32: Replace the git diff range that only inspects the last
commit (CHANGED_FILES=$(git diff --name-only HEAD~1..HEAD)) with a range using
the push event boundary (use github.event.before..HEAD) so all commits in the
push are considered; update the CHANGED_FILES assignment to use git diff
--name-only "${{ github.event.before }}..HEAD" and add a guard for the zero SHA
case (when github.event.before is all zeros) to fall back to setting
should_test=true or diffing the branch tip to ensure tests run for new branches.
- Around line 147-161: The build-and-test-gate currently treats a missing or
empty needs.check-changes.outputs.should_test as "docs-only" and exits zero,
masking failures in the check-changes job; update the gate step (job
build-and-test-gate) to first assert needs.check-changes.result == "success" (or
that needs.check-changes.outputs.should_test is explicitly set) and if not, echo
an error and exit 1, and then keep the existing should_test == "true" branch—use
the job/result symbol needs.check-changes.result and the output
needs.check-changes.outputs.should_test to implement these checks so a failing
check-changes job causes the gate to fail rather than silently pass.

Comment thread .github/workflows/build-and-test.yaml Outdated
Comment thread .github/workflows/build-and-test.yaml Outdated
Comment thread .github/workflows/build-and-test.yaml
- Upgrade actions/checkout to v4 and actions/setup-python to v5
- Use github.event.before..github.sha for push events to cover all
  commits in multi-commit pushes (with zero-SHA guard for new branches)
- Add check-changes.result guard in gate job to fail if the
  check-changes job itself crashes instead of silently passing

https://claude.ai/code/session_01Y9hWTJfZiQuNXuQyTvw7Uq
Signed-off-by: Claude <noreply@anthropic.com>

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

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/build-and-test.yaml (1)

38-38: Consider two-dot .. range for push events.

On line 38 the three-dot ... range ("$BEFORE"...${{ github.sha }}) computes the diff from the merge-base of BEFORE and HEAD to HEAD. For push events BEFORE is always on the same branch as HEAD, so in normal fast-forward pushes both are equivalent. But on a force-push (non-linear history) .. more precisely captures "every file that changed between the old and new branch tip", which is the intended semantics for deciding whether to run tests.

The previous review's suggested fix used .., and the PR event on line 26 correctly uses ... (merge-base is right for cross-branch comparisons). Using .. here would make the distinction explicit and match the prior recommendation.

♻️ Suggested change
-            CHANGED_FILES=$(git diff --name-only "$BEFORE"...${{ github.sha }})
+            CHANGED_FILES=$(git diff --name-only "$BEFORE"..${{ github.sha }})
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/build-and-test.yaml at line 38, The git diff invocation
that sets CHANGED_FILES uses a three-dot range (git diff --name-only
"$BEFORE"...${{ github.sha }}) which uses the merge-base and can miss intended
push-range semantics on non-linear force-pushes; update that command to use a
two-dot range (git diff --name-only "$BEFORE"..${{ github.sha }}) so
CHANGED_FILES reflects files changed between the old and new branch tips for
push events, keeping the existing three-dot usage for PR comparisons unchanged.
🤖 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/build-and-test.yaml:
- Line 38: The git diff invocation that sets CHANGED_FILES uses a three-dot
range (git diff --name-only "$BEFORE"...${{ github.sha }}) which uses the
merge-base and can miss intended push-range semantics on non-linear
force-pushes; update that command to use a two-dot range (git diff --name-only
"$BEFORE"..${{ github.sha }}) so CHANGED_FILES reflects files changed between
the old and new branch tips for push events, keeping the existing three-dot
usage for PR comparisons unchanged.

- Drop push-to-master trigger (redundant — PRs already gate on tests)
- Remove the zero-SHA guard and push event handling (no longer needed)
- Refactor path matching into SKIP_PATTERNS and ALWAYS_TEST arrays
  defined at the top of the script for easy maintenance

https://claude.ai/code/session_01Y9hWTJfZiQuNXuQyTvw7Uq
Signed-off-by: Claude <noreply@anthropic.com>

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

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/build-and-test.yaml (1)

46-51: ALWAYS_TEST matching uses exact string comparison — consider using case for consistency.

The SKIP_PATTERNS section uses case/glob matching, but ALWAYS_TEST uses [ "$file" = "$pattern" ]. If a glob pattern is ever added to ALWAYS_TEST, it won't match. Using case here too would make both arrays behave the same way.

Suggested change
            # Check always-test exceptions first
            for pattern in "${ALWAYS_TEST[@]}"; do
-             if [ "$file" = "$pattern" ]; then
+             case "$file" in
+               $pattern)
                SHOULD_TEST=true
                break 2
-             fi
+               ;;
+             esac
            done
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/build-and-test.yaml around lines 46 - 51, The ALWAYS_TEST
loop currently uses exact string equality ([ "$file" = "$pattern" ]) so glob
patterns won't match; change the inner comparison to use shell pattern matching
with a case statement (matching $file against $pattern) so ALWAYS_TEST behaves
like SKIP_PATTERNS, and ensure SHOULD_TEST is set and break 2 remains when a
match is found (refer to variables ALWAYS_TEST, file, pattern, and the
SHOULD_TEST flag).
🤖 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/build-and-test.yaml:
- Around line 46-51: The ALWAYS_TEST loop currently uses exact string equality
([ "$file" = "$pattern" ]) so glob patterns won't match; change the inner
comparison to use shell pattern matching with a case statement (matching $file
against $pattern) so ALWAYS_TEST behaves like SKIP_PATTERNS, and ensure
SHOULD_TEST is set and break 2 remains when a match is found (refer to variables
ALWAYS_TEST, file, pattern, and the SHOULD_TEST flag).

@aantn
aantn enabled auto-merge (squash) February 21, 2026 16:07
@aantn
aantn merged commit 263c5cb into master Feb 22, 2026
17 of 18 checks passed
@aantn
aantn deleted the claude/fix-missing-check-skip-otuou branch February 22, 2026 07:18
moshemorad pushed a commit that referenced this pull request Feb 22, 2026
Replace path filters on workflow triggers with a check-changes job that
uses git diff to detect source changes. The build matrix is conditional
on that check. A gate job (build-and-test-gate) always runs and reports
the correct status: pass for docs-only PRs, pass/fail based on actual
test results for code PRs.

Branch protection should require "build-and-test-gate" instead of the
individual build matrix jobs.

https://claude.ai/code/session_01Y9hWTJfZiQuNXuQyTvw7Uq
Signed-off-by: Claude <noreply@anthropic.com>

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **Chores**
* CI now detects whether source changes require tests and conditionally
runs the build only when needed.
* Added an always-running gate job that aggregates check and build
results for branch protection.
* Workflow sequencing updated so build depends on the change check;
tooling steps for checkout and Python setup were upgraded for improved
reliability.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Signed-off-by: Claude <noreply@anthropic.com>
Co-authored-by: Claude <noreply@anthropic.com>
Signed-off-by: Mohse Morad <moshemorad12340@gmail.com>
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.

3 participants