Skip to content

Commit 1f5d275

Browse files
committed
pull down raw repo at major version to get tarballs to ingest
1 parent fbad214 commit 1f5d275

File tree

6 files changed

+100
-23
lines changed

6 files changed

+100
-23
lines changed

.github/workflows/external_trigger.yml

Lines changed: 78 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,81 @@ jobs:
1212
- name: External Trigger
1313
if: github.ref == 'refs/heads/master'
1414
run: |
15-
echo "**** No external release, exiting ****"
16-
exit 0
15+
if [ -n "${{ secrets.PAUSE_EXTERNAL_TRIGGER_BASEIMAGE_FEDORA_MASTER }}" ]; then
16+
echo "**** Github secret PAUSE_EXTERNAL_TRIGGER_BASEIMAGE_FEDORA_MASTER is set; skipping trigger. ****"
17+
exit 0
18+
fi
19+
echo "**** External trigger running off of master branch. To disable this trigger, set a Github secret named \"PAUSE_EXTERNAL_TRIGGER_BASEIMAGE_FEDORA_MASTER\". ****"
20+
echo "**** Retrieving external version ****"
21+
EXT_RELEASE=$(echo 34)
22+
if [ -z "${EXT_RELEASE}" ] || [ "${EXT_RELEASE}" == "null" ]; then
23+
echo "**** Can't retrieve external version, exiting ****"
24+
FAILURE_REASON="Can't retrieve external version for baseimage-fedora branch master"
25+
GHA_TRIGGER_URL="https://github.com/linuxserver/docker-baseimage-fedora/actions/runs/${{ github.run_id }}"
26+
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 16711680,
27+
"description": "**Trigger Failed** \n**Reason:** '"${FAILURE_REASON}"' \n**Trigger URL:** '"${GHA_TRIGGER_URL}"' \n"}],
28+
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
29+
exit 1
30+
fi
31+
EXT_RELEASE=$(echo ${EXT_RELEASE} | sed 's/[~,%@+;:/]//g')
32+
echo "**** External version: ${EXT_RELEASE} ****"
33+
echo "**** Retrieving last pushed version ****"
34+
image="linuxserver/baseimage-fedora"
35+
tag="34"
36+
token=$(curl -sX GET \
37+
"https://ghcr.io/token?scope=repository%3Alinuxserver%2Fbaseimage-fedora%3Apull" \
38+
| jq -r '.token')
39+
multidigest=$(curl -s \
40+
--header "Accept: application/vnd.docker.distribution.manifest.v2+json" \
41+
--header "Authorization: Bearer ${token}" \
42+
"https://ghcr.io/v2/${image}/manifests/${tag}" \
43+
| jq -r 'first(.manifests[].digest)')
44+
digest=$(curl -s \
45+
--header "Accept: application/vnd.docker.distribution.manifest.v2+json" \
46+
--header "Authorization: Bearer ${token}" \
47+
"https://ghcr.io/v2/${image}/manifests/${multidigest}" \
48+
| jq -r '.config.digest')
49+
image_info=$(curl -sL \
50+
--header "Authorization: Bearer ${token}" \
51+
"https://ghcr.io/v2/${image}/blobs/${digest}" \
52+
| jq -r '.container_config')
53+
IMAGE_RELEASE=$(echo ${image_info} | jq -r '.Labels.build_version' | awk '{print $3}')
54+
IMAGE_VERSION=$(echo ${IMAGE_RELEASE} | awk -F'-ls' '{print $1}')
55+
if [ -z "${IMAGE_VERSION}" ]; then
56+
echo "**** Can't retrieve last pushed version, exiting ****"
57+
FAILURE_REASON="Can't retrieve last pushed version for baseimage-fedora tag 34"
58+
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 16711680,
59+
"description": "**Trigger Failed** \n**Reason:** '"${FAILURE_REASON}"' \n"}],
60+
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
61+
exit 1
62+
fi
63+
echo "**** Last pushed version: ${IMAGE_VERSION} ****"
64+
if [ "${EXT_RELEASE}" == "${IMAGE_VERSION}" ]; then
65+
echo "**** Version ${EXT_RELEASE} already pushed, exiting ****"
66+
exit 0
67+
elif [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-baseimage-fedora/job/master/lastBuild/api/json | jq -r '.building') == "true" ]; then
68+
echo "**** New version ${EXT_RELEASE} found; but there already seems to be an active build on Jenkins; exiting ****"
69+
exit 0
70+
else
71+
echo "**** New version ${EXT_RELEASE} found; old version was ${IMAGE_VERSION}. Triggering new build ****"
72+
response=$(curl -iX POST \
73+
https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-baseimage-fedora/job/master/buildWithParameters?PACKAGE_CHECK=false \
74+
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} | grep -i location | sed "s|^[L|l]ocation: \(.*\)|\1|")
75+
echo "**** Jenkins job queue url: ${response%$'\r'} ****"
76+
echo "**** Sleeping 10 seconds until job starts ****"
77+
sleep 10
78+
buildurl=$(curl -s "${response%$'\r'}api/json" | jq -r '.executable.url')
79+
buildurl="${buildurl%$'\r'}"
80+
echo "**** Jenkins job build url: ${buildurl} ****"
81+
echo "**** Attempting to change the Jenkins job description ****"
82+
curl -iX POST \
83+
"${buildurl}submitDescription" \
84+
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} \
85+
--data-urlencode "description=GHA external trigger https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" \
86+
--data-urlencode "Submit=Submit"
87+
echo "**** Notifying Discord ****"
88+
TRIGGER_REASON="A version change was detected for baseimage-fedora tag 34. Old version:${IMAGE_VERSION} New version:${EXT_RELEASE}"
89+
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903,
90+
"description": "**Build Triggered** \n**Reason:** '"${TRIGGER_REASON}"' \n**Build URL:** '"${buildurl}display/redirect"' \n"}],
91+
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
92+
fi

