Skip to content

Commit 0b3a3a6

Browse files
committed
Publish ninja-build static binary for Linux (2/n)
1 parent 8e24a18 commit 0b3a3a6

File tree

1 file changed

+52
-8
lines changed

1 file changed

+52
-8
lines changed

.github/workflows/ninja-build-static.yml

Lines changed: 52 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ on:
1818

1919
jobs:
2020
build:
21+
permissions:
22+
contents: write
2123
runs-on: ubuntu-latest
2224
steps:
2325
- name: Set up QEMU
@@ -29,16 +31,58 @@ jobs:
2931
# We aren't use cross-compilation. Instead we have multiple platforms
3032
# with QEMU emulation providing a native environment. An alternative
3133
# is to use CMake to build Ninja with a cross-compiler.
32-
- name: Build and export to Docker
34+
- name: Build linux/amd64 and export to filesystem
3335
uses: docker/build-push-action@v6
34-
id: image
3536
with:
36-
#platforms: linux/amd64,linux/arm64,linux/386
37+
platforms: linux/amd64
3738
file: ci/ninja-build-static/Dockerfile
38-
outputs: out
39+
outputs: type=local,dest=out-amd64
3940

40-
- name: Test outside container
41-
run: out/usr/local/src/ninja-build/ninja --version
41+
- name: Build linux/arm64 and export to filesystem
42+
uses: docker/build-push-action@v6
43+
with:
44+
platforms: linux/arm64
45+
file: ci/ninja-build-static/Dockerfile
46+
outputs: type=local,dest=out-arm64
47+
48+
- name: Build linux/386 and export to filesystem
49+
uses: docker/build-push-action@v6
50+
with:
51+
platforms: linux/386
52+
file: ci/ninja-build-static/Dockerfile
53+
outputs: type=local,dest=out-386
4254

43-
- name: Test inside container
44-
run: docker run --rm ${{ steps.image.outputs.imageid }} ./ninja --version
55+
- name: Test 386 binary outside container
56+
run: out-386/usr/local/src/ninja-build/ninja --version
57+
58+
- name: Test amd64 binary outside container
59+
run: out-amd64/usr/local/src/ninja-build/ninja --version
60+
61+
- name: Display arm64 binary format
62+
# Can't run arm64 on Intel machines without an emulator
63+
run: file out-arm64/usr/local/src/ninja-build/ninja
64+
65+
- name: Rename to ABI
66+
run: |
67+
mv out-amd64/usr/local/src/ninja-build/ninja ninja-linux_x86_64
68+
mv out-386/usr/local/src/ninja-build/ninja ninja-linux_x86
69+
mv out-arm64/usr/local/src/ninja-build/ninja ninja-linux_arm64
70+
71+
- name: Upload ninja binaries for troubleshooting
72+
uses: actions/upload-artifact@v4
73+
with:
74+
retention-days: 30
75+
name: ninja-binary
76+
path: |
77+
ninja-linux_x86_64
78+
ninja-linux_x86
79+
ninja-linux_arm64
80+
81+
- name: Release
82+
uses: softprops/action-gh-release@v2
83+
if: startsWith(github.ref, 'refs/tags/')
84+
with:
85+
files: |
86+
ninja-linux_x86_64
87+
ninja-linux_x86
88+
ninja-linux_arm64

0 commit comments

Comments
 (0)