Skip to content

Commit 78fa5d0

Browse files
committed
fix(ci): use cargo-zigbuild for cross-compilation in publish workflow
Replace BUILD_FROM_SOURCE=1 (QEMU emulation, 45+ min) with native cross-compilation using cargo-zigbuild via stage-prebuilt-binaries.sh. Docker now just copies prebuilt binaries (seconds) instead of compiling Rust from source under QEMU emulation. Assisted-By: Claude (Anthropic AI) <noreply@anthropic.com> Signed-off-by: Paolo Dettori <dettori@us.ibm.com>
1 parent 1ee1f97 commit 78fa5d0

1 file changed

Lines changed: 36 additions & 4 deletions

File tree

.github/workflows/publish.yml

Lines changed: 36 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ env:
1818
jobs:
1919
build-and-push:
2020
runs-on: ubuntu-latest
21-
timeout-minutes: 90
21+
timeout-minutes: 45
2222

2323
permissions:
2424
contents: read
@@ -28,6 +28,23 @@ jobs:
2828
- name: Checkout repository
2929
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
3030

31+
- uses: jdx/mise-action@v2
32+
33+
- name: Add Rust targets
34+
run: |
35+
rustup target add x86_64-unknown-linux-gnu
36+
rustup target add aarch64-unknown-linux-gnu
37+
38+
- name: Cache Rust target and registry
39+
uses: Swatinem/rust-cache@v2
40+
with:
41+
shared-key: publish-binaries
42+
43+
- name: Cross-compile gateway for amd64 and arm64
44+
env:
45+
DOCKER_PLATFORM: linux/amd64,linux/arm64
46+
run: tasks/scripts/stage-prebuilt-binaries.sh gateway
47+
3148
- name: Set up QEMU
3249
uses: docker/setup-qemu-action@ce360397dd3f832beb865e1373c09c0e9f86d70a # v4.0.0
3350

@@ -77,15 +94,14 @@ jobs:
7794
target: gateway
7895
push: true
7996
platforms: linux/amd64,linux/arm64
80-
build-args: BUILD_FROM_SOURCE=1
8197
tags: ${{ steps.meta_retry.outputs.tags || steps.meta.outputs.tags }}
8298
labels: ${{ steps.meta_retry.outputs.labels || steps.meta.outputs.labels }}
8399
cache-from: type=gha,scope=gateway
84100
cache-to: type=gha,scope=gateway,mode=max
85101

86102
build-and-push-supervisor:
87103
runs-on: ubuntu-latest
88-
timeout-minutes: 90
104+
timeout-minutes: 45
89105

90106
permissions:
91107
contents: read
@@ -95,6 +111,23 @@ jobs:
95111
- name: Checkout repository
96112
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
97113

114+
- uses: jdx/mise-action@v2
115+
116+
- name: Add Rust targets
117+
run: |
118+
rustup target add x86_64-unknown-linux-gnu
119+
rustup target add aarch64-unknown-linux-gnu
120+
121+
- name: Cache Rust target and registry
122+
uses: Swatinem/rust-cache@v2
123+
with:
124+
shared-key: publish-binaries
125+
126+
- name: Cross-compile supervisor for amd64 and arm64
127+
env:
128+
DOCKER_PLATFORM: linux/amd64,linux/arm64
129+
run: tasks/scripts/stage-prebuilt-binaries.sh supervisor
130+
98131
- name: Set up QEMU
99132
uses: docker/setup-qemu-action@ce360397dd3f832beb865e1373c09c0e9f86d70a # v4.0.0
100133

@@ -144,7 +177,6 @@ jobs:
144177
target: supervisor
145178
push: true
146179
platforms: linux/amd64,linux/arm64
147-
build-args: BUILD_FROM_SOURCE=1
148180
tags: ${{ steps.meta_retry.outputs.tags || steps.meta.outputs.tags }}
149181
labels: ${{ steps.meta_retry.outputs.labels || steps.meta.outputs.labels }}
150182
cache-from: type=gha,scope=supervisor

0 commit comments

Comments
 (0)