Add GitHub release workflow for multi-platform builds#35
Conversation
Creates release binaries for Mac ARM64, Windows AMD64/ARM64, and Linux AMD64 when tags are pushed. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
Pull Request Review: GitHub Release WorkflowI've reviewed the proposed GitHub Actions workflow for multi-platform releases. Overall, this is a solid implementation with good cross-platform coverage. Here are my findings: ✅ Strengths
🔍 Issues & Recommendations1. Missing macOS x86_64 Target (Medium Priority)Your workflow only includes - target: x86_64-apple-darwin
os: macos-latest
name: hashrust-macos-amd64Many Mac users still use Intel-based systems. You could also create universal binaries using 2. Cargo Build Optimization (Low Priority)The workflow doesn't leverage the project's optimized release profile settings from [profile.release]
panic = 'abort'
codegen-units = 1
lto = 'fat'
strip = trueThese settings are already applied when you run - name: Cache cargo registry
uses: actions/cache@v4
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ${{ runner.os }}-cargo-${{ matrix.target }}-${{ hashFiles('**/Cargo.lock') }}3. Cross-Compilation on Windows (High Priority - Potential Bug)The ARM64 Windows build runs on Fix: Either:
Example fix: - name: Build (cross-compile)
if: matrix.target == 'aarch64-pc-windows-msvc'
run: |
cargo install cross
cross build --release --target ${{ matrix.target }}
- name: Build (native)
if: matrix.target != 'aarch64-pc-windows-msvc'
run: cargo build --release --target ${{ matrix.target }}4. No Checksum Generation (Medium Priority)Release binaries should include SHA256 checksums for verification. Consider adding: - name: Generate checksum
run: |
sha256sum ${{ matrix.name }} > ${{ matrix.name }}.sha2565. Missing Test Step (Medium Priority)Your existing CI runs tests ( - name: Test binary
if: matrix.os != 'windows-latest'
run: ./${{ matrix.name }} --help
- name: Test binary (Windows)
if: matrix.os == 'windows-latest'
run: .\${{ matrix.name }} --help6. Binary Naming Consistency (Low Priority - Style)Windows binaries use 🔒 Security Assessment
🚀 Performance Considerations
🧪 Test Coverage
📋 SummaryMust Fix Before Merge:
Should Fix:
Nice to Have:
The workflow is well-structured and shows good understanding of GitHub Actions patterns. With the cross-compilation fix, this will work well for your release process. |
Creates release binaries for Mac ARM64, Windows AMD64/ARM64, and Linux AMD64 when tags are pushed.
🤖 Generated with Claude Code