Add release workflow and Dockerfile#1
Merged
Conversation
Release workflow builds cross-platform binaries (Linux x86_64/aarch64, macOS x86_64/aarch64, Windows x86_64) and multi-arch Docker images to GHCR on every push to main to catch breakage. On workflow_dispatch, it also tags the version from Cargo.toml, creates a GitHub Release with binaries attached, and pushes tagged Docker manifests. Crate publish to crates.io is scaffolded but gated off pending first manual publish and trusted-publisher setup. Dockerfile is a two-stage build: rust:1-bookworm builder -> debian bookworm-slim runtime with zlib1g (for the native-zlib feature), ca-certificates, and procps (ps is needed by Nextflow trace). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Reflow the %GC checked_div chain added in 79a2ae8 so `cargo fmt --check` passes. Not related to the release/Docker work on this branch, but unblocks CI on the PR. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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.
Summary
.github/workflows/release.yml— multi-arch build/release pipeline adapted from ruSTAR. Runs binary + Docker builds on every push tomainto catch breakage; creates GitHub Release + tags Docker manifests only onworkflow_dispatch.ghcr.io/ewels/fastqc-rustwithvX.Y.Z,X.Y,X,latest,devtags.publish-cratejob scaffolded but gatedif: false. Comment explains the bootstrap path (firstcargo publishmanually, then configure trusted publisher, then flip the gate).Cargo.toml;Cargo.lockis checked to match; tag collision is caught before any builds upload.Dockerfile— two-stage build,rust:1-bookworm->debian:bookworm-slim. Installszlib1g-dev/zlib1gfor the defaultnative-zlibfeature, plusca-certificatesandprocps(Nextflow'stracemode needsps). Final image ~107 MB.Built & smoke-tested the Docker image locally (
fastqc --version,ps --versionboth work).Test plan
mainpush runsbuild-binaries+docker-build+docker-mergegreen end-to-end.devtag appears atghcr.io/ewels/fastqc-rust:devand is multi-arch.Cargo.tomlto a new version on a follow-up PR, merge, then triggerReleaseviaworkflow_dispatch— expect a newvX.Y.Zgit tag, a GitHub Release with 5 binary tarballs, and tagged Docker manifests (vX.Y.Z,X.Y,X,latest).cargo publishmanually once to bootstrap the crate on crates.io, then wire up crates.io trusted publisher and flippublish-crate'sif: false.