|
26 | 26 | ## Sub-Agent Waves |
27 | 27 |
|
28 | 28 | ### Wave 1 |
29 | | -- Create `.github/workflows/build-git-filter-repo.yml` file with full workflow definition |
30 | | - - Build matrix for 4 platforms: linux-x64, linux-aarch64, macos-x64, macos-aarch64 |
| 29 | + |
| 30 | +Execute the following steps **in order**. Steps 2 and 3 are git/CLI operations with no file commits. |
| 31 | + |
| 32 | +**Step 1: Create CI workflow file** |
| 33 | +- Create `.github/workflows/build-git-filter-repo.yml` with the full workflow definition: |
| 34 | + - Build matrix for 4 platforms: `linux-x64`, `linux-aarch64`, `macos-x64`, `macos-aarch64` |
31 | 35 | - PyInstaller to create standalone binaries |
32 | | - - SHA256 checksum generation for all artifacts |
| 36 | + - SHA256 checksum generation for each platform artifact |
33 | 37 | - GitHub release creation with checksums in release notes |
34 | | - - Files: `.github/workflows/build-git-filter-repo.yml` |
| 38 | +- Commit both the workflow file AND an index.json progress update together: |
| 39 | + - Workflow file: `.github/workflows/build-git-filter-repo.yml` |
| 40 | + - index.json: set `"progress": 50` (keep `"status": "open"`) |
| 41 | + - Commit message: `feature: add GitHub Actions CI workflow for git-filter-repo binary builds` |
35 | 42 |
|
36 | | -### Wave 2 |
37 | | -- Push the branch to GitHub remote to make the workflow available |
38 | | - - Command: `git push -u origin 2.1-build-git-filter-repo-ci` (or current branch name) |
39 | | - - Files: (git push only) |
| 43 | +**Step 2: Push branch to GitHub remote** |
| 44 | +- Run: `git push -u origin 2.1-build-git-filter-repo-ci` |
| 45 | +- This is a git push only — no new commit needed |
40 | 46 |
|
41 | | -### Wave 3 |
42 | | -- Trigger the workflow via GitHub Actions `workflow_dispatch` |
43 | | - - Command: `gh workflow run build-git-filter-repo.yml --ref <branch-name>` |
44 | | - - Wait for CI to complete and all 4 platform builds to succeed |
45 | | - - Command: Poll `gh run list --workflow=build-git-filter-repo.yml --limit 1` until status is `completed` |
46 | | - - Files: (CI execution only) |
| 47 | +**Step 3: Trigger CI workflow and wait for completion** |
| 48 | +- Trigger: `gh workflow run build-git-filter-repo.yml --ref 2.1-build-git-filter-repo-ci` |
| 49 | +- Poll until complete: `gh run list --workflow=build-git-filter-repo.yml --limit 1 --json status,conclusion` |
| 50 | +- Wait for all 4 platform jobs to succeed (status=completed, conclusion=success) |
| 51 | +- If any job fails, report the failure and stop |
47 | 52 |
|
48 | | -### Wave 4 |
49 | | -- Download SHA256 artifacts from the completed CI run |
50 | | - - Extract RELEASE_TAG from the CI build output |
51 | | - - Download `.sha256` files from GitHub release or CI artifacts |
52 | | - - Update `plugin/.git-filter-repo-config/release.conf` with: |
53 | | - - `RELEASE_TAG` (from CI run tag or "git-filter-repo-latest") |
54 | | - - `PLATFORM_SHA256_linux_x64` (from git-filter-repo-linux-x64.sha256) |
55 | | - - `PLATFORM_SHA256_linux_aarch64` (from git-filter-repo-linux-aarch64.sha256) |
56 | | - - `PLATFORM_SHA256_macos_x64` (from git-filter-repo-macos-x64.sha256) |
57 | | - - `PLATFORM_SHA256_macos_aarch64` (from git-filter-repo-macos-aarch64.sha256) |
58 | | - - Files: `plugin/.git-filter-repo-config/release.conf` |
| 53 | +**Step 4: Collect SHA256 hashes and update release.conf** |
| 54 | +- Download the `.sha256` artifact files from the completed CI run using `gh run download` |
| 55 | +- Update `plugin/.git-filter-repo-config/release.conf` with the real SHA256 values: |
| 56 | + - `RELEASE_TAG` — from the CI run's tag or release name |
| 57 | + - `PLATFORM_SHA256_linux_x64` — from `git-filter-repo-linux-x64.sha256` |
| 58 | + - `PLATFORM_SHA256_linux_aarch64` — from `git-filter-repo-linux-aarch64.sha256` |
| 59 | + - `PLATFORM_SHA256_macos_x64` — from `git-filter-repo-macos-x64.sha256` |
| 60 | + - `PLATFORM_SHA256_macos_aarch64` — from `git-filter-repo-macos-aarch64.sha256` |
| 61 | +- Final commit with both the updated release.conf AND the closed index.json: |
| 62 | + - release.conf: `plugin/.git-filter-repo-config/release.conf` |
| 63 | + - index.json: set `"status": "closed"`, `"progress": 100` |
| 64 | + - Commit message: `feature: update release.conf with real SHA256 hashes from CI builds` |
59 | 65 |
|
60 | 66 | ## Post-conditions |
61 | 67 | - [ ] `.github/workflows/build-git-filter-repo.yml` exists with all 4 platform build configs |
|
0 commit comments