Skip to content

test slurm integration#121

Closed
dennisklein wants to merge 2 commits into
FairRootGroup:masterfrom
dennisklein:slurm-ci
Closed

test slurm integration#121
dennisklein wants to merge 2 commits into
FairRootGroup:masterfrom
dennisklein:slurm-ci

Conversation

@dennisklein

Copy link
Copy Markdown
Member

test

@coderabbitai

coderabbitai Bot commented Mar 30, 2026

Copy link
Copy Markdown
📝 Walkthrough

Walkthrough

Adds GitHub Actions CI and Docker image build workflows for automated testing across multiple Fedora/GCC variants and containerized builds. Consolidates legacy Singularity bootstrap definitions into a unified multi-stage Docker Dockerfile. Updates test configurations to parameterize DDS RMS settings. Improves test fixture robustness with safer collection lookups.

Changes

Cohort / File(s) Summary
CI Workflows
.github/workflows/ci.yml, .github/workflows/docker-images.yml
New GitHub Actions workflows: CI job runs tests across Fedora versions with sanitizers and Slurm integration; Docker Images job builds and pushes container variants to GHCR.
Docker Containerization
utils/ci/Dockerfile.fedora
New multi-stage Dockerfile replacing legacy Singularity definitions; supports Fedora 39–42, optional Boost builds, FairRoot dependencies, and dedicated Slurm/SIND node variants.
Test Configuration Updates
tests/cmd_set_1.cfg.in, tests/cmd_set_1_run.cfg.in, tests/cmd_set_2.cfg.in, tests/cmd_set_3_with_script.cfg.in
Parameterize DDS RMS settings by replacing hardcoded XML strings with @DDS_RMS@ placeholder in submit and run commands.
CMake & Test Infrastructure
ODCTest.cmake, tests/CMakeLists.txt, tests/odc-fixtures.h, tests/slurm.cfg
Conditionally pass DDS_RMS via CMake, define default RMS configuration, replace unsafe .at() with .find() in collection lookup, add Slurm wall-clock time limit.
Removed Legacy Definitions
utils/ci/centos.8stream.alice.def, utils/ci/fedora36_dds3.7.22.def, utils/ci/fedora37_dds3.7.22.def, utils/ci/fedora38_dds3.12.def
Delete obsolete Singularity/Apptainer bootstrap definitions replaced by unified Docker Dockerfile.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

🚥 Pre-merge checks | ✅ 1 | ❌ 2

❌ Failed checks (2 inconclusive)

Check name Status Explanation Resolution
Title check ❓ Inconclusive The title 'test slurm integration' is vague and generic, using a non-descriptive term 'test' that doesn't clearly convey what the changeset accomplishes. Revise the title to be more descriptive, such as 'Add SLURM integration CI workflow' or 'Add sind-action based SLURM cluster testing workflow'.
Description check ❓ Inconclusive The description 'test' is extremely vague and generic, providing no meaningful information about the changeset or its purpose. Expand the description to explain what CI workflows are being added, how SLURM testing is integrated, and why these changes are being made.
✅ Passed checks (1 passed)
Check name Status Explanation
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: 1

🧹 Nitpick comments (2)
.github/workflows/sindtest.yml (2)

8-10: Add a job timeout.

No timeout is specified for this job, which defaults to 360 minutes (6 hours). For a cluster provisioning and verification workflow, this seems excessive and could waste resources if the job hangs.

⏱️ Proposed addition of timeout
   sindtest:
     runs-on: ubuntu-latest
+    timeout-minutes: 30
     steps:
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/sindtest.yml around lines 8 - 10, The sindtest job lacks a
timeout and can hang for up to the default 360 minutes; add a timeout-minutes
entry under the sindtest job (next to runs-on/steps) to cap runtime (e.g.,
timeout-minutes: 60) so the GitHub Actions job will be automatically cancelled
if it exceeds the specified limit.

3-5: Consider adding path filters or branch restrictions.

The workflow triggers on all pushes and pull requests without any filters. If SIND cluster testing is only necessary for specific file changes or branches, consider adding path filters or branch restrictions to optimize CI resource usage.

💡 Example with path filters
 on:
   push:
+    paths-ignore:
+      - '**.md'
+      - 'docs/**'
   pull_request:
+    paths-ignore:
+      - '**.md'
+      - 'docs/**'
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/sindtest.yml around lines 3 - 5, The workflow currently
triggers on all pushes and pull requests via the on: push: and on: pull_request:
entries; restrict these by adding appropriate path filters (paths or
paths-ignore) under push and pull_request or branch restrictions
(branches/branches-ignore) to limit runs to relevant files or target branches;
update the existing on: push and on: pull_request blocks (the workflow trigger
definitions) to include the desired paths or branches so the SIND cluster tests
run only when specified files change or on selected branches.
🤖 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/sindtest.yml:
- Around line 13-20: The workflow references a non-existent action
"GSI-HPC/sind-action@v1" which will break CI; open
.github/workflows/sindtest.yml, locate the uses: "GSI-HPC/sind-action@v1" line
and either correct it to the actual repository/action name (or tag) that
provides the clusters input or replace it with a valid action (or a local action
path ./action) that supports the same "clusters" input; ensure the chosen action
exists in GitHub (correct owner/repo and version) and update the uses string
accordingly so the workflow can resolve and run successfully.

