Skip to content

Commit bf3de25

Browse files
authored
Merge pull request #348 from fonoster/kaizen/2026-07-06-matrix-docker-hub-publish-clean
ci: collapse Docker Hub publish jobs into a single matrix job
2 parents 2a59d18 + ca22be6 commit bf3de25

2 files changed

Lines changed: 60 additions & 283 deletions

File tree

.claude/kaizen/log.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# Kaizen ledger
2+
3+
One repo, one improvement, every day. 改善.
4+
5+
This log is the memory of the `kaizen` skill. Each run reads it to avoid repeating
6+
picks and to rotate across lenses. Newest entries first.
7+
8+
| Date | Lens | Improvement | Status | Branch / note |
9+
| :--- | :--- | :--- | :--- | :--- |
10+
| 2026-07-06 | ci | Collapse 13 near-identical Docker Hub publish jobs in `docker-hub-release.yaml` into one matrix job | done | kaizen/2026-07-06-matrix-docker-hub-publish |

.github/workflows/docker-hub-release.yaml

Lines changed: 50 additions & 283 deletions
Original file line numberDiff line numberDiff line change
@@ -39,293 +39,58 @@ jobs:
3939
outputs:
4040
version: ${{ steps.release.outputs.VERSION }}
4141

42-
publish_one_to_docker_hub:
43-
name: Publish Routr One to Docker Hub
42+
publish_to_docker_hub:
43+
name: Publish ${{ matrix.image }} to Docker Hub
4444

4545
runs-on: ubuntu-latest
4646