Dockerfile

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,24 @@ FROM alpine:3.14 as rootfs-stage
22

33
# environment
44
ENV ARCH=x86_64
5+
ARG FEDORA_VERSION
56

67
# install packages
78
RUN \
89
apk add --no-cache \
910
bash \
1011
curl \
12+
git \
1113
jq \
1214
tzdata \
1315
xz
1416

1517
# grab tarball root
1618
RUN \
1719
mkdir /root-out && \
18-
curl -o \
19-
/rootfs.tar.xz -L \
20-
https://github.com/fedora-cloud/docker-brew-fedora/raw/34/${ARCH}/fedora-34.20210722-${ARCH}.tar.xz && \
20+
git clone -b ${FEDORA_VERSION} https://github.com/fedora-cloud/docker-brew-fedora.git && \
2121
tar xf \
22-
/rootfs.tar.xz -C \
22+
docker-brew-fedora/${ARCH}/fedora-${FEDORA_VERSION}*.tar.xz -C \
2323
/root-out && \
2424
sed -i -e 's/^root::/root:!:/' /root-out/etc/shadow
2525

Dockerfile.aarch64

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ FROM alpine:3.14 as rootfs-stage
22

33
# environment
44
ENV ARCH=aarch64
5+
ARG FEDORA_VERSION
56

67
# install packages
78
RUN \
@@ -15,11 +16,9 @@ RUN \
1516
# grab tarball root
1617
RUN \
1718
mkdir /root-out && \
18-
curl -o \
19-
/rootfs.tar.xz -L \
20-
https://github.com/fedora-cloud/docker-brew-fedora/raw/34/${ARCH}/fedora-34.20210722-${ARCH}.tar.xz && \
19+
git clone -b ${FEDORA_VERSION} https://github.com/fedora-cloud/docker-brew-fedora.git && \
2120
tar xf \
22-
/rootfs.tar.xz -C \
21+
docker-brew-fedora/${ARCH}/fedora-${FEDORA_VERSION}*.tar.xz -C \
2322
/root-out && \
2423
sed -i -e 's/^root::/root:!:/' /root-out/etc/shadow
2524

Dockerfile.armhf

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ FROM alpine:3.14 as rootfs-stage
22

