Skip to content

Add Nextflow 25.10.7 and 26.04.6 with a shared cluster config - #190

Merged
kennedydane merged 7 commits into
masterfrom
update/nextflow
Sep 23, 2026
Merged

kennedydane merged 7 commits into
masterfrom
update/nextflow

Conversation

@kennedydane

Copy link
Copy Markdown
Collaborator

Summary

Branched off fix/cromwell (#189); retarget to master once that merges. Ports the Nextflow work from #168 onto the current tree.

  • Fix nextflow module rendering. The task shadowed java_module with a per-version key that no entry supplies, so templating nextflow.lua failed. The include-level var now flows through, and the unused java_location is gone.
  • Ship a shared nextflow.config and nf-ilifu wrapper next to each installed version: SLURM profiles for the Main, HighMem and GPU queues with Singularity enabled. Users run nf-ilifu -profile main_medium run ... instead of carrying their own config.
  • Add Nextflow 25.10.7 and 26.04.6 from the self-contained -dist asset, so the runtime lives in /software rather than being downloaded into each user's ~/.nextflow on first run. Checksums computed from the release assets.
  • Load OpenJDK 22.0.1 for nextflow. Nextflow 25.04+ requires Java 17 to 26.

Test plan

  • uv run yamllint . and uv run ansible-lint (production profile) pass
  • ansible-playbook site.yaml --syntax-check passes
  • On prod: ansible-playbook site.yaml -t nextflow,nextflow26.04.6, module load nextflow/26.04.6, nf-ilifu -profile main_small run hello
  • Same for nextflow25.10.7

🤖 Generated with Claude Code

https://claude.ai/code/session_01FLJRERiNvARR3e8ftXi5TG

kennedydane and others added 3 commits September 23, 2026 10:51
The task shadowed java_module with item.java_module, but no entry in
the version list carries that key, so templating nextflow.lua failed.
The include in main.yml already supplies java_module for every version;
let it flow through. java_location was never used by this task.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FLJRERiNvARR3e8ftXi5TG
Deploy a cluster-wide Nextflow configuration next to each installed
version, with SLURM profiles for the Main, HighMem and GPU queues and
Singularity enabled, plus an nf-ilifu wrapper that runs nextflow with
that config so users need only pick a -profile. Ported from PR #168.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FLJRERiNvARR3e8ftXi5TG
Both are installed from the self-contained -dist asset rather than the
launcher script, so the runtime lives in /software instead of being
fetched into each user's ~/.nextflow on first run. Checksums computed
from the GitHub release assets. Nextflow 25.04+ needs Java 17 to 26;
OpenJDK 22.0.1 is the newest installed JDK in that range.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FLJRERiNvARR3e8ftXi5TG
Copilot AI lite review requested due to automatic review settings September 23, 2026 08:54
Base automatically changed from fix/cromwell to master September 23, 2026 08:56

Copilot AI 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.

Copilot review overview

🟡 Changes recommended

Load or otherwise expose Singularity before relying on these profiles.

Get a fresh assessment by requesting another Copilot review.

Review effort: Lite
Findings: 1 Medium severity

Open (1)
What changed in this PR

Adds Nextflow 25.10.7 and 26.04.6 with Java 22, shared SLURM profiles, and an nf-ilifu wrapper.

Changes:

  • Adds self-contained Nextflow distributions and checksums.
  • Deploys shared configuration and wrapper scripts.
  • Fixes module templating and registers OpenJDK 22.0.1.
File Description
ansible/​roles/​compiled/​templates/​nf-ilifu.sh Runs Nextflow with the shared configuration.
ansible/​roles/​compiled/​tasks/​common/​nextflow.yaml Deploys configuration and wrapper files.
ansible/​roles/​compiled/​tasks/​common/​main.yml Registers versions, checksums, and Java dependency.
ansible/​roles/​compiled/​files/​nextflow.config Defines SLURM profiles. Moderate issue (3 votes): the profiles require Singularity, but the Nextflow module does not load the singularity module.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread ansible/roles/compiled/files/nextflow.config
Every SLURM profile in the shared nextflow.config enables Singularity,
but the module only loaded Java, so a clean `module load nextflow/...`
could not run those profiles. Load the unversioned singularity module,
as cromwell.lua and the container modules do.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FLJRERiNvARR3e8ftXi5TG

Copilot AI 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.

Copilot review overview

🟡 Changes recommended

Fix the Java compatibility issue and enable NVIDIA visibility for GPU profiles.

Get a fresh assessment by requesting another Copilot review.

Review effort: Lite
Findings: 1 High severity · 1 Medium severity

Open (2)
Resolved since last review (1)

Comment thread ansible/roles/compiled/tasks/common/main.yml Outdated
Comment thread ansible/roles/compiled/files/nextflow.config
kennedydane and others added 2 commits September 23, 2026 11:09
Each Nextflow release supports a bounded Java range: 22.10 tops out at
Java 18, 23.04 at 20, while 25.04 and later need 17 to 26. A single
include-level java_module cannot satisfy all six entries, and bumping
it to 22.0.1 would have broken the 22.10.7 and 23.04.4 modules.

Restore the per-version item.java_module the task originally expected
and give every entry the key: 18.0.2 for the three older releases, as
they had, and 22.0.1 for 25.04.6 and newer.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FLJRERiNvARR3e8ftXi5TG
The cluster apptainer.conf keeps `always use nv = no`, so a task on a
GPU allocation sees no NVIDIA devices unless the container is started
with --nv. Set singularity.runOptions on both GPU profiles, matching
the --nv the GPU container wrappers in this repo already use.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FLJRERiNvARR3e8ftXi5TG
@kennedydane
kennedydane requested a lite review from Copilot September 23, 2026 09:09
@kennedydane
kennedydane merged commit 36a1f55 into master Sep 23, 2026
2 checks passed
@kennedydane
kennedydane deleted the update/nextflow branch September 23, 2026 09:11

Copilot AI 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.

Copilot review overview

🟢 Approval recommended

One minor wrapper command-order nit remains, with no blocking issues identified.

Review effort: Lite
Findings: None

Resolved since last review (2)

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