---

Nitpick comments:
In @.github/workflows/sindtest.yml:
- Around line 8-10: The sindtest job lacks a timeout and can hang for up to the
default 360 minutes; add a timeout-minutes entry under the sindtest job (next to
runs-on/steps) to cap runtime (e.g., timeout-minutes: 60) so the GitHub Actions
job will be automatically cancelled if it exceeds the specified limit.
- Around line 3-5: The workflow currently triggers on all pushes and pull
requests via the on: push: and on: pull_request: entries; restrict these by
adding appropriate path filters (paths or paths-ignore) under push and
pull_request or branch restrictions (branches/branches-ignore) to limit runs to
relevant files or target branches; update the existing on: push and on:
pull_request blocks (the workflow trigger definitions) to include the desired
paths or branches so the SIND cluster tests run only when specified files change
or on selected branches.
🪄 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: CHILL

Plan: Pro

Run ID: b3e382dd-4a5c-4bd7-b69a-5a47e2137827

📥 Commits

Reviewing files that changed from the base of the PR and between f4233f6 and 707c3c8.

📒 Files selected for processing (1)
  • .github/workflows/sindtest.yml

Comment thread .github/workflows/sindtest.yml Outdated
rbx and others added 2 commits March 31, 2026 12:43
- Add CI workflow for build/test matrix (fedora 39-42, boost 1.90, sanitizers)
- Add Docker Images workflow for building/pushing CI container images to GHCR
- Add parameterized multi-stage Dockerfile.fedora replacing per-distro Singularity defs
- Remove obsolete Singularity definition files (centos 8stream, fedora 36/37/38)
- Install boost from dnf by default, build from source only for boost 1.90 variant
- Skip image push on pull requests
- Upload build/test logs as artifacts on failure
- Guard mRuntimeCollectionIndex lookup in test fixture to prevent out-of-range access
- Add sind-node stage to Dockerfile.fedora (systemd, sshd, munge, slurm)
- Add fedora42-sind image to docker-images workflow
- Add slurm-integration job to CI using sind-action
- Make DDS RMS configurable via DDS_RMS CMake variable (defaults to localhost)
- Replace hardcoded localhost resource strings in test configs with @DDS_RMS@
@dennisklein dennisklein changed the title ci: add sindtest workflow using sind-action test slurm integration Mar 31, 2026

@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.

🧹 Nitpick comments (1)
.github/workflows/ci.yml (1)

91-98: Consider quoting the DDS_RMS value to prevent shell interpolation issues.

The embedded XML in -DDDS_RMS="..." contains angle brackets. While this should work as written with the surrounding quotes, ensure the value is properly escaped if it contains special characters in future modifications.

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

In @.github/workflows/ci.yml around lines 91 - 98, The DDS_RMS argument
containing embedded XML can be misinterpreted by the shell; update the "Build
and test" step to pass -DDDS_RMS safely by quoting/escaping the value (for
example wrap the entire CMake option in single quotes and keep the XML in double
quotes, or use a YAML multiline string or an env var to hold the XML) so the XML
angle brackets aren't interpreted by the shell; apply this change where
-DDDS_RMS is set in the sind exec odc command to ensure the value is passed
unchanged to ctest.
🤖 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/ci.yml:
- Around line 91-98: The DDS_RMS argument containing embedded XML can be
misinterpreted by the shell; update the "Build and test" step to pass -DDDS_RMS
safely by quoting/escaping the value (for example wrap the entire CMake option
in single quotes and keep the XML in double quotes, or use a YAML multiline
string or an env var to hold the XML) so the XML angle brackets aren't
interpreted by the shell; apply this change where -DDDS_RMS is set in the sind
exec odc command to ensure the value is passed unchanged to ctest.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: a6a1c629-9198-4fd7-a74a-933cd2f930b9

📥 Commits

Reviewing files that changed from the base of the PR and between 5f8f37b and 1f486f4.

📒 Files selected for processing (15)
  • .github/workflows/ci.yml
  • .github/workflows/docker-images.yml
  • ODCTest.cmake
  • tests/CMakeLists.txt
  • tests/cmd_set_1.cfg.in
  • tests/cmd_set_1_run.cfg.in
  • tests/cmd_set_2.cfg.in
  • tests/cmd_set_3_with_script.cfg.in
  • tests/odc-fixtures.h
  • tests/slurm.cfg
  • utils/ci/Dockerfile.fedora
  • utils/ci/centos.8stream.alice.def
  • utils/ci/fedora36_dds3.7.22.def
  • utils/ci/fedora37_dds3.7.22.def
  • utils/ci/fedora38_dds3.12.def
💤 Files with no reviewable changes (4)
  • utils/ci/fedora37_dds3.7.22.def
  • utils/ci/fedora36_dds3.7.22.def
  • utils/ci/centos.8stream.alice.def
  • utils/ci/fedora38_dds3.12.def
✅ Files skipped from review due to trivial changes (4)
  • tests/slurm.cfg
  • tests/cmd_set_2.cfg.in
  • tests/cmd_set_3_with_script.cfg.in
  • tests/cmd_set_1.cfg.in

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.

2 participants