44 push :
55 paths :
66 - " generate-dockerfiles.sh"
7- - " generate-docker-compose.yml "
7+ - " generate-docker-compose.sh "
88 - " requirements.txt"
99 - " Dockerfile.j2"
1010 - " docker-compose.yml.j2"
1111 schedule :
1212 - cron : " 0 3 * * 6"
1313
14+ concurrency :
15+ group : docker-publish-${{ github.ref }}
16+ cancel-in-progress : false
17+
1418jobs :
1519 generate-dockerfiles :
1620 name : Generate Dockerfiles
1721 runs-on : ubuntu-latest
22+ permissions :
23+ contents : write
1824 outputs :
1925 matrix : ${{ steps.set-matrix.outputs.matrix }}
2026 steps :
@@ -24,25 +30,34 @@ jobs:
2430 - name : Generate python
2531 uses : actions/setup-python@v6
2632 with :
33+ python-version : " 3.12"
2734 cache : " pip"
35+ cache-dependency-path : requirements.txt
2836 - run : pip3 install -r requirements.txt
2937
3038 - name : Generate Dockerfile with generate-dockerfiles.sh
3139 run : ./generate-dockerfiles.sh
3240
3341 - name : Upload a Build Artifact
34- uses : actions/upload-artifact@v5.0.0
42+ uses : actions/upload-artifact@v7
3543 with :
3644 # Artifact name
3745 name : Dockerfiles
3846 # A file, directory or wildcard pattern that describes what to upload
3947 path : dockerfiles
4048
41- - name : Push commit
42- uses : EndBug/add-and-commit@v9
43- with :
44- message : " Generate Dockerfiles"
45- add : " dockerfiles/Dockerfile*"
49+ - name : Commit and push generated Dockerfiles
50+ run : |
51+ git config user.name "github-actions[bot]"
52+ git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
53+ git add dockerfiles/Dockerfile*
54+ if git diff --cached --quiet; then
55+ echo "No Dockerfile changes to commit"
56+ exit 0
57+ fi
58+ git commit -m "Generate Dockerfiles"
59+ git pull --rebase origin "${GITHUB_REF_NAME}"
60+ git push origin "HEAD:${GITHUB_REF_NAME}"
4661
4762 - id : set-matrix
4863 run : |
@@ -53,24 +68,36 @@ jobs:
5368 generate-docker-compose :
5469 name : Generate docker-compose.yml files
5570 runs-on : ubuntu-latest
71+ needs : generate-dockerfiles
72+ permissions :
73+ contents : write
5674 steps :
5775 - name : Checkout
5876 uses : actions/checkout@v5
5977
6078 - name : Setup python
6179 uses : actions/setup-python@v6
6280 with :
81+ python-version : " 3.12"
6382 cache : " pip"
83+ cache-dependency-path : requirements.txt
6484 - run : pip3 install -r requirements.txt
6585
6686 - name : Generate docker-compose.yml files with generate-docker-compose.sh
6787 run : ./generate-docker-compose.sh
6888
69- - name : Push commit
70- uses : EndBug/add-and-commit@v9
71- with :
72- message : " Generate docker-compose.yml files"
73- add : " docker-compose/docker-compose*"
89+ - name : Commit and push generated docker-compose files
90+ run : |
91+ git config user.name "github-actions[bot]"
92+ git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
93+ git add docker-compose/docker-compose*
94+ if git diff --cached --quiet; then
95+ echo "No docker-compose changes to commit"
96+ exit 0
97+ fi
98+ git commit -m "Generate docker-compose.yml files"
99+ git pull --rebase origin "${GITHUB_REF_NAME}"
100+ git push origin "HEAD:${GITHUB_REF_NAME}"
74101
75102 docker-publish :
76103 name : Publish Docker Images
@@ -145,37 +172,55 @@ jobs:
145172 package-cleanup :
146173 name : Cleanup Old GitHub Packages
147174 runs-on : ubuntu-latest
175+ permissions :
176+ contents : read
177+ packages : write
148178 steps :
149- - name : Delete Package Versions
150- uses : actions/delete-package-versions@v5
179+ - name : Delete old untagged package versions
180+ uses : snok/container-retention-policy@v3.0.1
151181 with :
152- package-name : gameserver
153- package-type : container
154- min-versions-to-keep : 1
155- delete-only-untagged-versions : true
182+ account : GameServerManagers
183+ token : ${{ secrets.GITHUB_TOKEN }}
184+ image-names : gameserver
185+ tag-selection : untagged
186+ keep-n-most-recent : 1
187+ cut-off : 1s
188+ dry-run : true
156189
157190 package-cleanup-2 :
158191 name : Cleanup Old GitHub Packages 2
159192 needs : package-cleanup
160193 runs-on : ubuntu-latest
194+ permissions :
195+ contents : read
196+ packages : write
161197 steps :
162- - name : Delete Package Versions
163- uses : actions/delete-package-versions@v5
198+ - name : Delete old untagged package versions
199+ uses : snok/container-retention-policy@v3.0.1
164200 with :
165- package-name : gameserver
166- package-type : container
167- min-versions-to-keep : 1
168- delete-only-untagged-versions : true
201+ account : GameServerManagers
202+ token : ${{ secrets.GITHUB_TOKEN }}
203+ image-names : gameserver
204+ tag-selection : untagged
205+ keep-n-most-recent : 1
206+ cut-off : 1s
207+ dry-run : true
169208
170209 package-cleanup-3 :
171210 name : Cleanup Old GitHub Packages 3
172211 needs : package-cleanup-2
173212 runs-on : ubuntu-latest
213+ permissions :
214+ contents : read
215+ packages : write
174216 steps :
175- - name : Delete Package Versions
176- uses : actions/delete-package-versions@v5
217+ - name : Delete old untagged package versions
218+ uses : snok/container-retention-policy@v3.0.1
177219 with :
178- package-name : gameserver
179- package-type : container
180- min-versions-to-keep : 1
181- delete-only-untagged-versions : true
220+ account : GameServerManagers
221+ token : ${{ secrets.GITHUB_TOKEN }}
222+ image-names : gameserver
223+ tag-selection : untagged
224+ keep-n-most-recent : 1
225+ cut-off : 1s
226+ dry-run : true
0 commit comments