Skip to content

chore: add S3 release packaging#1

Merged
congziqi77 merged 2 commits into
mainfrom
codex/s3-release-packaging
Jun 1, 2026
Merged

chore: add S3 release packaging#1
congziqi77 merged 2 commits into
mainfrom
codex/s3-release-packaging

Conversation

@congziqi77
Copy link
Copy Markdown
Owner

@congziqi77 congziqi77 commented Jun 1, 2026

Adds S3 packaging workflow and local release scripts for internal Git-AI builds.

Summary by CodeRabbit

  • New Features

    • Added GitHub Actions workflow for automated release builds and S3 publishing with configurable deployment options
    • Installation scripts now support downloading from custom base URLs
  • Documentation

    • Added comprehensive S3 release packaging guide with deployment and verification steps
  • Bug Fixes

    • Improved handling of empty commit mappings with proper event tracking
  • Tests

    • Added regression test for rebase mapping scenarios
  • Chores

    • Added local release tooling script for S3 deployment

congziqi added 2 commits June 1, 2026 15:33
Persist skipped rebase events when a completed rebase segment produces no commit mapping, and treat those skipped events as processed so stale no-op segments cannot be selected by later rebases to the same target.

Prefer semantic rebase heads before target-only segment matching to reduce stale segment selection when multiple rebases share the same target hint.

Fixes git-ai-project#1476
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Jun 1, 2026

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 8f09fc0b-afe6-4ec8-bb35-8eaa41f450fa

📥 Commits

Reviewing files that changed from the base of the PR and between 4c3be1c and 6133e83.

📒 Files selected for processing (10)
  • .github/workflows/release-s3.yml
  • install.ps1
  • install.sh
  • s3-release-packaging-guide.md
  • scripts/release-s3-local.sh
  • src/daemon.rs
  • src/git/repo_state.rs
  • src/git/rewrite_log.rs
  • tests/integration/main.rs
  • tests/integration/rebase_empty_mapping.rs

📝 Walkthrough

Walkthrough

This PR introduces S3-based release distribution infrastructure and improves rebase event tracking. It adds a GitHub Actions workflow and local Bash script for packaging and uploading binaries to S3, updates installer scripts to support custom base URLs, documents the release workflow, extends the rewrite log with a skipped-rebase event, and enhances daemon head resolution to prevent empty-mapping collisions with a regression test.

Changes

S3 Release and Installation Infrastructure

Layer / File(s) Summary
Installer script base URL support
install.sh, install.ps1
Both installers now accept a BASE_URL placeholder that release builds populate with a custom S3 or internal endpoint, directing binary downloads away from GitHub Releases when configured.
Local release packaging and S3 upload script
scripts/release-s3-local.sh
New Bash script orchestrates platform-specific binary packaging, SHA256 checksum generation, install script templating with injected version/base-URL/checksums, optional channel releases, and S3 uploads via aws or s3cmd, with dry-run and multi-platform aggregation support.
GitHub Actions release-to-S3 workflow
.github/workflows/release-s3.yml
Manual release workflow builds and strips Linux (musl), macOS (Intel and ARM), and Windows binaries across a job matrix, generates checksums and templated install scripts, uploads artifacts, and syncs the release bundle to S3 when not in dry_run.
Release packaging and installation documentation
s3-release-packaging-guide.md
Comprehensive guide covering prerequisites, dry-run and production upload procedures, post-deployment verification, environment parameter reference, multi-platform aggregation workflow, version number semantics, and troubleshooting.

Rebase Skipped Event and Semantic Head Resolution

Layer / File(s) Summary
RebaseSkipped event type and constructor
src/git/rewrite_log.rs
RewriteLogEvent gains a RebaseSkipped variant wrapping RebaseSkippedEvent, which carries original head, new head, interactive flag, and skip reason (e.g., "empty_commit_mapping").
Semantic head matching in rebase segment resolution
src/git/repo_state.rs
resolve_rebase_segment_for_worktree accepts optional semantic head hints and uses a three-stage fallback: exact (original_head, new_head) match, then new_head-only, then original_head-only, before falling back to existing heuristics.
Daemon rebase event synthesis and empty mapping handling
src/daemon.rs
Daemon computes semantic heads from RebaseComplete and PullCompleted events, passes them into stable head resolution, emits RebaseSkipped events (instead of silently skipping) when commit mapping is empty, and treats skipped rebases as already-processed.
Regression test for empty rebase mapping
tests/integration/rebase_empty_mapping.rs, tests/integration/main.rs
Integration test verifies that later real rebases do not adopt stale no-op reflog segments, preserving AI authorship notes and metadata across multiple rebase operations.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Poem

🐰 With S3 buckets and semantic heads so clear,
New releases hop to the cloud without fear.
Empty mappings now tracked, no more silent skips—
Just checksums and channels on eager deployment ships! 🚀

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/s3-release-packaging

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@congziqi77 congziqi77 merged commit 35518f2 into main Jun 1, 2026
19 of 21 checks passed
@coderabbitai coderabbitai Bot mentioned this pull request Jun 1, 2026
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.

1 participant