4747
needs: [download_artifacts]
48-
steps:
49-
- name: Download build
50-
uses: actions/download-artifact@v4
51-
with:
52-
name: routr-build
53-
- name: Set up Docker Buildx
54-
uses: docker/setup-buildx-action@v3
55-
- name: Publish the Routr One image
56-
uses: elgohr/Publish-Docker-Github-Action@v5
57-
with:
58-
name: fonoster/routr-one
59-
username: ${{ secrets.DOCKER_HUB_USERNAME }}
60-
password: ${{ secrets.DOCKER_HUB_PASSWORD }}
61-
tags: "latest,${{ needs.download_artifacts.outputs.VERSION }}"
62-
platforms: linux/amd64,linux/arm64
63-
64-
publish_edgeport_to_docker_hub:
65-
name: Publish EdgePort to Docker Hub
66-
67-
runs-on: ubuntu-latest
68-
69-
needs: [download_artifacts]
70-
steps:
71-
- name: Download build
72-
uses: actions/download-artifact@v4
73-
with:
74-
name: routr-build
75-
- name: Set up Docker Buildx
76-
uses: docker/setup-buildx-action@v3
77-
- name: Publish the Edgeport image
78-
uses: elgohr/Publish-Docker-Github-Action@v5
79-
with:
80-
name: fonoster/routr-edgeport
81-
username: ${{ secrets.DOCKER_HUB_USERNAME }}
82-
password: ${{ secrets.DOCKER_HUB_PASSWORD }}
83-
context: .
84-
dockerfile: mods/edgeport/Dockerfile
85-
tags: "latest,${{ needs.download_artifacts.outputs.VERSION }}"
86-
platforms: linux/amd64,linux/arm64
87-
88-
publish_dispatcher_to_docker_hub:
89-
name: Publish Dispatcher to Docker Hub
90-
91-
runs-on: ubuntu-latest
92-
93-
needs: [download_artifacts]
94-
steps:
95-
- name: Download build
96-
uses: actions/download-artifact@v4
97-
with:
98-
name: routr-build
99-
- name: Set up Docker Buildx
100-
uses: docker/setup-buildx-action@v3
101-
- name: Publish the image
102-
uses: elgohr/Publish-Docker-Github-Action@v5
103-
with:
104-
name: fonoster/routr-dispatcher
105-
username: ${{ secrets.DOCKER_HUB_USERNAME }}
106-
password: ${{ secrets.DOCKER_HUB_PASSWORD }}
107-
workdir: mods/dispatcher
108-
tags: "latest,${{ needs.download_artifacts.outputs.VERSION }}"
109-
platforms: linux/amd64,linux/arm64
110-
111-
publish_location_to_docker_hub:
112-
name: Publish Location to Docker Hub
113-
114-
runs-on: ubuntu-latest
115-
116-
needs: [download_artifacts]
117-
steps:
118-
- name: Download build
119-
uses: actions/download-artifact@v4
120-
with:
121-
name: routr-build
122-
- name: Set up Docker Buildx
123-
uses: docker/setup-buildx-action@v3
124-
- name: Publish the image
125-
uses: elgohr/Publish-Docker-Github-Action@v5
126-
with:
127-
name: fonoster/routr-location
128-
username: ${{ secrets.DOCKER_HUB_USERNAME }}
129-
password: ${{ secrets.DOCKER_HUB_PASSWORD }}
130-
workdir: mods/location
131-
tags: "latest,${{ needs.download_artifacts.outputs.VERSION }}"
132-
platforms: linux/amd64,linux/arm64
133-
134-
publish_connect_to_docker_hub:
135-
name: Publish Connect to Docker Hub
136-
137-
runs-on: ubuntu-latest
138-
139-
needs: [download_artifacts]
140-
steps:
141-
- name: Download build
142-
uses: actions/download-artifact@v4
143-
with:
144-
name: routr-build
145-
- name: Set up Docker Buildx
146-
uses: docker/setup-buildx-action@v3
147-
- name: Publish the image
148-
uses: elgohr/Publish-Docker-Github-Action@v5
149-
with:
150-
name: fonoster/routr-connect
151-
username: ${{ secrets.DOCKER_HUB_USERNAME }}
152-
password: ${{ secrets.DOCKER_HUB_PASSWORD }}
153-
workdir: mods/connect
154-
tags: "latest,${{ needs.download_artifacts.outputs.VERSION }}"
155-
platforms: linux/amd64,linux/arm64
156-
157-
publish_simpledata_to_docker_hub:
158-
name: Publish SimpleData to Docker Hub
159-
160-
runs-on: ubuntu-latest
161-
162-
needs: [download_artifacts]
163-
steps:
164-
- name: Download build
165-
uses: actions/download-artifact@v4
166-
with:
167-
name: routr-build
168-
- name: Set up Docker Buildx
169-
uses: docker/setup-buildx-action@v3
170-
- name: Publish the image
171-
uses: elgohr/Publish-Docker-Github-Action@v5
172-
with:
173-
name: fonoster/routr-simpledata
174-
username: ${{ secrets.DOCKER_HUB_USERNAME }}
175-
password: ${{ secrets.DOCKER_HUB_PASSWORD }}
176-
workdir: mods/simpledata
177-
tags: "latest,${{ needs.download_artifacts.outputs.VERSION }}"
178-
platforms: linux/amd64,linux/arm64
179-
180-
publish_simpleauth_to_docker_hub:
181-
name: Publish SimpleAuth to Docker Hub
182-
183-
runs-on: ubuntu-latest
184-
185-
needs: [download_artifacts]
186-
steps:
187-
- name: Download build
188-
uses: actions/download-artifact@v4
189-
with:
190-
name: routr-build
191-
- name: Set up Docker Buildx
192-
uses: docker/setup-buildx-action@v3
193-
- name: Publish the image
194-
uses: elgohr/Publish-Docker-Github-Action@v5
195-
with:
196-
name: fonoster/routr-simpleauth
197-
username: ${{ secrets.DOCKER_HUB_USERNAME }}
198-
password: ${{ secrets.DOCKER_HUB_PASSWORD }}
199-
workdir: mods/simpleauth
200-
tags: "latest,${{ needs.download_artifacts.outputs.VERSION }}"
201-
platforms: linux/amd64,linux/arm64
202-
203-
publish_requester_to_docker_hub:
204-
name: Publish Requester to Docker Hub
205-
206-
runs-on: ubuntu-latest
207-
208-
needs: [download_artifacts]
209-
steps:
210-
- name: Download build
211-
uses: actions/download-artifact@v4
212-
with:
213-
name: routr-build
214-
- name: Set up Docker Buildx
215-
uses: docker/setup-buildx-action@v3
216-
- name: Publish the image
217-
uses: elgohr/Publish-Docker-Github-Action@v5
218-
with:
219-
name: fonoster/routr-requester
220-
username: ${{ secrets.DOCKER_HUB_USERNAME }}
221-
password: ${{ secrets.DOCKER_HUB_PASSWORD }}
222-
workdir: .
223-
dockerfile: mods/requester/Dockerfile
224-
tags: "latest,${{ needs.download_artifacts.outputs.VERSION }}"
225-
platforms: linux/amd64,linux/arm64
226-
227-
publish_registry_to_docker_hub:
228-
name: Publish Registry to Docker Hub
229-
230-
runs-on: ubuntu-latest
231-
232-
needs: [download_artifacts]
233-
steps:
234-
- name: Download build
235-
uses: actions/download-artifact@v4
236-
with:
237-
name: routr-build
238-
- name: Set up Docker Buildx
239-
uses: docker/setup-buildx-action@v3
240-
- name: Publish the image
241-
uses: elgohr/Publish-Docker-Github-Action@v5
242-
with:
243-
name: fonoster/routr-registry
244-
username: ${{ secrets.DOCKER_HUB_USERNAME }}
245-
password: ${{ secrets.DOCKER_HUB_PASSWORD }}
246-
workdir: mods/registry
247-
tags: "latest,${{ needs.download_artifacts.outputs.VERSION }}"
248-
platforms: linux/amd64,linux/arm64
249-
250-
publish_pgdata_to_docker_hub:
251-
name: Publish the PGData image
252-
253-
runs-on: ubuntu-latest
254-
255-
needs: [download_artifacts]
256-
steps:
257-
- name: Download build
258-
uses: actions/download-artifact@v4
259-
with:
260-
name: routr-build
261-
- name: Set up Docker Buildx
262-
uses: docker/setup-buildx-action@v3
263-
- name: Publish the image
264-
uses: elgohr/Publish-Docker-Github-Action@v5
265-
with:
266-
name: fonoster/routr-pgdata
267-
username: ${{ secrets.DOCKER_HUB_USERNAME }}
268-
password: ${{ secrets.DOCKER_HUB_PASSWORD }}
269-
context: .
270-
dockerfile: mods/pgdata/Dockerfile
271-
buildoptions: "--target runner"
272-
tags: "latest,${{ needs.download_artifacts.outputs.VERSION }}"
273-
platforms: linux/amd64,linux/arm64
274-
275-
publish_pgdata_migrations_to_docker_hub:
276-
name: Publish the Postgres DB Migrations image
277-
278-
runs-on: ubuntu-latest
279-
280-
needs: [download_artifacts]
281-
steps:
282-
- name: Download build
283-
uses: actions/download-artifact@v4
284-
with:
285-
name: routr-build
286-
- name: Set up Docker Buildx
287-
uses: docker/setup-buildx-action@v3
288-
- name: Publish the image
289-
uses: elgohr/Publish-Docker-Github-Action@v5
290-
with:
291-
name: fonoster/routr-pgdata-migrations
292-
username: ${{ secrets.DOCKER_HUB_USERNAME }}
293-
password: ${{ secrets.DOCKER_HUB_PASSWORD }}
294-
context: .
295-
dockerfile: mods/pgdata/Dockerfile
296-
buildoptions: "--target migrations"
297-
tags: "latest,${{ needs.download_artifacts.outputs.VERSION }}"
298-
platforms: linux/amd64,linux/arm64
299-
300-
publish_echo_to_docker_hub:
301-
name: Publish the Echo image
302-
303-
runs-on: ubuntu-latest
304-
305-
needs: [download_artifacts]
306-
steps:
307-
- name: Download build
308-
uses: actions/download-artifact@v4
309-
with:
310-
name: routr-build
311-
- name: Set up Docker Buildx
312-
uses: docker/setup-buildx-action@v3
313-
- name: Publish the image
314-
uses: elgohr/Publish-Docker-Github-Action@v5
315-
with:
316-
name: fonoster/routr-echo
317-
username: ${{ secrets.DOCKER_HUB_USERNAME }}
318-
password: ${{ secrets.DOCKER_HUB_PASSWORD }}
319-
workdir: mods/echo
320-
tags: "latest,${{ needs.download_artifacts.outputs.VERSION }}"
321-
platforms: linux/amd64,linux/arm64
32248

