Skip to content

Commit ca6dccd

Browse files
authored
split ruby build (#1811)
* Split ruby builds Signed-off-by: Prabhu Subramanian <[email protected]> --------- Signed-off-by: Prabhu Subramanian <[email protected]>
1 parent 2774b9e commit ca6dccd

File tree

1 file changed

+98
-13
lines changed

1 file changed

+98
-13
lines changed

.github/workflows/npm-release.yml

Lines changed: 98 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)