Skip to content

Commit d7843ba

Browse files
alixinnevtavernier
authored andcommitted
ci: use git bundles instead of patches
Using a patch with `git am` changes the commit ID. Using a bundle allows transferring a commit from one job to the other and preserving its SHA. See https://git-scm.com/docs/git-bundle.
1 parent c9611e3 commit d7843ba

File tree

2 files changed

+22
-20
lines changed

2 files changed

+22
-20
lines changed

.github/actions/apply-version-patch/action.yml .github/actions/apply-version-bundle/action.yml

+5-7
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
name: apply-version-patch
2-
description: Apply a version patch contained in a release artifact
1+
name: apply-version-bundle
2+
description: Apply a version bundle contained in a release artifact
33
inputs:
44
new_release:
55
description: Was a new release created
66
version:
77
description: Git tag of the created release
8-
patch_file:
9-
description: Path to the patch file in the artifact
8+
bundle_file:
9+
description: Path to the bundle file in the artifact
1010
artifact_name:
1111
description: Artifact name to retrieve
1212
runs:
@@ -18,9 +18,7 @@ runs:
1818
if: inputs.new_release == 'true'
1919

2020
- run: |
21-
git config user.name "$GIT_USER"
22-
git config user.email "$GIT_USER_EMAIL"
23-
git am --committer-date-is-author-date ${{ inputs.patch_file }}
21+
git pull ${{ inputs.bundle_file }} HEAD:$(git rev-parse --abbrev-ref HEAD)
2422
git tag ${{ inputs.version }}
2523
shell: bash
2624
if: inputs.new_release == 'true'

.github/workflows/build.yml

+17-13
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ jobs:
2020
outputs:
2121
new_release: ${{ steps.outputs.outputs.new_release }}
2222
version: ${{ steps.outputs.outputs.version }}
23-
patch_file: ${{ steps.outputs.outputs.patch_file }}
23+
bundle_file: ${{ steps.outputs.outputs.bundle_file }}
2424
artifact_name: ${{ steps.outputs.outputs.artifact_name }}
2525
check_success: ${{ steps.outputs.outputs.check_success }}
2626

@@ -66,9 +66,13 @@ jobs:
6666
# Generate changelog
6767
cog changelog --at ${{ steps.release.outputs.version }} -t full_hash > GITHUB_CHANGELOG.md
6868
69+
# Generate bundle for latest commit
70+
bundle_file=release.bundle
71+
git bundle create $bundle_file HEAD
72+
6973
echo "new_release=true" >> $GITHUB_OUTPUT
7074
echo "version=${{ steps.release.outputs.version }}" >> $GITHUB_OUTPUT
71-
echo "patch_file=$(git format-patch HEAD^)" >> $GITHUB_OUTPUT
75+
echo "bundle_file=$bundle_file" >> $GITHUB_OUTPUT
7276
echo "artifact_name=release-commit" >> $GITHUB_OUTPUT
7377
echo "check_success=true" >> $GITHUB_OUTPUT
7478
elif [[ "${{ steps.check.outcome }}" != "success" ]]; then
@@ -88,7 +92,7 @@ jobs:
8892
with:
8993
name: ${{ steps.outputs.outputs.artifact_name }}
9094
path: |
91-
${{ steps.outputs.outputs.patch_file }}
95+
${{ steps.outputs.outputs.bundle_file }}
9296
GITHUB_CHANGELOG.md
9397
if: steps.outputs.outputs.new_release == 'true'
9498

@@ -102,11 +106,11 @@ jobs:
102106

103107
steps:
104108
- uses: actions/checkout@v4
105-
- uses: ./.github/actions/apply-version-patch
109+
- uses: ./.github/actions/apply-version-bundle
106110
with:
107111
new_release: ${{ needs.version.outputs.new_release }}
108112
version: ${{ needs.version.outputs.version }}
109-
patch_file: ${{ needs.version.outputs.patch_file }}
113+
bundle_file: ${{ needs.version.outputs.bundle_file }}
110114
artifact_name: ${{ needs.version.outputs.artifact_name }}
111115

112116
- uses: actions/cache@v3
@@ -159,11 +163,11 @@ jobs:
159163

160164
steps:
161165
- uses: actions/checkout@v4
162-
- uses: ./.github/actions/apply-version-patch
166+
- uses: ./.github/actions/apply-version-bundle
163167
with:
164168
new_release: ${{ needs.version.outputs.new_release }}
165169
version: ${{ needs.version.outputs.version }}
166-
patch_file: ${{ needs.version.outputs.patch_file }}
170+
bundle_file: ${{ needs.version.outputs.bundle_file }}
167171
artifact_name: ${{ needs.version.outputs.artifact_name }}
168172

169173
- name: Run tests
@@ -196,11 +200,11 @@ jobs:
196200

197201
steps:
198202
- uses: actions/checkout@v4
199-
- uses: ./.github/actions/apply-version-patch
203+
- uses: ./.github/actions/apply-version-bundle
200204
with:
201205
new_release: ${{ needs.version.outputs.new_release }}
202206
version: ${{ needs.version.outputs.version }}
203-
patch_file: ${{ needs.version.outputs.patch_file }}
207+
bundle_file: ${{ needs.version.outputs.bundle_file }}
204208
artifact_name: ${{ needs.version.outputs.artifact_name }}
205209

206210
- name: Build windows wheels
@@ -250,11 +254,11 @@ jobs:
250254

251255
steps:
252256
- uses: actions/checkout@v4
253-
- uses: ./.github/actions/apply-version-patch
257+
- uses: ./.github/actions/apply-version-bundle
254258
with:
255259
new_release: ${{ needs.version.outputs.new_release }}
256260
version: ${{ needs.version.outputs.version }}
257-
patch_file: ${{ needs.version.outputs.patch_file }}
261+
bundle_file: ${{ needs.version.outputs.bundle_file }}
258262
artifact_name: ${{ needs.version.outputs.artifact_name }}
259263

260264
- name: Build CLI binary
@@ -303,11 +307,11 @@ jobs:
303307
with:
304308
token: ${{ secrets.GH_PAT }}
305309

306-
- uses: ./.github/actions/apply-version-patch
310+
- uses: ./.github/actions/apply-version-bundle
307311
with:
308312
new_release: ${{ needs.version.outputs.new_release }}
309313
version: ${{ needs.version.outputs.version }}
310-
patch_file: ${{ needs.version.outputs.patch_file }}
314+
bundle_file: ${{ needs.version.outputs.bundle_file }}
311315
artifact_name: ${{ needs.version.outputs.artifact_name }}
312316

313317
- name: Download build artifacts (x86_64-unknown-linux-gnu)

0 commit comments

Comments
 (0)