18
18
19
19
jobs :
20
20
build :
21
+ permissions :
22
+ contents : write
21
23
runs-on : ubuntu-latest
22
24
steps :
23
25
- name : Set up QEMU
@@ -29,16 +31,58 @@ jobs:
29
31
# We aren't use cross-compilation. Instead we have multiple platforms
30
32
# with QEMU emulation providing a native environment. An alternative
31
33
# 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
33
35
uses : docker/build-push-action@v6
34
- id : image
35
36
with :
36
- # platforms: linux/amd64,linux/arm64,linux/386
37
+ platforms : linux/amd64
37
38
file : ci/ninja-build-static/Dockerfile
38
- outputs : out
39
+ outputs : type=local,dest= out-amd64
39
40
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
42
54
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