33
# environment
44
ENV ARCH=armhfp
5+
ARG FEDORA_VERSION
56

67
# install packages
78
RUN \
@@ -15,11 +16,9 @@ RUN \
1516
# grab tarball root
1617
RUN \
1718
mkdir /root-out && \
18-
curl -o \
19-
/rootfs.tar.xz -L \
20-
https://github.com/fedora-cloud/docker-brew-fedora/raw/34/${ARCH}/fedora-34.20210722-${ARCH}.tar.xz && \
19+
git clone -b ${FEDORA_VERSION} https://github.com/fedora-cloud/docker-brew-fedora.git && \
2120
tar xf \
22-
/rootfs.tar.xz -C \
21+
docker-brew-fedora/${ARCH}/fedora-${FEDORA_VERSION}*.tar.xz -C \
2322
/root-out && \
2423
sed -i -e 's/^root::/root:!:/' /root-out/etc/shadow
2524

Jenkinsfile

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ pipeline {
1717
GITLAB_TOKEN=credentials('b6f0f1dd-6952-4cf6-95d1-9c06380283f0')
1818
GITLAB_NAMESPACE=credentials('gitlab-namespace-id')
1919
SCARF_TOKEN=credentials('scarf_api_key')
20-
BUILD_VERSION_ARG = 'OS'
20+
BUILD_VERSION_ARG = 'FEDORA_VERSION'
2121
LS_USER = 'linuxserver'
2222
LS_REPO = 'docker-baseimage-fedora'
2323
CONTAINER_NAME = 'baseimage-fedora'
@@ -99,12 +99,14 @@ pipeline {
9999
/* ########################
100100
External Release Tagging
101101
######################## */
102-
// If this is an os release set release type to none to indicate no external release
103-
stage("Set ENV os"){
102+
// If this is a custom command to determine version use that command
103+
stage("Set tag custom bash"){
104104
steps{
105105
script{
106-
env.EXT_RELEASE = env.PACKAGE_TAG
107-
env.RELEASE_LINK = 'none'
106+
env.EXT_RELEASE = sh(
107+
script: ''' echo 34 ''',
108+
returnStdout: true).trim()
109+
env.RELEASE_LINK = 'custom_command'
108110
}
109111
}
110112
}
@@ -858,11 +860,11 @@ pipeline {
858860
"tagger": {"name": "LinuxServer Jenkins","email": "[email protected]","date": "'${GITHUB_DATE}'"}}' '''
859861
echo "Pushing New release for Tag"
860862
sh '''#! /bin/bash
861-
echo "Updating base packages to ${PACKAGE_TAG}" > releasebody.json
863+
echo "Updating to ${EXT_RELEASE_CLEAN}" > releasebody.json
862864
echo '{"tag_name":"'${META_TAG}'",\
863865
"target_commitish": "master",\
864866
"name": "'${META_TAG}'",\
865-
"body": "**LinuxServer Changes:**\\n\\n'${LS_RELEASE_NOTES}'\\n\\n**OS Changes:**\\n\\n' > start
867+
"body": "**LinuxServer Changes:**\\n\\n'${LS_RELEASE_NOTES}'\\n\\n**Remote Changes:**\\n\\n' > start
866868
printf '","draft": false,"prerelease": false}' >> releasebody.json
867869
paste -d'\\0' start releasebody.json > releasebody.json.done
868870
curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/releases -d @releasebody.json.done'''

jenkins-vars.yml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,13 @@
22

33
# jenkins variables
44
project_name: docker-baseimage-fedora
5-
external_type: os
5+
external_type: na
6+
custom_version_command: "echo 34"
67
release_type: stable
78
release_tag: "34"
89
ls_branch: master
910
repo_vars:
10-
- BUILD_VERSION_ARG = 'OS'
11+
- BUILD_VERSION_ARG = 'FEDORA_VERSION'
1112
- LS_USER = 'linuxserver'
1213
- LS_REPO = 'docker-baseimage-fedora'
1314
- CONTAINER_NAME = 'baseimage-fedora'

0 commit comments

Comments
 (0)