|
16 | 16 | # Build Linux binaries, ready for release. |
17 | 17 | # This runs inside an Alpine Linux container so we can more easily create a |
18 | 18 | # statically linked binary. |
19 | | - runs-on: ubuntu-latest |
| 19 | + strategy: |
| 20 | + matrix: |
| 21 | + goarch: [ amd64, arm64 ] |
| 22 | + include: |
| 23 | + - goarch: amd64 |
| 24 | + os: ubuntu-latest |
| 25 | + - goarch: arm64 |
| 26 | + os: ubuntu-24.04-arm # TODO: use a -latest variant? |
| 27 | + runs-on: ${{ matrix.os }} |
20 | 28 | container: |
21 | 29 | image: golang:1.23-alpine |
22 | 30 | outputs: |
|
40 | 48 | - name: Cache Go |
41 | 49 | uses: actions/cache@v4 |
42 | 50 | with: |
43 | | - key: go-cache-linux-alpine-v1-${{ hashFiles('go.mod') }} |
| 51 | + key: go-cache-linux-alpine-{{ matrix.goarch }}-v1-${{ hashFiles('go.mod') }} |
44 | 52 | path: | |
45 | 53 | ~/.cache/go-build |
46 | 54 | ~/go/pkg/mod |
|
73 | 81 | uses: actions/cache/restore@v4 |
74 | 82 | id: cache-llvm-build |
75 | 83 | with: |
76 | | - key: llvm-build-19-linux-alpine-v1 |
| 84 | + key: llvm-build-19-linux-alpine-{{ matrix.goarch }}-v1 |
77 | 85 | path: llvm-build |
78 | 86 | - name: Build LLVM |
79 | 87 | if: steps.cache-llvm-build.outputs.cache-hit != 'true' |
|
97 | 105 | uses: actions/cache@v4 |
98 | 106 | id: cache-binaryen |
99 | 107 | with: |
100 | | - key: binaryen-linux-alpine-v1 |
| 108 | + key: binaryen-linux-alpine-{{ matrix.goarch }}-v1 |
101 | 109 | path: build/wasm-opt |
102 | 110 | - name: Build Binaryen |
103 | 111 | if: steps.cache-binaryen.outputs.cache-hit != 'true' |
@@ -125,15 +133,15 @@ jobs: |
125 | 133 | - name: Build TinyGo release |
126 | 134 | run: | |
127 | 135 | make release deb -j3 STATIC=1 |
128 | | - cp -p build/release.tar.gz /tmp/tinygo${{ steps.version.outputs.version }}.linux-amd64.tar.gz |
129 | | - cp -p build/release.deb /tmp/tinygo_${{ steps.version.outputs.version }}_amd64.deb |
| 136 | + cp -p build/release.tar.gz /tmp/tinygo${{ steps.version.outputs.version }}.linux-{{ matrix.goarch }}.tar.gz |
| 137 | + cp -p build/release.deb /tmp/tinygo_${{ steps.version.outputs.version }}_{{ matrix.goarch }}.deb |
130 | 138 | - name: Publish release artifact |
131 | 139 | uses: actions/upload-artifact@v4 |
132 | 140 | with: |
133 | | - name: linux-amd64-double-zipped-${{ steps.version.outputs.version }} |
| 141 | + name: linux-{{ matrix.goarch }}-double-zipped-${{ steps.version.outputs.version }} |
134 | 142 | path: | |
135 | | - /tmp/tinygo${{ steps.version.outputs.version }}.linux-amd64.tar.gz |
136 | | - /tmp/tinygo_${{ steps.version.outputs.version }}_amd64.deb |
| 143 | + /tmp/tinygo${{ steps.version.outputs.version }}.linux-{{ matrix.goarch }}.tar.gz |
| 144 | + /tmp/tinygo_${{ steps.version.outputs.version }}-{{ matrix.goarch }}.deb |
137 | 145 | test-linux-build: |
138 | 146 | # Test the binaries built in the build-linux job by running the smoke tests. |
139 | 147 | runs-on: ubuntu-latest |
@@ -289,11 +297,8 @@ jobs: |
289 | 297 | # part of the release tarball. |
290 | 298 | strategy: |
291 | 299 | matrix: |
292 | | - goarch: [ arm, arm64 ] |
| 300 | + goarch: [ arm ] |
293 | 301 | include: |
294 | | - - goarch: arm64 |
295 | | - toolchain: aarch64-linux-gnu |
296 | | - libc: arm64 |
297 | 302 | - goarch: arm |
298 | 303 | toolchain: arm-linux-gnueabihf |
299 | 304 | libc: armhf |
|
0 commit comments