Skip to content

Phase 25: GitHub Release Workflow — automated binary releases - #43

Merged
MarcoFPO merged 1 commit into
mainfrom
feature/phase-25-release-workflow
Mar 14, 2026
Merged

Phase 25: GitHub Release Workflow — automated binary releases#43
MarcoFPO merged 1 commit into
mainfrom
feature/phase-25-release-workflow

Conversation

@MarcoFPO

Copy link
Copy Markdown
Owner

Summary

  • Release-Workflow triggered by v* Tags
  • Build: x86_64-linux mit flux-ftl + flux-mcp Binaries als tar.gz
  • GitHub Release mit maschinenlesbarem JSON-Body (Version, SHA256 Checksums)
  • Release-Script scripts/release.sh für Tag-Erstellung
  • aarch64 als TODO (LLVM Cross-Compilation Dependencies)

Test plan

  • YAML syntaktisch korrekt validiert
  • ci.yml unverändert
  • CI grün

Closes #38

🤖 Generated with Claude Code

Add release.yml workflow triggered by v* tags that builds flux-ftl
and flux-mcp binaries for linux-x86_64, creates a GitHub Release
with tar.gz archives and sha256 checksums, and a machine-readable
JSON release body. ARM64 cross-compilation is commented out as a
TODO due to LLVM-14/z3 native dependency complexity.

Includes scripts/release.sh for convenient tag creation.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
@gemini-code-assist

Copy link
Copy Markdown

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request establishes an automated release pipeline using GitHub Actions, designed to streamline the process of creating new software releases. By introducing a tag-triggered workflow and a helper script, it ensures consistent binary builds for x86_64-linux and provides structured release metadata, significantly enhancing the efficiency and reliability of our release management.

Highlights

  • Automated Release Workflow: Implemented a GitHub Actions workflow that automatically triggers binary releases upon the creation of v* tags.
  • Binary Packaging: Configured the workflow to build x86_64-linux binaries for flux-ftl and flux-mcp, packaging them as a tar.gz archive.
  • Structured Release Information: Ensured that GitHub Releases include a machine-readable JSON body containing the version and SHA256 checksums for the released assets.
  • Release Script: Introduced scripts/release.sh, a new utility script to simplify the process of creating and pushing version tags, which in turn initiates the release workflow.
  • Future Enhancements: Noted the future plan to support aarch64 builds, pending resolution of LLVM cross-compilation dependencies.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Changelog
  • scripts/release.sh
    • Added a new shell script to facilitate the creation and pushing of version tags, which then triggers the automated release workflow.
Ignored Files
  • Ignored by pattern: .github/workflows/** (1)
    • .github/workflows/release.yml
Activity
  • No human activity has been recorded on this pull request yet.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@gemini-code-assist gemini-code-assist 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.

Code Review

This pull request introduces a shell script to automate the creation of release tags, which in turn triggers a GitHub release workflow. The script is well-structured and uses good shell practices like set -euo pipefail. My review focuses on improving the script's robustness and usability. I've suggested adding checks to ensure the repository is in a clean and up-to-date state before tagging, which is crucial for creating reliable releases. I've also recommended adding validation for the version string to prevent accidental malformed tags. These changes will make the release process safer and more predictable.

Comment thread scripts/release.sh
Comment on lines +23 to +29
# Ensure we're on main and up to date
BRANCH=$(git rev-parse --abbrev-ref HEAD)
if [ "$BRANCH" != "main" ]; then
echo "Warning: Not on main branch (currently on $BRANCH)"
read -rp "Continue anyway? [y/N] " confirm
[ "$confirm" = "y" ] || exit 1
fi

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

The script should ensure the repository is in a clean state before creating a release tag. Currently, it doesn't check for uncommitted changes or if the local branch is synchronized with the remote. Tagging from a dirty or outdated state can lead to incorrect releases. I suggest adding checks for a clean working directory and ensuring the main branch is up-to-date with origin/main. The suggested change also improves the confirmation prompt to accept both 'y' and 'Y'.

Suggested change
# Ensure we're on main and up to date
BRANCH=$(git rev-parse --abbrev-ref HEAD)
if [ "$BRANCH" != "main" ]; then
echo "Warning: Not on main branch (currently on $BRANCH)"
read -rp "Continue anyway? [y/N] " confirm
[ "$confirm" = "y" ] || exit 1
fi
# Ensure we're on main, up to date, and the working directory is clean
if ! git diff-index --quiet HEAD --; then
echo "Error: You have uncommitted changes."
exit 1
fi
BRANCH=$(git rev-parse --abbrev-ref HEAD)
if [ "$BRANCH" = "main" ]; then
echo "Fetching latest changes from origin..."
git fetch origin main
if [ "$(git rev-parse HEAD)" != "$(git rev-parse origin/main)" ]; then
echo "Error: Your local main branch is not up to date with origin/main."
exit 1
fi
else
echo "Warning: Not on main branch (currently on $BRANCH)."
read -rp "Continue anyway? [y/N] " confirm
[[ "$confirm" =~ ^[Yy]$ ]] || exit 1
fi

Comment thread scripts/release.sh
Comment on lines +10 to +14
if [ -z "$VERSION" ]; then
echo "Usage: $0 <version>"
echo "Example: $0 1.0.0"
exit 1
fi

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

To prevent accidental malformed release tags, it's a good practice to validate the version string provided by the user. The script currently accepts any input. I suggest adding a check to ensure the version string conforms to a semantic versioning format like 1.2.3 or 1.2.3-beta.1.

Suggested change
if [ -z "$VERSION" ]; then
echo "Usage: $0 <version>"
echo "Example: $0 1.0.0"
exit 1
fi
if [ -z "$VERSION" ]; then
echo "Usage: $0 <version>"
echo "Example: $0 1.0.0"
exit 1
fi
if ! [[ "$VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+(-[a-zA-Z0-9.-]+)?$ ]]; then
echo "Error: Invalid version format. Expected format like 1.0.0 or 1.0.0-beta.1"
exit 1
fi

@MarcoFPO
MarcoFPO merged commit 419817c into main Mar 14, 2026
1 check passed
@MarcoFPO
MarcoFPO deleted the feature/phase-25-release-workflow branch March 14, 2026 20:08
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.

Phase 25: GitHub Release Workflow

1 participant