@@ -36,61 +36,99 @@ jobs:
3636 include :
3737 - runner : ubuntu-24.04
3838 dockerfile : packaging-plugins-alma8
39- image : packaging-plugins-alma8
39+ image : packaging
40+ distrib : alma8
41+ arch : amd64
4042 - runner : ubuntu-24.04
4143 dockerfile : packaging-plugins-alma9
42- image : packaging-plugins-alma9
44+ image : packaging
45+ distrib : alma9
46+ arch : amd64
4347 - runner : ubuntu-24.04
4448 dockerfile : packaging-plugins-alma10
45- image : packaging-plugins-alma10
49+ image : packaging
50+ distrib : alma10
51+ arch : amd64
4652 - runner : ubuntu-24.04
4753 dockerfile : packaging-plugins-java-alma8
48- image : packaging-plugins-java-alma8
54+ image : packaging-java
55+ distrib : alma8
56+ arch : amd64
4957 - runner : ubuntu-24.04
5058 dockerfile : packaging-plugins-java-alma9
51- image : packaging-plugins-java-alma9
59+ image : packaging-java
60+ distrib : alma9
61+ arch : amd64
5262 - runner : ubuntu-24.04
5363 dockerfile : packaging-plugins-java-alma10
54- image : packaging-plugins-java-alma10
64+ image : packaging-java
65+ distrib : alma10
66+ arch : amd64
5567 - runner : ubuntu-24.04
5668 dockerfile : packaging-plugins-bullseye
57- image : packaging-plugins-bullseye
69+ image : packaging
70+ distrib : bullseye
71+ arch : amd64
5872 - runner : ubuntu-24.04-arm
5973 dockerfile : packaging-plugins-bullseye
60- image : packaging-plugins-bullseye-arm64
74+ image : packaging
75+ distrib : bullseye
76+ arch : arm64
6177 - runner : ubuntu-24.04
6278 dockerfile : packaging-plugins-bookworm
63- image : packaging-plugins-bookworm
79+ image : packaging
80+ distrib : bookworm
81+ arch : amd64
6482 - runner : ubuntu-24.04-arm
6583 dockerfile : packaging-plugins-bookworm
66- image : packaging-plugins-bookworm-arm64
84+ image : packaging
85+ distrib : bookworm
86+ arch : arm64
6787 - runner : ubuntu-24.04
6888 dockerfile : packaging-plugins-trixie
69- image : packaging-plugins-trixie
89+ image : packaging
90+ distrib : trixie
91+ arch : amd64
7092 - runner : ubuntu-24.04-arm
7193 dockerfile : packaging-plugins-trixie
72- image : packaging-plugins-trixie-arm64
94+ image : packaging
95+ distrib : trixie
96+ arch : arm64
7397 - runner : ubuntu-24.04
7498 dockerfile : packaging-plugins-java-bullseye
75- image : packaging-plugins-java-bullseye
99+ image : packaging-java
100+ distrib : bullseye
101+ arch : amd64
76102 - runner : ubuntu-24.04
77103 dockerfile : packaging-plugins-java-bookworm
78- image : packaging-plugins-java-bookworm
104+ image : packaging-java
105+ distrib : bookworm
106+ arch : amd64
79107 - runner : ubuntu-24.04
80108 dockerfile : packaging-plugins-java-trixie
81- image : packaging-plugins-java-trixie
109+ image : packaging-java
110+ distrib : trixie
111+ arch : amd64
82112 - runner : ubuntu-24.04
83113 dockerfile : packaging-plugins-jammy
84- image : packaging-plugins-jammy
114+ image : packaging
115+ distrib : jammy
116+ arch : amd64
85117 - runner : ubuntu-24.04
86118 dockerfile : packaging-plugins-java-jammy
87- image : packaging-plugins-java-jammy
119+ image : packaging-java
120+ distrib : jammy
121+ arch : amd64
88122 - runner : ubuntu-24.04
89123 dockerfile : packaging-plugins-noble
90- image : packaging-plugins-noble
124+ image : packaging
125+ distrib : noble
126+ arch : amd64
91127 - runner : ubuntu-24.04
92128 dockerfile : packaging-plugins-java-noble
93- image : packaging-plugins-java-noble
129+ image : packaging-java
130+ distrib : noble
131+ arch : amd64
94132
95133 runs-on : ${{ matrix.runner }}
96134
@@ -117,17 +155,90 @@ jobs:
117155
118156 - uses : docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0
119157
158+ - name : Extract metadata (tags, labels) for Docker
159+ id : meta
160+ uses : docker/metadata-action@030e881283bb7a6894de51c315a6bfe6a94e05cf # v6.0.0
161+ with :
162+ images : ghcr.io/${{ github.repository }}/${{ matrix.image }}
163+ labels : |
164+ org.opencontainers.image.description=Packaging image for Centreon Plugins packaging
165+ com.centreon.stability=${{ needs.get-environment.outputs.stability }}
166+ com.centreon.version=${{ needs.get-environment.outputs.version }}
167+
168+
120169 - uses : docker/build-push-action@d08e5c354a6adb9ed34480a06d141179aa583294 # v7.0.0
121170 with :
122171 file : .github/docker/packaging/Dockerfile.${{ matrix.dockerfile }}
123172 context : .
124173 build-args : " REGISTRY_URL=${{ vars.DOCKER_PROXY_REGISTRY_URL }}"
125174 pull : true
126175 push : true
127- tags : ghcr.io/${{ github.repository }}/${{ matrix.image }}:latest
176+ tags : ghcr.io/${{ github.repository }}/${{ matrix.image }}:${{ matrix.distrib }}-${{ matrix.arch }}
177+ labels : ${{ steps.meta.outputs.labels }}
178+
179+ compute-merge-matrix :
180+ needs : [get-environment]
181+ if : |
182+ needs.get-environment.outputs.skip_workflow == 'false' &&
183+ needs.get-environment.outputs.stability != 'stable'
184+ runs-on : ubuntu-24.04
185+ outputs :
186+ matrix : ${{ steps.compute.outputs.matrix }}
187+ steps :
188+ - name : Checkout sources
189+ uses : actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
190+ - name : Compute merge matrix
191+ id : compute
192+ shell : bash
193+ run : |
194+ matrix=$(yq -o=json '.jobs.dockerize.strategy.matrix.include' \
195+ .github/workflows/docker-builder-packaging-plugins.yml | \
196+ jq -c '
197+ group_by([.image, .distrib]) |
198+ map({
199+ image: .[0].image,
200+ distrib: .[0].distrib,
201+ archs: (map(.arch) | join(" "))
202+ }) |
203+ {include: .}
204+ ')
205+ echo "matrix=$matrix" >> $GITHUB_OUTPUT
206+
207+ merge :
208+ needs : [get-environment, dockerize, compute-merge-matrix]
209+ if : |
210+ needs.get-environment.outputs.skip_workflow == 'false' &&
211+ needs.get-environment.outputs.stability != 'stable'
212+ runs-on : ubuntu-24.04
213+ permissions :
214+ packages : write
215+ strategy :
216+ fail-fast : false
217+ matrix : ${{ fromJson(needs.compute-merge-matrix.outputs.matrix) }}
218+ steps :
219+ - name : Login to GitHub Container Registry
220+ uses : docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4.0.0
221+ with :
222+ registry : ghcr.io
223+ username : ${{ github.actor }}
224+ password : ${{ github.token }}
225+
226+ - uses : docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0
227+
228+ - name : Create multi-platform manifest
229+ shell : bash
230+ run : |
231+ SOURCE=""
232+ for arch in ${{ matrix.archs }}; do
233+ SOURCE="$SOURCE ghcr.io/${{ github.repository }}/${{ matrix.image }}:${{ matrix.distrib }}-$arch"
234+ done
235+ docker buildx imagetools create \
236+ --tag ghcr.io/${{ github.repository }}/${{ matrix.image }}:${{ matrix.distrib }} \
237+ $SOURCE
238+
128239
129240 set-skip-label :
130- needs : [get-environment, dockerize ]
241+ needs : [get-environment, merge ]
131242 if : |
132243 needs.get-environment.outputs.skip_workflow == 'false' &&
133244 ! cancelled() &&
0 commit comments