@@ -18,7 +18,38 @@ permissions:
18
18
packages : write
19
19
20
20
jobs :
21
+ determine-tags :
22
+ runs-on : ubuntu-latest
23
+ name : Determine image tags
24
+ outputs :
25
+ IMAGE_BASE_TAG : ${{ steps.determine-tags.outputs.IMAGE_BASE_TAG }}
26
+ IMAGE_MAJOR_MINOR : ${{ steps.determine-tags.outputs.IMAGE_MAJOR_MINOR }}
27
+
28
+ steps :
29
+ - name : Determine image version tag
30
+ id : determine-tags
31
+ run : |
32
+ VERSION=${{ github.event.inputs.docker_tag_version }}
33
+ VERSION_WITHOUT_V=${VERSION#v}
34
+ MAJOR_MINOR=$(echo $VERSION_WITHOUT_V | cut -d. -f1-2)
35
+
36
+ if skopeo inspect docker://ghcr.io/${{ env.GITHUB_IMAGE }}:${VERSION}; then
37
+ echo "${VERSION} tag already exists, assuming we're building a patch release!"
38
+ LATEST_PATCH_VERSION=$(skopeo list-tags docker://ghcr.io/${{ env.GITHUB_IMAGE }} | grep -E "${VERSION}-[0-9]+" | sort | uniq | tail -1 | tr -d \" | cut -d'-' -f2)
39
+ NEW_PATCH_VERSION=$((LATEST_PATCH_VERSION + 1))
40
+ IMAGE_BASE_TAG="${VERSION}-${NEW_PATCH_VERSION}"
41
+ echo "Building patch release ${IMAGE_BASE_TAG}!"
42
+ else
43
+ echo "${VERSION} tag does not exist, assuming we're building a new release!"
44
+ IMAGE_BASE_TAG="${VERSION}"
45
+ fi
46
+
47
+ echo "IMAGE_BASE_TAG=$IMAGE_BASE_TAG" >> $GITHUB_OUTPUT
48
+ echo "IMAGE_MAJOR_MINOR=$MAJOR_MINOR" >> $GITHUB_OUTPUT
49
+
21
50
build-prod-image-metadata :
51
+ needs :
52
+ - determine-tags
22
53
runs-on : ubuntu-latest
23
54
name : Build prod image metadata
24
55
outputs :
31
62
steps :
32
63
- name : Checkout code
33
64
uses : actions/checkout@v4
34
-
35
- - name : Extract version parts
36
- id : extract_version
37
- run : |
38
- VERSION=${{ github.event.inputs.docker_tag_version }}
39
- VERSION_WITHOUT_V=${VERSION#v}
40
- MAJOR_MINOR=$(echo $VERSION_WITHOUT_V | cut -d. -f1-2)
41
-
42
- echo "VERSION=$VERSION" >> $GITHUB_ENV
43
- echo "VERSION_WITHOUT_V=$VERSION_WITHOUT_V" >> $GITHUB_ENV
44
- echo "MAJOR_MINOR=$MAJOR_MINOR" >> $GITHUB_ENV
45
-
46
- - name : Determine image version tag
47
- id : determine-tags
48
- run : |
49
- if skopeo inspect docker://ghcr.io/${{ env.GITHUB_IMAGE }}:${{ env.VERSION }}; then
50
- echo "${{ env.VERSION }} tag already exists, assuming we're building a patch release!"
51
- LATEST_PATCH_VERSION=$(skopeo list-tags docker://ghcr.io/${{ env.GITHUB_IMAGE }} | grep -E "${{ env.VERSION }}-[0-9]+" | sort | uniq | tail -1 | tr -d \" | cut -d'-' -f2)
52
- NEW_PATCH_VERSION=$((LATEST_PATCH_VERSION + 1))
53
- IMAGE_TAG="${{ env.VERSION }}-${NEW_PATCH_VERSION}"
54
- echo "Building patch release ${IMAGE_TAG}!"
55
- else
56
- echo "${{ env.VERSION }} tag does not exist, assuming we're building a new release!"
57
- IMAGE_TAG="${{ env.VERSION }}"
58
- fi
59
-
60
- echo "IMAGE_TAG=$IMAGE_TAG" >> $GITHUB_ENV
61
- env :
62
- VERSION : ${{env.VERSION }}
63
65
64
66
- name : docker metadata for building
65
67
id : image-metadata
@@ -68,27 +70,21 @@ jobs:
68
70
images : " ghcr.io/${{ env.GITHUB_IMAGE }}"
69
71
tags : |
70
72
raw,latest
71
- type=raw,value=${{ env.IMAGE_TAG }}
72
- type=raw,value=v${{ env.IMAGE_TAG }}
73
- type=raw,value=${{ env.MAJOR_MINOR }}
74
- type=raw,value=v${{ env.MAJOR_MINOR }}
75
- env :
76
- IMAGE_TAG : ${{ env.IMAGE_TAG }}
77
- MAJOR_MINOR : ${{ env.MAJOR_MINOR }}
73
+ type=raw,value=${{ needs.determine-tags.outputs.IMAGE_BASE_TAG }}
74
+ type=raw,value=v${{ needs.determine-tags.outputs.IMAGE_BASE_TAG }}
75
+ type=raw,value=${{ needs.determine-tags.outputs.IMAGE_MAJOR_MINOR }}
76
+ type=raw,value=v${{ needs.determine-tags.outputs.IMAGE_MAJOR_MINOR }}
78
77
79
78
- name : docker tags for cloning
80
79
id : image-tags
81
80
uses : docker/metadata-action@v5
82
81
with :
83
82
tags : |
84
83
raw,latest
85
- type=raw,value=${{ env.IMAGE_TAG }}
86
- type=raw,value=v${{ env.IMAGE_TAG }}
87
- type=raw,value=${{ env.MAJOR_MINOR }}
88
- type=raw,value=v${{ env.MAJOR_MINOR }}
89
- env :
90
- IMAGE_TAG : ${{ env.IMAGE_TAG }}
91
- MAJOR_MINOR : ${{ env.MAJOR_MINOR }}
84
+ type=raw,value=${{ needs.determine-tags.outputs.IMAGE_BASE_TAG }}
85
+ type=raw,value=v${{ needs.determine-tags.outputs.IMAGE_BASE_TAG }}
86
+ type=raw,value=${{ needs.determine-tags.outputs.IMAGE_MAJOR_MINOR }}
87
+ type=raw,value=v${{ needs.determine-tags.outputs.IMAGE_MAJOR_MINOR }}
92
88
93
89
- name : Set outputs
94
90
id : set-outputs
97
93
echo "DOCKER_IMG_NAME=${{env.DOCKER_REPO}}/${{ env.DOCKER_IMAGE }}" >> $GITHUB_OUTPUT
98
94
99
95
build-debug-image-metadata :
96
+ needs :
97
+ - determine-tags
100
98
runs-on : ubuntu-latest
101
99
name : Build debug image metadata
102
100
outputs :
@@ -110,35 +108,6 @@ jobs:
110
108
- name : Checkout code
111
109
uses : actions/checkout@v4
112
110
113
- - name : Extract version parts
114
- id : extract_version
115
- run : |
116
- VERSION=${{ github.event.inputs.docker_tag_version }}
117
- VERSION_WITHOUT_V=${VERSION#v}
118
- MAJOR_MINOR=$(echo $VERSION_WITHOUT_V | cut -d. -f1-2)
119
-
120
- echo "VERSION=$VERSION" >> $GITHUB_ENV
121
- echo "VERSION_WITHOUT_V=$VERSION_WITHOUT_V" >> $GITHUB_ENV
122
- echo "MAJOR_MINOR=$MAJOR_MINOR" >> $GITHUB_ENV
123
-
124
- - name : Determine image version tag
125
- id : determine-tags
126
- run : |
127
- if skopeo inspect docker://ghcr.io/${{ env.GITHUB_IMAGE }}:${{ env.VERSION }}-debug; then
128
- echo "${{ env.VERSION }}-debug tag already exists, assuming we're building a patch release!"
129
- LATEST_PATCH_VERSION=$(skopeo list-tags docker://ghcr.io/${{ env.GITHUB_IMAGE }} | grep -E "${{ env.VERSION }}-[0-9]+" | sort | uniq | tail -1 | tr -d \" | cut -d'-' -f2)
130
- NEW_PATCH_VERSION=$((LATEST_PATCH_VERSION + 1))
131
- IMAGE_TAG="${{ env.VERSION }}-${NEW_PATCH_VERSION}"
132
- echo "Building patch release ${IMAGE_TAG}-debug!"
133
- else
134
- echo "${{ env.VERSION }}-debug tag does not exist, assuming we're building a new release!"
135
- IMAGE_TAG="${{ env.VERSION }}"
136
- fi
137
-
138
- echo "IMAGE_TAG=$IMAGE_TAG" >> $GITHUB_ENV
139
- env :
140
- VERSION : ${{env.VERSION }}
141
-
142
111
- name : docker metadata
143
112
id : image-metadata
144
113
uses : docker/metadata-action@v5
@@ -148,13 +117,10 @@ jobs:
148
117
latest=false
149
118
suffix=-debug
150
119
tags : |
151
- type=raw,value=${{ env.IMAGE_TAG }}
152
- type=raw,value=v${{ env.IMAGE_TAG }}
153
- type=raw,value=${{ env.MAJOR_MINOR }}
154
- type=raw,value=v${{ env.MAJOR_MINOR }}
155
- env :
156
- IMAGE_TAG : ${{ env.IMAGE_TAG }}
157
- MAJOR_MINOR : ${{ env.MAJOR_MINOR }}
120
+ type=raw,value=${{ needs.determine-tags.outputs.IMAGE_BASE_TAG }}
121
+ type=raw,value=v${{ needs.determine-tags.outputs.IMAGE_BASE_TAG }}
122
+ type=raw,value=${{ needs.determine-tags.outputs.IMAGE_MAJOR_MINOR }}
123
+ type=raw,value=v${{ needs.determine-tags.outputs.IMAGE_MAJOR_MINOR }}
158
124
159
125
- name : docker tags for cloning
160
126
id : image-tags
@@ -164,13 +130,10 @@ jobs:
164
130
latest=false
165
131
suffix=-debug
166
132
tags : |
167
- type=raw,value=${{ env.IMAGE_TAG }}
168
- type=raw,value=v${{ env.IMAGE_TAG }}
169
- type=raw,value=${{ env.MAJOR_MINOR }}
170
- type=raw,value=v${{ env.MAJOR_MINOR }}
171
- env :
172
- IMAGE_TAG : ${{ env.IMAGE_TAG }}
173
- MAJOR_MINOR : ${{ env.MAJOR_MINOR }}
133
+ type=raw,value=${{ needs.determine-tags.outputs.IMAGE_BASE_TAG }}
134
+ type=raw,value=v${{ needs.determine-tags.outputs.IMAGE_BASE_TAG }}
135
+ type=raw,value=${{ needs.determine-tags.outputs.IMAGE_MAJOR_MINOR }}
136
+ type=raw,value=v${{ needs.determine-tags.outputs.IMAGE_MAJOR_MINOR }}
174
137
175
138
- name : Set outputs
176
139
id : set-outputs
@@ -293,7 +256,6 @@ jobs:
293
256
source_registry : ghcr.io
294
257
target_image : " ${{ needs.build-prod-image-metadata.outputs.DOCKER_IMG_NAME }}"
295
258
target_registry : docker.io
296
- platforms : " ['linux/arm64', 'linux/amd64']"
297
259
tags : ${{ needs.build-prod-image-metadata.outputs.release_tags }}
298
260
secrets :
299
261
source_registry_username : ${{ github.actor }}
@@ -313,7 +275,6 @@ jobs:
313
275
source_registry : ghcr.io
314
276
target_image : " ${{ needs.build-debug-image-metadata.outputs.DOCKER_IMG_NAME }}"
315
277
target_registry : docker.io
316
- platforms : " ['linux/arm64', 'linux/amd64']"
317
278
tags : ${{ needs.build-debug-image-metadata.outputs.release_tags }}
318
279
secrets :
319
280
source_registry_username : ${{ github.actor }}
0 commit comments