Skip to content

Commit 66378b2

Browse files
committed
Update release type to stop double tagging
1 parent bf4861f commit 66378b2

5 files changed

Lines changed: 11 additions & 133 deletions

File tree

.github/workflows/external_trigger.yml

Lines changed: 3 additions & 122 deletions
Original file line numberDiff line numberDiff line change
@@ -18,130 +18,11 @@ jobs:
1818
SKIP_EXTERNAL_TRIGGER: ${{ vars.SKIP_EXTERNAL_TRIGGER }}
1919
run: |
2020
printf "# External trigger for docker-baseimage-fedora\n\n" >> $GITHUB_STEP_SUMMARY
21-
if grep -q "^baseimage-fedora_43_" <<< "${SKIP_EXTERNAL_TRIGGER}"; then
22-
echo "> [!NOTE]" >> $GITHUB_STEP_SUMMARY
23-
echo "> Github organizational variable \`SKIP_EXTERNAL_TRIGGER\` contains \`baseimage-fedora_43_\`; will skip trigger if version matches." >> $GITHUB_STEP_SUMMARY
24-
elif grep -q "^baseimage-fedora_43" <<< "${SKIP_EXTERNAL_TRIGGER}"; then
25-
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
26-
echo "> Github organizational variable \`SKIP_EXTERNAL_TRIGGER\` contains \`baseimage-fedora_43\`; skipping trigger." >> $GITHUB_STEP_SUMMARY
27-
exit 0
28-
fi
29-
echo "> [!NOTE]" >> $GITHUB_STEP_SUMMARY
30-
echo "> External trigger running off of 43 branch. To disable this trigger, add \`baseimage-fedora_43\` into the Github organizational variable \`SKIP_EXTERNAL_TRIGGER\`." >> $GITHUB_STEP_SUMMARY
31-
printf "\n## Retrieving external version\n\n" >> $GITHUB_STEP_SUMMARY
32-
EXT_RELEASE=$(echo 43)
33-
echo "Type is \`custom_version_command\`" >> $GITHUB_STEP_SUMMARY
21+
echo "Type is \`os\`" >> $GITHUB_STEP_SUMMARY
22+
echo "No external release, exiting" >> $GITHUB_STEP_SUMMARY
23+
exit 0
3424
if grep -q "^baseimage-fedora_43_${EXT_RELEASE}" <<< "${SKIP_EXTERNAL_TRIGGER}"; then
3525
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
3626
echo "> Github organizational variable \`SKIP_EXTERNAL_TRIGGER\` matches current external release; skipping trigger." >> $GITHUB_STEP_SUMMARY
3727
exit 0
3828
fi
39-
if [ -z "${EXT_RELEASE}" ] || [ "${EXT_RELEASE}" == "null" ]; then
40-
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
41-
echo "> Can't retrieve external version, exiting" >> $GITHUB_STEP_SUMMARY
42-
FAILURE_REASON="Can't retrieve external version for baseimage-fedora branch 43"
43-
GHA_TRIGGER_URL="https://github.com/linuxserver/docker-baseimage-fedora/actions/runs/${{ github.run_id }}"
44-
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 16711680,
45-
"description": "**Trigger Failed** \n**Reason:** '"${FAILURE_REASON}"' \n**Trigger URL:** '"${GHA_TRIGGER_URL}"' \n"}],
46-
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
47-
exit 1
48-
fi
49-
EXT_RELEASE_SANITIZED=$(echo ${EXT_RELEASE} | sed 's/[~,%@+;:/]//g')
50-
echo "Sanitized external version: \`${EXT_RELEASE_SANITIZED}\`" >> $GITHUB_STEP_SUMMARY
51-
echo "Retrieving last pushed version" >> $GITHUB_STEP_SUMMARY
52-
image="linuxserver/baseimage-fedora"
53-
tag="43"
54-
token=$(curl -sX GET \
55-
"https://ghcr.io/token?scope=repository%3Alinuxserver%2Fbaseimage-fedora%3Apull" \
56-
| jq -r '.token')
57-
multidigest=$(curl -s \
58-
--header "Accept: application/vnd.docker.distribution.manifest.v2+json" \
59-
--header "Accept: application/vnd.oci.image.index.v1+json" \
60-
--header "Authorization: Bearer ${token}" \
61-
"https://ghcr.io/v2/${image}/manifests/${tag}")
62-
if jq -e '.layers // empty' <<< "${multidigest}" >/dev/null 2>&1; then
63-
# If there's a layer element it's a single-arch manifest so just get that digest
64-
digest=$(jq -r '.config.digest' <<< "${multidigest}")
65-
else
66-
# Otherwise it's multi-arch or has manifest annotations
67-
if jq -e '.manifests[]?.annotations // empty' <<< "${multidigest}" >/dev/null 2>&1; then
68-
# Check for manifest annotations and delete if found
69-
multidigest=$(jq 'del(.manifests[] | select(.annotations))' <<< "${multidigest}")
70-
fi
71-
if [[ $(jq '.manifests | length' <<< "${multidigest}") -gt 1 ]]; then
72-
# If there's still more than one digest, it's multi-arch
73-
multidigest=$(jq -r ".manifests[] | select(.platform.architecture == \"amd64\").digest?" <<< "${multidigest}")
74-
else
75-
# Otherwise it's single arch
76-
multidigest=$(jq -r ".manifests[].digest?" <<< "${multidigest}")
77-
fi
78-
if digest=$(curl -s \
79-
--header "Accept: application/vnd.docker.distribution.manifest.v2+json" \
80-
--header "Accept: application/vnd.oci.image.manifest.v1+json" \
81-
--header "Authorization: Bearer ${token}" \
82-
"https://ghcr.io/v2/${image}/manifests/${multidigest}"); then
83-
digest=$(jq -r '.config.digest' <<< "${digest}");
84-
fi
85-
fi
86-
image_info=$(curl -sL \
87-
--header "Authorization: Bearer ${token}" \
88-
"https://ghcr.io/v2/${image}/blobs/${digest}")
89-
if [[ $(echo $image_info | jq -r '.container_config') == "null" ]]; then
90-
image_info=$(echo $image_info | jq -r '.config')
91-
else
92-
image_info=$(echo $image_info | jq -r '.container_config')
93-
fi
94-
IMAGE_RELEASE=$(echo ${image_info} | jq -r '.Labels.build_version' | awk '{print $3}')
95-
IMAGE_VERSION=$(echo ${IMAGE_RELEASE} | awk -F'-ls' '{print $1}')
96-
if [ -z "${IMAGE_VERSION}" ]; then
97-
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
98-
echo "Can't retrieve last pushed version, exiting" >> $GITHUB_STEP_SUMMARY
99-
FAILURE_REASON="Can't retrieve last pushed version for baseimage-fedora tag 43"
100-
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 16711680,
101-
"description": "**Trigger Failed** \n**Reason:** '"${FAILURE_REASON}"' \n"}],
102-
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
103-
exit 1
104-
fi
105-
echo "Last pushed version: \`${IMAGE_VERSION}\`" >> $GITHUB_STEP_SUMMARY
106-
if [ "${EXT_RELEASE_SANITIZED}" == "${IMAGE_VERSION}" ]; then
107-
echo "Sanitized version \`${EXT_RELEASE_SANITIZED}\` already pushed, exiting" >> $GITHUB_STEP_SUMMARY
108-
exit 0
109-
elif [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-baseimage-fedora/job/43/lastBuild/api/json | jq -r '.building') == "true" ]; then
110-
echo "New version \`${EXT_RELEASE}\` found; but there already seems to be an active build on Jenkins; exiting" >> $GITHUB_STEP_SUMMARY
111-
exit 0
112-
else
113-
if [[ "${artifacts_found}" == "false" ]]; then
114-
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
115-
echo "> New version detected, but not all artifacts are published yet; skipping trigger" >> $GITHUB_STEP_SUMMARY
116-
FAILURE_REASON="New version ${EXT_RELEASE} for baseimage-fedora tag 43 is detected, however not all artifacts are uploaded to upstream release yet. Will try again later."
117-
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903,
118-
"description": "**Trigger Failed** \n**Reason:** '"${FAILURE_REASON}"' \n"}],
119-
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
120-
else
121-
printf "\n## Trigger new build\n\n" >> $GITHUB_STEP_SUMMARY
122-
echo "New sanitized version \`${EXT_RELEASE_SANITIZED}\` found; old version was \`${IMAGE_VERSION}\`. Triggering new build" >> $GITHUB_STEP_SUMMARY
123-
if [[ "${artifacts_found}" == "true" ]]; then
124-
echo "All artifacts seem to be uploaded." >> $GITHUB_STEP_SUMMARY
125-
fi
126-
response=$(curl -iX POST \
127-
https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-baseimage-fedora/job/43/buildWithParameters?PACKAGE_CHECK=false \
128-
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} | grep -i location | sed "s|^[L|l]ocation: \(.*\)|\1|")
129-
echo "Jenkins [job queue url](${response%$'\r'})" >> $GITHUB_STEP_SUMMARY
130-
echo "Sleeping 10 seconds until job starts" >> $GITHUB_STEP_SUMMARY
131-
sleep 10
132-
buildurl=$(curl -s "${response%$'\r'}api/json" | jq -r '.executable.url')
133-
buildurl="${buildurl%$'\r'}"
134-
echo "Jenkins job [build url](${buildurl})" >> $GITHUB_STEP_SUMMARY
135-
echo "Attempting to change the Jenkins job description" >> $GITHUB_STEP_SUMMARY
136-
curl -iX POST \
137-
"${buildurl}submitDescription" \
138-
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} \
139-
--data-urlencode "description=GHA external trigger https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" \
140-
--data-urlencode "Submit=Submit"
141-
echo "**** Notifying Discord ****"
142-
TRIGGER_REASON="A version change was detected for baseimage-fedora tag 43. Old version:${IMAGE_VERSION} New version:${EXT_RELEASE_SANITIZED}"
143-
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903,
144-
"description": "**Build Triggered** \n**Reason:** '"${TRIGGER_REASON}"' \n**Build URL:** '"${buildurl}display/redirect"' \n"}],
145-
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
146-
fi
147-
fi

Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ FROM alpine:3 AS rootfs-stage
44

