@@ -53,16 +53,19 @@ jobs:
5353 continue-on-error : true
5454 env :
5555 GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
56- containers-ruby-builder :
56+ containers-ruby-builder-amd64 :
5757 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 }}
5961 permissions :
6062 contents : write
6163 packages : write
6264 id-token : write
6365 steps :
6466 - 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
6669 - name : Set up Docker Buildx
6770 uses : docker/setup-buildx-action@v3
6871 - name : Log in to the Container registry
@@ -71,24 +74,106 @@ jobs:
7174 registry : ghcr.io
7275 username : ${{ github.actor }}
7376 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
7784 - name : Build and push Docker images
7885 uses : docker/build-push-action@v5
86+ id : build
7987 with :
8088 context : .
8189 file : ci/base-images/al9/Dockerfile.ruby-builder
82- platforms : linux/amd64,linux/arm64
90+ platforms : linux/amd64
8391 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 }}
85169 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 }}
88173 containers :
89174 if : github.repository == 'CycloneDX/cdxgen'
90175 runs-on : ["self-hosted", "metal", "amd64"]
91- needs : [containers-ruby-builder]
176+ needs : [containers-ruby-builder-deploy-manifest ]
92177 permissions :
93178 contents : write
94179 packages : write
@@ -159,7 +244,7 @@ jobs:
159244 containers-secure :
160245 if : github.repository == 'CycloneDX/cdxgen'
161246 runs-on : ["self-hosted", "metal", "amd64"]
162- needs : [containers-ruby-builder]
247+ needs : [containers-ruby-builder-deploy-manifest ]
163248 permissions :
164249 contents : write
165250 packages : write
@@ -224,7 +309,7 @@ jobs:
224309 containers-deno :
225310 if : github.repository == 'CycloneDX/cdxgen'
226311 runs-on : ubuntu-latest
227- needs : [containers-ruby-builder]
312+ needs : [containers-ruby-builder-deploy-manifest ]
228313 permissions :
229314 contents : write
230315 packages : write
0 commit comments