Skip to content

Commit c4a2cda

Browse files
Copilotneilime
andcommitted
Make package version assertions more precise for signed/unsigned and mono/multi-arch
Co-authored-by: neilime <314088+neilime@users.noreply.github.com>
1 parent bc2dc4d commit c4a2cda

1 file changed

Lines changed: 66 additions & 8 deletions

File tree

.github/workflows/__test-workflow-docker-build-images.yml

Lines changed: 66 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -117,10 +117,16 @@ jobs:
117117
image-name: test-mono-arch-signed
118118
platform-count: 1
119119
platforms: '["linux/amd64"]'
120+
expected-tagged-versions: 2
121+
expected-untagged-versions: 2
122+
expected-total-versions: 4
120123
- arch-type: multi-arch
121124
image-name: test-multi-arch-signed
122125
platform-count: 2
123126
platforms: '["linux/amd64","linux/arm64"]'
127+
expected-tagged-versions: 2
128+
expected-untagged-versions: 3
129+
expected-total-versions: 5
124130
steps:
125131
- name: Login to GitHub Container Registry
126132
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
@@ -140,17 +146,40 @@ jobs:
140146
env:
141147
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
142148
IMAGE_NAME: ${{ matrix.image-name }}
149+
EXPECTED_TOTAL_VERSIONS: ${{ matrix.expected-total-versions }}
150+
EXPECTED_TAGGED_VERSIONS: ${{ matrix.expected-tagged-versions }}
151+
EXPECTED_UNTAGGED_VERSIONS: ${{ matrix.expected-untagged-versions }}
143152
run: |
144-
versions_count=$(gh api \
153+
# Get all versions
154+
versions=$(gh api \
145155
-H "Accept: application/vnd.github+json" \
146156
-H "X-GitHub-Api-Version: 2022-11-28" \
147-
/orgs/${{ github.repository_owner }}/packages/container/ci-github-container%2F"${IMAGE_NAME}"/versions | jq '. | length')
157+
/orgs/${{ github.repository_owner }}/packages/container/ci-github-container%2F"${IMAGE_NAME}"/versions)
148158
149-
if [ "$versions_count" -ne 2 ]; then
150-
echo "Expected 2 versions (1 tagged and 1 untagged), but found $versions_count"
159+
total_count=$(echo "$versions" | jq '. | length')
160+
tagged_count=$(echo "$versions" | jq '[.[] | select(.metadata.container.tags | length > 0)] | length')
161+
untagged_count=$(echo "$versions" | jq '[.[] | select(.metadata.container.tags | length == 0)] | length')
162+
163+
echo "Found $total_count total versions ($tagged_count tagged, $untagged_count untagged)"
164+
echo "Expected $EXPECTED_TOTAL_VERSIONS total versions ($EXPECTED_TAGGED_VERSIONS tagged, $EXPECTED_UNTAGGED_VERSIONS untagged)"
165+
166+
if [ "$total_count" -ne "$EXPECTED_TOTAL_VERSIONS" ]; then
167+
echo "ERROR: Expected $EXPECTED_TOTAL_VERSIONS total versions, but found $total_count"
168+
exit 1
169+
fi
170+
171+
if [ "$tagged_count" -ne "$EXPECTED_TAGGED_VERSIONS" ]; then
172+
echo "ERROR: Expected $EXPECTED_TAGGED_VERSIONS tagged versions, but found $tagged_count"
151173
exit 1
152174
fi
153175
176+
if [ "$untagged_count" -ne "$EXPECTED_UNTAGGED_VERSIONS" ]; then
177+
echo "ERROR: Expected $EXPECTED_UNTAGGED_VERSIONS untagged versions, but found $untagged_count"
178+
exit 1
179+
fi
180+
181+
echo "✓ Package version counts are correct"
182+
154183
- name: Verify image manifest and platforms
155184
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
156185
env:
@@ -214,10 +243,16 @@ jobs:
214243
image-name: test-mono-arch-unsigned
215244
platform-count: 1
216245
platforms: '["linux/amd64"]'
246+
expected-tagged-versions: 1
247+
expected-untagged-versions: 1
248+
expected-total-versions: 2
217249
- arch-type: multi-arch
218250
image-name: test-multi-arch-unsigned
219251
platform-count: 2
220252
platforms: '["linux/amd64","linux/arm64"]'
253+
expected-tagged-versions: 1
254+
expected-untagged-versions: 2
255+
expected-total-versions: 3
221256
steps:
222257
- name: Login to GitHub Container Registry
223258
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
@@ -237,17 +272,40 @@ jobs:
237272
env:
238273
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
239274
IMAGE_NAME: ${{ matrix.image-name }}
275+
EXPECTED_TOTAL_VERSIONS: ${{ matrix.expected-total-versions }}
276+
EXPECTED_TAGGED_VERSIONS: ${{ matrix.expected-tagged-versions }}
277+
EXPECTED_UNTAGGED_VERSIONS: ${{ matrix.expected-untagged-versions }}
240278
run: |
241-
versions_count=$(gh api \
279+
# Get all versions
280+
versions=$(gh api \
242281
-H "Accept: application/vnd.github+json" \
243282
-H "X-GitHub-Api-Version: 2022-11-28" \
244-
/orgs/${{ github.repository_owner }}/packages/container/ci-github-container%2F"${IMAGE_NAME}"/versions | jq '. | length')
283+
/orgs/${{ github.repository_owner }}/packages/container/ci-github-container%2F"${IMAGE_NAME}"/versions)
245284
246-
if [ "$versions_count" -ne 2 ]; then
247-
echo "Expected 2 versions (1 tagged and 1 untagged), but found $versions_count"
285+
total_count=$(echo "$versions" | jq '. | length')
286+
tagged_count=$(echo "$versions" | jq '[.[] | select(.metadata.container.tags | length > 0)] | length')
287+
untagged_count=$(echo "$versions" | jq '[.[] | select(.metadata.container.tags | length == 0)] | length')
288+
289+
echo "Found $total_count total versions ($tagged_count tagged, $untagged_count untagged)"
290+
echo "Expected $EXPECTED_TOTAL_VERSIONS total versions ($EXPECTED_TAGGED_VERSIONS tagged, $EXPECTED_UNTAGGED_VERSIONS untagged)"
291+
292+
if [ "$total_count" -ne "$EXPECTED_TOTAL_VERSIONS" ]; then
293+
echo "ERROR: Expected $EXPECTED_TOTAL_VERSIONS total versions, but found $total_count"
294+
exit 1
295+
fi
296+
297+
if [ "$tagged_count" -ne "$EXPECTED_TAGGED_VERSIONS" ]; then
298+
echo "ERROR: Expected $EXPECTED_TAGGED_VERSIONS tagged versions, but found $tagged_count"
248299
exit 1
249300
fi
250301
302+
if [ "$untagged_count" -ne "$EXPECTED_UNTAGGED_VERSIONS" ]; then
303+
echo "ERROR: Expected $EXPECTED_UNTAGGED_VERSIONS untagged versions, but found $untagged_count"
304+
exit 1
305+
fi
306+
307+
echo "✓ Package version counts are correct"
308+
251309
- name: Verify image manifest and platforms
252310
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
253311
env:

0 commit comments

Comments
 (0)