Skip to content

Commit c45d1fb

Browse files
Bot Updating Templated Files
1 parent 9429a08 commit c45d1fb

File tree

1 file changed

+24
-7
lines changed

1 file changed

+24
-7
lines changed

.github/workflows/external_trigger.yml

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -48,13 +48,30 @@ jobs:
4848
--header "Accept: application/vnd.oci.image.index.v1+json" \
4949
--header "Authorization: Bearer ${token}" \
5050
"https://ghcr.io/v2/${image}/manifests/${tag}")
51-
multidigest=$(jq -r ".manifests[] | select(.platform.architecture == \"amd64\").digest?" <<< "${multidigest}")
52-
digest=$(curl -s \
53-
--header "Accept: application/vnd.docker.distribution.manifest.v2+json" \
54-
--header "Accept: application/vnd.oci.image.manifest.v1+json" \
55-
--header "Authorization: Bearer ${token}" \
56-
"https://ghcr.io/v2/${image}/manifests/${multidigest}" \
57-
| jq -r '.config.digest')
51+
if jq -e '.layers // empty' <<< "${multidigest}" >/dev/null 2>&1; then
52+
# If there's a layer element it's a single-arch manifest so just get that digest
53+
digest=$(jq -r '.config.digest' <<< "${multidigest}")
54+
else
55+
# Otherwise it's multi-arch or has manifest annotations
56+
if jq -e '.manifests[]?.annotations // empty' <<< "${multidigest}" >/dev/null 2>&1; then
57+
# Check for manifest annotations and delete if found
58+
multidigest=$(jq 'del(.manifests[] | select(.annotations))' <<< "${multidigest}")
59+
fi
60+
if [[ $(jq '.manifests | length' <<< "${multidigest}") -gt 1 ]]; then
61+
# If there's still more than one digest, it's multi-arch
62+
multidigest=$(jq -r ".manifests[] | select(.platform.architecture == \"amd64\").digest?" <<< "${multidigest}")
63+
else
64+
# Otherwise it's single arch
65+
multidigest=$(jq -r ".manifests[].digest?" <<< "${multidigest}")
66+
fi
67+
if digest=$(curl -s \
68+
--header "Accept: application/vnd.docker.distribution.manifest.v2+json" \
69+
--header "Accept: application/vnd.oci.image.manifest.v1+json" \
70+
--header "Authorization: Bearer ${token}" \
71+
"https://ghcr.io/v2/${image}/manifests/${multidigest}"); then
72+
digest=$(jq -r '.config.digest' <<< "${digest}");
73+
fi
74+
fi
5875
image_info=$(curl -sL \
5976
--header "Authorization: Bearer ${token}" \
6077
"https://ghcr.io/v2/${image}/blobs/${digest}")

0 commit comments

Comments
 (0)