20
20
build :
21
21
runs-on : ubuntu-22.04
22
22
env :
23
+ # We don't push here when building PRs, so we can use the same IMAGE_REGISTRY in all branches of the workflow
24
+ IMAGE_REGISTRY : " ghcr.io/${{ github.repository }}/workbench-images"
23
25
# GitHub image registry used for storing $(CONTAINER_ENGINE)'s cache
24
26
CACHE : " ghcr.io/${{ github.repository }}/workbench-images/build-cache"
25
27
TRIVY_VERSION : 0.57.1
@@ -115,6 +117,15 @@ jobs:
115
117
systemctl --user start homebrew.podman.service
116
118
echo "PODMAN_SOCK=/run/user/${UID}/podman/podman.sock" >> $GITHUB_ENV
117
119
120
+ - name : Calculate image name and tag
121
+ id : calculated_vars
122
+ run : |
123
+ SANITIZED_REF_NAME=$(echo "${{ github.ref_name }}" | sed 's/[^a-zA-Z0-9._-]/_/g')
124
+ IMAGE_TAG="${SANITIZED_REF_NAME}_${{ github.sha }}"
125
+
126
+ echo "IMAGE_TAG=${IMAGE_TAG}" >> "$GITHUB_OUTPUT"
127
+ echo "OUTPUT_IMAGE=${{ env.IMAGE_REGISTRY}}:${{ inputs.target }}-${IMAGE_TAG}" >> "$GITHUB_OUTPUT"
128
+
118
129
- name : " pull_request|schedule: resolve target if Trivy scan should run"
119
130
id : resolve-target
120
131
if : ${{ fromJson(inputs.github).event_name == 'pull_request' || fromJson(inputs.github).event_name == 'schedule' }}
@@ -128,15 +139,15 @@ jobs:
128
139
TARGET="$FS_SCAN_FOLDER"
129
140
TYPE="fs"
130
141
else
131
- TARGET="ghcr.io/ ${{ github.repository }}/workbench-images:${{ inputs.target }}-${{ github.sha }}"
142
+ TARGET="${{ steps.calculated_vars.outputs.OUTPUT_IMAGE }}"
132
143
TYPE="image"
133
144
fi
134
145
elif [[ "$EVENT_NAME" == "schedule" ]]; then
135
146
if [[ -n "$FS_SCAN_FOLDER" ]]; then
136
147
TARGET="$FS_SCAN_FOLDER"
137
148
TYPE="fs"
138
149
else
139
- TARGET="ghcr.io/ ${{ github.repository }}/workbench-images:${{ inputs.target }}-${{ github.ref_name }}_${{ github.sha }}"
150
+ TARGET="${{ steps.calculated_vars.outputs.OUTPUT_IMAGE }}"
140
151
TYPE="image"
141
152
fi
142
153
fi
@@ -172,12 +183,10 @@ jobs:
172
183
# https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#push
173
184
- name : " push|schedule: make ${{ inputs.target }}"
174
185
run : |
175
- SANITIZED_REF_NAME=$(echo "${{ github.ref_name }}" | sed 's/[^a-zA-Z0-9._-]/_/g')
176
- export IMAGE_TAG="${SANITIZED_REF_NAME}_${{ github.sha }}"
177
186
make ${{ inputs.target }}
178
187
if : ${{ fromJson(inputs.github).event_name == 'push' || fromJson(inputs.github).event_name == 'schedule' }}
179
188
env :
180
- IMAGE_REGISTRY : " ghcr.io/ ${{ github.repository }}/workbench-images "
189
+ IMAGE_TAG : " ${{ steps.calculated_vars.outputs.IMAGE_TAG }}"
181
190
CONTAINER_BUILD_CACHE_ARGS : " --cache-from ${{ env.CACHE }} --cache-to ${{ env.CACHE }}"
182
191
# dependent images were already built and pushed, so just let podman pull it
183
192
BUILD_DEPENDENT_IMAGES : " no"
@@ -188,8 +197,7 @@ jobs:
188
197
make ${{ inputs.target }}
189
198
if : " ${{ fromJson(inputs.github).event_name == 'pull_request' }}"
190
199
env :
191
- IMAGE_TAG : " ${{ github.sha }}"
192
- IMAGE_REGISTRY : " ghcr.io/${{ github.repository }}/workbench-images"
200
+ IMAGE_TAG : " ${{ steps.calculated_vars.outputs.IMAGE_TAG }}"
193
201
CONTAINER_BUILD_CACHE_ARGS : " --cache-from ${{ env.CACHE }}"
194
202
# We don't have access to image registry, so disable pushing
195
203
PUSH_IMAGES : " no"
@@ -275,7 +283,7 @@ jobs:
275
283
EOF
276
284
working-directory : tests/browser
277
285
env :
278
- TEST_TARGET : " ghcr.io/ ${{ github.repository }}/workbench-images:${{ inputs.target }}-${{ github.sha }}"
286
+ TEST_TARGET : " ${{ steps.calculated_vars.outputs.OUTPUT_IMAGE }}"
279
287
- uses : actions/upload-artifact@v4
280
288
if : ${{ !cancelled() && fromJson(inputs.github).event_name == 'pull_request' && contains(inputs.target, 'codeserver') }}
281
289
with :
0 commit comments