Publish core plugins bundle with each dev build - #2
Merged
Conversation
Build the core plugins alongside the fat jar (gradle installPlugin, honoring NXF_PLUGINS_DIR) and attach them to each release as nextflow-<version>-plugins.tar.gz, whose top-level entries are the unpacked <pluginId>-<pluginVersion>/ directories — the layout the launcher keeps in $NXF_HOME/plugins. The NXF_DEV launcher mode (nextflow-io/nextflow#7219) downloads the bundle and uses it as NXF_PLUGINS_DIR, so core plugin changes in a PR are actually tested. The tarball is produced inside the unprivileged build job and handed to the publish job as a workflow artifact, preserving the split between compiling PR code and publishing.
The unpacked plugin layout keeps the manifest at <pluginId>-<pluginVersion>/classes/META-INF/MANIFEST.MF (the pf4j expanded-plugin layout), not at the plugin directory root.
grep -q exits at the first match, which kills the tar feeding the pipe and makes the pipeline fail under pipefail even on success. List the tarball once and grep the captured listing instead.
actions/download-artifact unpacks a lone artifact directly into the artifacts directory instead of a per-artifact sub-directory, so runs that built exactly one version (e.g. a manual dispatch of one PR) silently published nothing. Locate builds by their meta.json in both layouts.
tar -czv emits the member listing while writing the archive, so the layout checks no longer need a second full decompression with tar -tz.
ewels
force-pushed
the
claude/dev-builds-plugins-bundle-yuhrwt
branch
from
July 19, 2026 08:21
a598016 to
92bffda
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Every dev build now also produces and publishes a core plugins bundle as a release asset:
Its top-level entries are the unpacked core plugin directories, named
<pluginId>-<pluginVersion>/(e.g.nf-amazon-3.10.1/) — exactly the layout Nextflow keeps in its plugins cache ($NXF_HOME/plugins), each in the pf4j expanded-plugin form (classes/incl.META-INF/MANIFEST.MF,lib/). The asset is included inchecksums.sha256like the other assets.Why
nextflow-io/nextflow#7219 adds
NXF_DEV=master/NXF_DEV=pr-<n>support to the bash launcher. As of commit ee5ff50ca on that PR, the launcher downloads this bundle for each dev build and uses it asNXF_PLUGINS_DIR, so core plugins compiled from the PR/master source are used instead of the released plugin versions. Previously, PRs modifying core plugins were silently tested against released plugin code. If the asset is missing (releases published before this change), the launcher warns and falls back — so this is backward-compatible in both directions.How
installPlugingradle task withNXF_PLUGINS_DIR=$PWD/build/plugins, the same recipe as Nextflow's own e2e CI (test-e2e/run.sh). The task unpacks each plugin's distribution zip into<pluginId>-<pluginVersion>/under that directory.build/pluginsinto the asset (capturing the member listing in the same pass) and sanity-checks the layout: top-level entries must benf-*/directories and plugin manifests (classes/META-INF/MANIFEST.MF) must be present.publish-releases.shnow locates builds by theirmeta.jsonin both artifact layouts.actions/download-artifactunpacks a single artifact directly into the artifacts directory (no per-artifact sub-directory), so runs that built exactly one version — e.g. a manual dispatch of one PR — silently published nothing.NXF_DEVuses it automatically, that the plainNXF_BASE+NXF_VERform does not (released plugins apply), and updates the plugin-testing caveat.Verification
Dispatched this workflow (from this branch) with
pr=7219: run 29679556936 published v26.07.0-edge-pr-7219-ee5ff50 including the 181 MB plugins bundle. Checked:tar -tzfshows exactly the 10 core plugin dirs (nf-amazon-3.10.1/…nf-wave-1.21.1/), each withclasses/META-INF/MANIFEST.MFandlib/;checksums.sha256entry matches the downloaded asset.NXF_DEV=pr-7219, pinnedNXF_VER=26.07.0-edge-pr-7219-ee5ff50): the bundle is downloaded and unpacked to$NXF_HOME/framework/<version>/plugins(allnf-*dirs present) andinforuns without the "Cannot download the bundled plugins" warning.Note: the
latest/pr-7219pointer commit that the verification run's publish job pushed to this branch was dropped from the PR history — pointer updates belong to runs onmaster.🤖 Generated with Claude Code
https://claude.ai/code/session_018o1Eyego1ijQSea5894993