323-
publish_rtprelay_to_docker_hub:
324-
name: Publish the RTPrelay image
49+
strategy:
50+
matrix:
51+
include:
52+
- image: routr-one
53+
context: .
54+
dockerfile: Dockerfile
55+
- image: routr-edgeport
56+
context: .
57+
dockerfile: mods/edgeport/Dockerfile
58+
- image: routr-dispatcher
59+
context: mods/dispatcher
60+
dockerfile: mods/dispatcher/Dockerfile
61+
- image: routr-location
62+
context: mods/location
63+
dockerfile: mods/location/Dockerfile
64+
- image: routr-connect
65+
context: mods/connect
66+
dockerfile: mods/connect/Dockerfile
67+
- image: routr-simpledata
68+
context: mods/simpledata
69+
dockerfile: mods/simpledata/Dockerfile
70+
- image: routr-simpleauth
71+
context: mods/simpleauth
72+
dockerfile: mods/simpleauth/Dockerfile
73+
- image: routr-requester
74+
context: .
75+
dockerfile: mods/requester/Dockerfile
76+
- image: routr-registry
77+
context: mods/registry
78+
dockerfile: mods/registry/Dockerfile
79+
- image: routr-pgdata
80+
context: .
81+
dockerfile: mods/pgdata/Dockerfile
82+
buildoptions: "--target runner"
83+
- image: routr-pgdata-migrations
84+
context: .
85+
dockerfile: mods/pgdata/Dockerfile
86+
buildoptions: "--target migrations"
87+
- image: routr-echo
88+
context: mods/echo
89+
dockerfile: mods/echo/Dockerfile
90+
- image: routr-rtprelay
91+
context: mods/rtprelay
92+
dockerfile: mods/rtprelay/Dockerfile
32593

326-
runs-on: ubuntu-latest
327-
328-
needs: [download_artifacts]
32994
steps:
33095
- name: Download build
33196
uses: actions/download-artifact@v4
@@ -336,9 +101,11 @@ jobs:
336101
- name: Publish the image
337102
uses: elgohr/Publish-Docker-Github-Action@v5
338103
with:
339-
name: fonoster/routr-rtprelay
104+
name: fonoster/${{ matrix.image }}
340105
username: ${{ secrets.DOCKER_HUB_USERNAME }}
341106
password: ${{ secrets.DOCKER_HUB_PASSWORD }}
342-
workdir: mods/rtprelay
107+
context: ${{ matrix.context }}
108+
dockerfile: ${{ matrix.dockerfile }}
109+
buildoptions: ${{ matrix.buildoptions }}
343110
tags: "latest,${{ needs.download_artifacts.outputs.VERSION }}"
344111
platforms: linux/amd64,linux/arm64

0 commit comments

Comments
 (0)