Repository navigation
feat(action): expose release outputs - #1353
Conversation
The file name joined four hashes and the variant (about 245 bytes), and the staging file appended .<pid>.tmp. With a seven-digit PID the staging name passed the 255-byte filename limit, the write failed silently, and check never hit its cache. Name entries by a hash of the key instead; old entries age out through the existing prune. Signed-off-by: BryanFRD <bryanferrando59@gmail.com>
Add --output-format github|dotenv|json and --output-file to ferrflow release. They report whether the run created tags and which packages it released, so later CI steps can gate on it. Dry runs and PR-mode runs that only open the release PR report released=false. The action passes --output-format github and exposes the released and releases outputs. Closes #205 Signed-off-by: BryanFRD <bryanferrando59@gmail.com>
There was a problem hiding this comment.
Blocking: removing finish() breaks ferrflow shadow-release output. Shadow runs with dry_run: false, so finish used to call out.print() for it. run_shadow_release (src/monorepo/run/mod.rs:108, outside the diff) still ends in .map(|_| ()), so the per-package lines and "Nothing to release." are now dropped without a word, and only the shadow summary gets printed. check and release were moved over to print through the caller, but this third caller was missed. Fix:
run_with_flags(root, config, flags, access, &[], &[], &mut timing).map(|out| out.print())Everything else checks out. creates_tags() is correct for finalizing (mode None) and resumed releases. Dry-run, shadow and PR-open runs report released=false, and the github and dotenv writers append and truncate as documented.
Signed-off-by: BryanFRD <bryanferrando59@gmail.com>
run_release_logic no longer prints on non-dry runs, and run_shadow_release discarded the returned output, so shadow-release lost its per-package lines. Signed-off-by: BryanFRD <bryanferrando59@gmail.com>
There was a problem hiding this comment.
Fixed in 32b1d8b: run_shadow_release prints its output again, so the shadow-release output regression from my last review is gone. Nothing new in the merge from main.
Signed-off-by: BryanFRD <bryanferrando59@gmail.com>
## [7.34.0] - 2026-10-26 ### Features - feat(action): expose release outputs (#1353)
Summary
ferrflow releasecan now report whether it released anything and what it tagged, and the action exposes that asreleasedandreleasesoutputs so later steps can gate on it.Related Issue
Closes #205
Changes
ferrflow release --output-format github|dotenv|jsonwith--output-file <PATH>:githubappendsreleased=/releases=to$GITHUB_OUTPUT(or--output-file)dotenvwritesFERRFLOW_RELEASED/FERRFLOW_RELEASESfor GitLabartifacts:reports:dotenvjsonwrites{"released":...,"releases":[...]}releasesis[{"name","version","tag"}], built from the tags the run actually created. Dry runs and PR-mode runs that only open the release PR reportreleased=false.run_release_logicnow always returns its output instead of printing on non-dry runs, soreleasecan write the outputs after a successful run (including after push-rejection retries).action.yml:id: ferrflowon the release step,released/releasesoutputs. Whenversion:pins a binary without--output-format, the step warns and leaves the outputs empty instead of failing.versionoutput that never existed; replaced with the real outputs and gate/monorepo examples. CLI reference, a GitLab dotenv section, and a README snippet.fix(cache): cache entries were named by joining four hashes (~245 bytes); the staging file's.<pid>.tmpsuffix pushed it past the 255-byte filename limit on hosts with 7-digit PIDs, so the write failed silently andchecknever hit its cache. Entries are now named by a hash of the key. Separate commit.Checklist
cargo test)cargo clippy)cargo fmt)