55
# environment
66
ENV ARCH=x86_64
7-
ARG FEDORA_VERSION
7+
ARG FEDORA_VERSION=43
88

99
# install packages
1010
RUN \

Dockerfile.aarch64

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ FROM alpine:3 AS rootfs-stage
44

55
# environment
66
ENV ARCH=aarch64
7-
ARG FEDORA_VERSION
7+
ARG FEDORA_VERSION=43
88

99
# install packages
1010
RUN \

Jenkinsfile

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -142,14 +142,12 @@ pipeline {
142142
/* ########################
143143
External Release Tagging
144144
######################## */
145-
// If this is a custom command to determine version use that command
146-
stage("Set tag custom bash"){
145+
// If this is an os release set release type to none to indicate no external release
146+
stage("Set ENV os"){
147147
steps{
148148
script{
149-
env.EXT_RELEASE = sh(
150-
script: ''' echo 43 ''',
151-
returnStdout: true).trim()
152-
env.RELEASE_LINK = 'custom_command'
149+
env.EXT_RELEASE = env.PACKAGE_TAG
150+
env.RELEASE_LINK = 'none'
153151
}
154152
}
155153
}
@@ -952,7 +950,7 @@ pipeline {
952950
"type": "commit",\
953951
"tagger": {"name": "LinuxServer-CI","email": "ci@linuxserver.io","date": "'${GITHUB_DATE}'"}}'
954952
echo "Pushing New release for Tag"
955-
echo "Updating to ${EXT_RELEASE_CLEAN}" > releasebody.json
953+
echo "Updating base packages to ${PACKAGE_TAG}" > releasebody.json
956954
jq -n \
957955
--arg tag_name "$META_TAG" \
958956
--arg target_commitish "43" \

jenkins-vars.yml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@
22

33
# jenkins variables
44
project_name: docker-baseimage-fedora
5-
external_type: na
6-
custom_version_command: "echo 43"
5+
external_type: os
76
release_type: stable
87
release_tag: "43"
98
ls_branch: "43"

0 commit comments

Comments
 (0)