@@ -53,16 +53,19 @@ jobs:
53
53
continue-on-error : true
54
54
env :
55
55
GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
56
- containers-ruby-builder :
56
+ containers-ruby-builder-amd64 :
57
57
if : github.repository == 'CycloneDX/cdxgen'
58
- runs-on : ["self-hosted", "metal", "amd64"]
58
+ runs-on : ' ubuntu-24.04'
59
+ outputs :
60
+ image-uri : ghcr.io/cyclonedx/cdxgen-ruby-builder@${{ steps.build.outputs.digest }}
59
61
permissions :
60
62
contents : write
61
63
packages : write
62
64
id-token : write
63
65
steps :
64
66
- uses : actions/checkout@v4
65
- - run : docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
67
+ - name : Set up QEMU
68
+ uses : docker/setup-qemu-action@v3
66
69
- name : Set up Docker Buildx
67
70
uses : docker/setup-buildx-action@v3
68
71
- name : Log in to the Container registry
@@ -71,24 +74,106 @@ jobs:
71
74
registry : ghcr.io
72
75
username : ${{ github.actor }}
73
76
password : ${{ secrets.GITHUB_TOKEN }}
74
- - name : Setup docker cache dir
75
- run : |
76
- mkdir -p /tmp/ruby-builder-cache
77
+ - name : Extract metadata (tags, labels) for Docker
78
+ id : meta
79
+ uses : docker/metadata-action@v5
80
+ with :
81
+ images : |
82
+ ghcr.io/cyclonedx/cdxgen-ruby-builder
83
+ flavor : latest=false,suffix=-amd64
77
84
- name : Build and push Docker images
78
85
uses : docker/build-push-action@v5
86
+ id : build
79
87
with :
80
88
context : .
81
89
file : ci/base-images/al9/Dockerfile.ruby-builder
82
- platforms : linux/amd64,linux/arm64
90
+ platforms : linux/amd64
83
91
push : true
84
- load : true
92
+ tags : ${{ steps.meta.outputs.tags }}
93
+ labels : ${{ steps.meta.outputs.labels }}
94
+ - uses : cloudposse/github-action-matrix-outputs-write@v1
95
+ id : out
96
+ with :
97
+ outputs : |-
98
+ image-uri: ghcr.io/cyclonedx/cdxgen-ruby-builder@${{ steps.build.outputs.digest }}
99
+ containers-ruby-builder-arm64 :
100
+ if : github.repository == 'CycloneDX/cdxgen'
101
+ runs-on : ' ubuntu-24.04-arm'
102
+ outputs :
103
+ image-uri : ghcr.io/cyclonedx/cdxgen-ruby-builder@${{ steps.build.outputs.digest }}
104
+ permissions :
105
+ contents : write
106
+ packages : write
107
+ id-token : write
108
+ steps :
109
+ - uses : actions/checkout@v4
110
+ - name : Set up QEMU
111
+ uses : docker/setup-qemu-action@v3
112
+ - name : Set up Docker Buildx
113
+ uses : docker/setup-buildx-action@v3
114
+ - name : Log in to the Container registry
115
+ uses : docker/login-action@v3
116
+ with :
117
+ registry : ghcr.io
118
+ username : ${{ github.actor }}
119
+ password : ${{ secrets.GITHUB_TOKEN }}
120
+ - name : Extract metadata (tags, labels) for Docker
121
+ id : meta
122
+ uses : docker/metadata-action@v5
123
+ with :
124
+ images : |
125
+ ghcr.io/cyclonedx/cdxgen-ruby-builder
126
+ flavor : latest=false,suffix=-arm64
127
+ - name : Build and push Docker images
128
+ uses : docker/build-push-action@v5
129
+ id : build
130
+ with :
131
+ context : .
132
+ file : ci/base-images/al9/Dockerfile.ruby-builder
133
+ platforms : linux/arm64
134
+ push : true
135
+ tags : ${{ steps.meta.outputs.tags }}
136
+ labels : ${{ steps.meta.outputs.labels }}
137
+ - uses : cloudposse/github-action-matrix-outputs-write@v1
138
+ id : out
139
+ with :
140
+ outputs : |-
141
+ image-uri: ghcr.io/cyclonedx/cdxgen-ruby-builder@${{ steps.build.outputs.digest }}
142
+ containers-ruby-builder-deploy-manifest :
143
+ if : github.repository == 'CycloneDX/cdxgen'
144
+ runs-on : ubuntu-24.04
145
+ needs : [ containers-ruby-builder-amd64, containers-ruby-builder-arm64 ]
146
+ outputs :
147
+ image-uri : ghcr.io/cyclonedx/cdxgen-ruby-builder@${{ steps.build.outputs.digest }}
148
+ permissions :
149
+ contents : write
150
+ packages : write
151
+ id-token : write
152
+ steps :
153
+ - uses : actions/checkout@v4
154
+ with :
155
+ fetch-depth : 0
156
+ - uses : docker/login-action@v3
157
+ with :
158
+ registry : ghcr.io
159
+ username : ${{ github.actor }}
160
+ password : ${{ secrets.GITHUB_TOKEN }}
161
+ - uses : docker/metadata-action@v5
162
+ id : metadata
163
+ with :
164
+ images : ghcr.io/${{ github.repository }}
165
+ - uses : int128/docker-manifest-create-action@v2
166
+ id : build
167
+ with :
168
+ index-annotations : ${{ steps.metadata.outputs.labels }}
85
169
tags : ghcr.io/cyclonedx/cdxgen-ruby-builder:master
86
- cache-from : type=local,src=/tmp/ruby-builder-cache
87
- cache-to : type=local,dest=/tmp/ruby-builder-cache,mode=max
170
+ sources : |
171
+ ${{ needs.containers-ruby-builder-amd64.outputs.image-uri }}
172
+ ${{ needs.containers-ruby-builder-arm64.outputs.image-uri }}
88
173
containers :
89
174
if : github.repository == 'CycloneDX/cdxgen'
90
175
runs-on : ["self-hosted", "metal", "amd64"]
91
- needs : [containers-ruby-builder]
176
+ needs : [containers-ruby-builder-deploy-manifest ]
92
177
permissions :
93
178
contents : write
94
179
packages : write
@@ -159,7 +244,7 @@ jobs:
159
244
containers-secure :
160
245
if : github.repository == 'CycloneDX/cdxgen'
161
246
runs-on : ["self-hosted", "metal", "amd64"]
162
- needs : [containers-ruby-builder]
247
+ needs : [containers-ruby-builder-deploy-manifest ]
163
248
permissions :
164
249
contents : write
165
250
packages : write
@@ -224,7 +309,7 @@ jobs:
224
309
containers-deno :
225
310
if : github.repository == 'CycloneDX/cdxgen'
226
311
runs-on : ubuntu-latest
227
- needs : [containers-ruby-builder]
312
+ needs : [containers-ruby-builder-deploy-manifest ]
228
313
permissions :
229
314
contents : write
230
315
packages : write
0 commit comments