Compare commits
18 Commits
4.5.2-r2-l
...
4.5.3-r0-l
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
13ee42aab5 | ||
|
|
b8e6e6f316 | ||
|
|
6ab4ba5220 | ||
|
|
f95c73f1e6 | ||
|
|
0649cdf6a9 | ||
|
|
a2bedd3e32 | ||
|
|
65c38315eb | ||
|
|
5d49db1026 | ||
|
|
c33475d7ec | ||
|
|
14cea7736c | ||
|
|
a60d53892a | ||
|
|
e757d93d0f | ||
|
|
3cd16b79c0 | ||
|
|
b61fe79660 | ||
|
|
aed5febcb2 | ||
|
|
f77dcfb697 | ||
|
|
7646ddb988 | ||
|
|
23e9c4ac47 |
6
.github/workflows/call_issue_pr_tracker.yml
vendored
6
.github/workflows/call_issue_pr_tracker.yml
vendored
@@ -2,9 +2,11 @@ name: Issue & PR Tracker
|
|||||||
|
|
||||||
on:
|
on:
|
||||||
issues:
|
issues:
|
||||||
types: [opened,reopened,labeled,unlabeled]
|
types: [opened,reopened,labeled,unlabeled,closed]
|
||||||
pull_request_target:
|
pull_request_target:
|
||||||
types: [opened,reopened,review_requested,review_request_removed,labeled,unlabeled]
|
types: [opened,reopened,review_requested,review_request_removed,labeled,unlabeled,closed]
|
||||||
|
pull_request_review:
|
||||||
|
types: [submitted,edited,dismissed]
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
manage-project:
|
manage-project:
|
||||||
|
|||||||
9
.github/workflows/external_trigger.yml
vendored
9
.github/workflows/external_trigger.yml
vendored
@@ -14,9 +14,11 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
if [ -n "${{ secrets.PAUSE_EXTERNAL_TRIGGER_QBITTORRENT_MASTER }}" ]; then
|
if [ -n "${{ secrets.PAUSE_EXTERNAL_TRIGGER_QBITTORRENT_MASTER }}" ]; then
|
||||||
echo "**** Github secret PAUSE_EXTERNAL_TRIGGER_QBITTORRENT_MASTER is set; skipping trigger. ****"
|
echo "**** Github secret PAUSE_EXTERNAL_TRIGGER_QBITTORRENT_MASTER is set; skipping trigger. ****"
|
||||||
|
echo "Github secret \`PAUSE_EXTERNAL_TRIGGER_QBITTORRENT_MASTER\` is set; skipping trigger." >> $GITHUB_STEP_SUMMARY
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
echo "**** External trigger running off of master branch. To disable this trigger, set a Github secret named \"PAUSE_EXTERNAL_TRIGGER_QBITTORRENT_MASTER\". ****"
|
echo "**** External trigger running off of master branch. To disable this trigger, set a Github secret named \"PAUSE_EXTERNAL_TRIGGER_QBITTORRENT_MASTER\". ****"
|
||||||
|
echo "External trigger running off of master branch. To disable this trigger, set a Github secret named \`PAUSE_EXTERNAL_TRIGGER_QBITTORRENT_MASTER\`" >> $GITHUB_STEP_SUMMARY
|
||||||
echo "**** Retrieving external version ****"
|
echo "**** Retrieving external version ****"
|
||||||
EXT_RELEASE=$(curl -sL "http://dl-cdn.alpinelinux.org/alpine/edge/community/x86_64/APKINDEX.tar.gz" | tar -xz -C /tmp \
|
EXT_RELEASE=$(curl -sL "http://dl-cdn.alpinelinux.org/alpine/edge/community/x86_64/APKINDEX.tar.gz" | tar -xz -C /tmp \
|
||||||
&& awk '/^P:'"qbittorrent-nox"'$/,/V:/' /tmp/APKINDEX | sed -n 2p | sed 's/^V://')
|
&& awk '/^P:'"qbittorrent-nox"'$/,/V:/' /tmp/APKINDEX | sed -n 2p | sed 's/^V://')
|
||||||
@@ -31,6 +33,7 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
EXT_RELEASE=$(echo ${EXT_RELEASE} | sed 's/[~,%@+;:/]//g')
|
EXT_RELEASE=$(echo ${EXT_RELEASE} | sed 's/[~,%@+;:/]//g')
|
||||||
echo "**** External version: ${EXT_RELEASE} ****"
|
echo "**** External version: ${EXT_RELEASE} ****"
|
||||||
|
echo "External version: ${EXT_RELEASE}" >> $GITHUB_STEP_SUMMARY
|
||||||
echo "**** Retrieving last pushed version ****"
|
echo "**** Retrieving last pushed version ****"
|
||||||
image="linuxserver/qbittorrent"
|
image="linuxserver/qbittorrent"
|
||||||
tag="latest"
|
tag="latest"
|
||||||
@@ -66,11 +69,14 @@ jobs:
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
echo "**** Last pushed version: ${IMAGE_VERSION} ****"
|
echo "**** Last pushed version: ${IMAGE_VERSION} ****"
|
||||||
|
echo "Last pushed version: ${IMAGE_VERSION}" >> $GITHUB_STEP_SUMMARY
|
||||||
if [ "${EXT_RELEASE}" == "${IMAGE_VERSION}" ]; then
|
if [ "${EXT_RELEASE}" == "${IMAGE_VERSION}" ]; then
|
||||||
echo "**** Version ${EXT_RELEASE} already pushed, exiting ****"
|
echo "**** Version ${EXT_RELEASE} already pushed, exiting ****"
|
||||||
|
echo "Version ${EXT_RELEASE} already pushed, exiting" >> $GITHUB_STEP_SUMMARY
|
||||||
exit 0
|
exit 0
|
||||||
elif [[ $(curl -sL "http://dl-cdn.alpinelinux.org/alpine/edge/community/aarch64/APKINDEX.tar.gz" | tar -xz -C /tmp && awk '/^P:'"qbittorrent-nox"'$/,/V:/' /tmp/APKINDEX | sed -n 2p | sed 's/^V://') != "${EXT_RELEASE}" ]] || [[ $(curl -sL "http://dl-cdn.alpinelinux.org/alpine/edge/community/armv7/APKINDEX.tar.gz" | tar -xz -C /tmp && awk '/^P:'"qbittorrent-nox"'$/,/V:/' /tmp/APKINDEX | sed -n 2p | sed 's/^V://') != "${EXT_RELEASE}" ]]; then
|
elif [[ $(curl -sL "http://dl-cdn.alpinelinux.org/alpine/edge/community/aarch64/APKINDEX.tar.gz" | tar -xz -C /tmp && awk '/^P:'"qbittorrent-nox"'$/,/V:/' /tmp/APKINDEX | sed -n 2p | sed 's/^V://') != "${EXT_RELEASE}" ]] || [[ $(curl -sL "http://dl-cdn.alpinelinux.org/alpine/edge/community/armv7/APKINDEX.tar.gz" | tar -xz -C /tmp && awk '/^P:'"qbittorrent-nox"'$/,/V:/' /tmp/APKINDEX | sed -n 2p | sed 's/^V://') != "${EXT_RELEASE}" ]]; then
|
||||||
echo "**** New version ${EXT_RELEASE} found; but not all arch repos updated yet; exiting ****"
|
echo "**** New version ${EXT_RELEASE} found; but not all arch repos updated yet; exiting ****"
|
||||||
|
echo "New version ${EXT_RELEASE} found; but not all arch repos updated yet; exiting" >> $GITHUB_STEP_SUMMARY
|
||||||
FAILURE_REASON="New version ${EXT_RELEASE} for qbittorrent tag latest is detected, however not all arch repos are updated yet. Will try again later."
|
FAILURE_REASON="New version ${EXT_RELEASE} for qbittorrent tag latest is detected, however not all arch repos are updated yet. Will try again later."
|
||||||
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903,
|
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903,
|
||||||
"description": "**Trigger Failed** \n**Reason:** '"${FAILURE_REASON}"' \n"}],
|
"description": "**Trigger Failed** \n**Reason:** '"${FAILURE_REASON}"' \n"}],
|
||||||
@@ -78,9 +84,11 @@ jobs:
|
|||||||
exit 0
|
exit 0
|
||||||
elif [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-qbittorrent/job/master/lastBuild/api/json | jq -r '.building') == "true" ]; then
|
elif [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-qbittorrent/job/master/lastBuild/api/json | jq -r '.building') == "true" ]; then
|
||||||
echo "**** New version ${EXT_RELEASE} found; but there already seems to be an active build on Jenkins; exiting ****"
|
echo "**** New version ${EXT_RELEASE} found; but there already seems to be an active build on Jenkins; exiting ****"
|
||||||
|
echo "New version ${EXT_RELEASE} found; but there already seems to be an active build on Jenkins; exiting" >> $GITHUB_STEP_SUMMARY
|
||||||
exit 0
|
exit 0
|
||||||
else
|
else
|
||||||
echo "**** New version ${EXT_RELEASE} found; old version was ${IMAGE_VERSION}. Triggering new build ****"
|
echo "**** New version ${EXT_RELEASE} found; old version was ${IMAGE_VERSION}. Triggering new build ****"
|
||||||
|
echo "New version ${EXT_RELEASE} found; old version was ${IMAGE_VERSION}. Triggering new build" >> $GITHUB_STEP_SUMMARY
|
||||||
response=$(curl -iX POST \
|
response=$(curl -iX POST \
|
||||||
https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-qbittorrent/job/master/buildWithParameters?PACKAGE_CHECK=false \
|
https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-qbittorrent/job/master/buildWithParameters?PACKAGE_CHECK=false \
|
||||||
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} | grep -i location | sed "s|^[L|l]ocation: \(.*\)|\1|")
|
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} | grep -i location | sed "s|^[L|l]ocation: \(.*\)|\1|")
|
||||||
@@ -90,6 +98,7 @@ jobs:
|
|||||||
buildurl=$(curl -s "${response%$'\r'}api/json" | jq -r '.executable.url')
|
buildurl=$(curl -s "${response%$'\r'}api/json" | jq -r '.executable.url')
|
||||||
buildurl="${buildurl%$'\r'}"
|
buildurl="${buildurl%$'\r'}"
|
||||||
echo "**** Jenkins job build url: ${buildurl} ****"
|
echo "**** Jenkins job build url: ${buildurl} ****"
|
||||||
|
echo "Jenkins job build url: ${buildurl}" >> $GITHUB_STEP_SUMMARY
|
||||||
echo "**** Attempting to change the Jenkins job description ****"
|
echo "**** Attempting to change the Jenkins job description ****"
|
||||||
curl -iX POST \
|
curl -iX POST \
|
||||||
"${buildurl}submitDescription" \
|
"${buildurl}submitDescription" \
|
||||||
|
|||||||
18
.github/workflows/external_trigger_scheduler.yml
vendored
18
.github/workflows/external_trigger_scheduler.yml
vendored
@@ -2,7 +2,7 @@ name: External Trigger Scheduler
|
|||||||
|
|
||||||
on:
|
on:
|
||||||
schedule:
|
schedule:
|
||||||
- cron: '41 * * * *'
|
- cron: '42 * * * *'
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
@@ -17,18 +17,18 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
echo "**** Branches found: ****"
|
echo "**** Branches found: ****"
|
||||||
git for-each-ref --format='%(refname:short)' refs/remotes
|
git for-each-ref --format='%(refname:short)' refs/remotes
|
||||||
echo "**** Pulling the yq docker image ****"
|
|
||||||
docker pull ghcr.io/linuxserver/yq
|
|
||||||
for br in $(git for-each-ref --format='%(refname:short)' refs/remotes)
|
for br in $(git for-each-ref --format='%(refname:short)' refs/remotes)
|
||||||
do
|
do
|
||||||
br=$(echo "$br" | sed 's|origin/||g')
|
br=$(echo "$br" | sed 's|origin/||g')
|
||||||
echo "**** Evaluating branch ${br} ****"
|
echo "**** Evaluating branch ${br} ****"
|
||||||
ls_branch=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-qbittorrent/${br}/jenkins-vars.yml \
|
ls_jenkins_vars=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-qbittorrent/${br}/jenkins-vars.yml)
|
||||||
| docker run --rm -i --entrypoint yq ghcr.io/linuxserver/yq -r .ls_branch)
|
ls_branch=$(echo "${ls_jenkins_vars}" | yq -r '.ls_branch')
|
||||||
if [ "$br" == "$ls_branch" ]; then
|
ls_trigger=$(echo "${ls_jenkins_vars}" | yq -r '.external_type')
|
||||||
echo "**** Branch ${br} appears to be live; checking workflow. ****"
|
if [[ "${br}" == "${ls_branch}" ]] && [[ "${ls_trigger}" != "os" ]]; then
|
||||||
|
echo "**** Branch ${br} appears to be live and trigger is not os; checking workflow. ****"
|
||||||
if curl -sfX GET https://raw.githubusercontent.com/linuxserver/docker-qbittorrent/${br}/.github/workflows/external_trigger.yml > /dev/null 2>&1; then
|
if curl -sfX GET https://raw.githubusercontent.com/linuxserver/docker-qbittorrent/${br}/.github/workflows/external_trigger.yml > /dev/null 2>&1; then
|
||||||
echo "**** Workflow exists. Triggering external trigger workflow for branch ${br} ****."
|
echo "**** Workflow exists. Triggering external trigger workflow for branch ${br} ****."
|
||||||
|
echo "Triggering external trigger workflow for branch ${br}" >> $GITHUB_STEP_SUMMARY
|
||||||
curl -iX POST \
|
curl -iX POST \
|
||||||
-H "Authorization: token ${{ secrets.CR_PAT }}" \
|
-H "Authorization: token ${{ secrets.CR_PAT }}" \
|
||||||
-H "Accept: application/vnd.github.v3+json" \
|
-H "Accept: application/vnd.github.v3+json" \
|
||||||
@@ -36,8 +36,10 @@ jobs:
|
|||||||
https://api.github.com/repos/linuxserver/docker-qbittorrent/actions/workflows/external_trigger.yml/dispatches
|
https://api.github.com/repos/linuxserver/docker-qbittorrent/actions/workflows/external_trigger.yml/dispatches
|
||||||
else
|
else
|
||||||
echo "**** Workflow doesn't exist; skipping trigger. ****"
|
echo "**** Workflow doesn't exist; skipping trigger. ****"
|
||||||
|
echo "Skipping branch ${br} due to no external trigger workflow present." >> $GITHUB_STEP_SUMMARY
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
echo "**** ${br} appears to be a dev branch; skipping trigger. ****"
|
echo "**** ${br} is either a dev branch, or has no external version; skipping trigger. ****"
|
||||||
|
echo "Skipping branch ${br} due to being detected as dev branch or having no external version." >> $GITHUB_STEP_SUMMARY
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|||||||
4
.github/workflows/package_trigger.yml
vendored
4
.github/workflows/package_trigger.yml
vendored
@@ -14,13 +14,16 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
if [ -n "${{ secrets.PAUSE_PACKAGE_TRIGGER_QBITTORRENT_MASTER }}" ]; then
|
if [ -n "${{ secrets.PAUSE_PACKAGE_TRIGGER_QBITTORRENT_MASTER }}" ]; then
|
||||||
echo "**** Github secret PAUSE_PACKAGE_TRIGGER_QBITTORRENT_MASTER is set; skipping trigger. ****"
|
echo "**** Github secret PAUSE_PACKAGE_TRIGGER_QBITTORRENT_MASTER is set; skipping trigger. ****"
|
||||||
|
echo "Github secret \`PAUSE_PACKAGE_TRIGGER_QBITTORRENT_MASTER\` is set; skipping trigger." >> $GITHUB_STEP_SUMMARY
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
if [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-qbittorrent/job/master/lastBuild/api/json | jq -r '.building') == "true" ]; then
|
if [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-qbittorrent/job/master/lastBuild/api/json | jq -r '.building') == "true" ]; then
|
||||||
echo "**** There already seems to be an active build on Jenkins; skipping package trigger ****"
|
echo "**** There already seems to be an active build on Jenkins; skipping package trigger ****"
|
||||||
|
echo "There already seems to be an active build on Jenkins; skipping package trigger" >> $GITHUB_STEP_SUMMARY
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
echo "**** Package trigger running off of master branch. To disable, set a Github secret named \"PAUSE_PACKAGE_TRIGGER_QBITTORRENT_MASTER\". ****"
|
echo "**** Package trigger running off of master branch. To disable, set a Github secret named \"PAUSE_PACKAGE_TRIGGER_QBITTORRENT_MASTER\". ****"
|
||||||
|
echo "Package trigger running off of master branch. To disable, set a Github secret named \`PAUSE_PACKAGE_TRIGGER_QBITTORRENT_MASTER\`" >> $GITHUB_STEP_SUMMARY
|
||||||
response=$(curl -iX POST \
|
response=$(curl -iX POST \
|
||||||
https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-qbittorrent/job/master/buildWithParameters?PACKAGE_CHECK=true \
|
https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-qbittorrent/job/master/buildWithParameters?PACKAGE_CHECK=true \
|
||||||
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} | grep -i location | sed "s|^[L|l]ocation: \(.*\)|\1|")
|
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} | grep -i location | sed "s|^[L|l]ocation: \(.*\)|\1|")
|
||||||
@@ -30,6 +33,7 @@ jobs:
|
|||||||
buildurl=$(curl -s "${response%$'\r'}api/json" | jq -r '.executable.url')
|
buildurl=$(curl -s "${response%$'\r'}api/json" | jq -r '.executable.url')
|
||||||
buildurl="${buildurl%$'\r'}"
|
buildurl="${buildurl%$'\r'}"
|
||||||
echo "**** Jenkins job build url: ${buildurl} ****"
|
echo "**** Jenkins job build url: ${buildurl} ****"
|
||||||
|
echo "Jenkins job build url: ${buildurl}" >> $GITHUB_STEP_SUMMARY
|
||||||
echo "**** Attempting to change the Jenkins job description ****"
|
echo "**** Attempting to change the Jenkins job description ****"
|
||||||
curl -iX POST \
|
curl -iX POST \
|
||||||
"${buildurl}submitDescription" \
|
"${buildurl}submitDescription" \
|
||||||
|
|||||||
@@ -17,18 +17,16 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
echo "**** Branches found: ****"
|
echo "**** Branches found: ****"
|
||||||
git for-each-ref --format='%(refname:short)' refs/remotes
|
git for-each-ref --format='%(refname:short)' refs/remotes
|
||||||
echo "**** Pulling the yq docker image ****"
|
|
||||||
docker pull ghcr.io/linuxserver/yq
|
|
||||||
for br in $(git for-each-ref --format='%(refname:short)' refs/remotes)
|
for br in $(git for-each-ref --format='%(refname:short)' refs/remotes)
|
||||||
do
|
do
|
||||||
br=$(echo "$br" | sed 's|origin/||g')
|
br=$(echo "$br" | sed 's|origin/||g')
|
||||||
echo "**** Evaluating branch ${br} ****"
|
echo "**** Evaluating branch ${br} ****"
|
||||||
ls_branch=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-qbittorrent/${br}/jenkins-vars.yml \
|
ls_branch=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-qbittorrent/${br}/jenkins-vars.yml | yq -r '.ls_branch')
|
||||||
| docker run --rm -i --entrypoint yq ghcr.io/linuxserver/yq -r .ls_branch)
|
|
||||||
if [ "${br}" == "${ls_branch}" ]; then
|
if [ "${br}" == "${ls_branch}" ]; then
|
||||||
echo "**** Branch ${br} appears to be live; checking workflow. ****"
|
echo "**** Branch ${br} appears to be live; checking workflow. ****"
|
||||||
if curl -sfX GET https://raw.githubusercontent.com/linuxserver/docker-qbittorrent/${br}/.github/workflows/package_trigger.yml > /dev/null 2>&1; then
|
if curl -sfX GET https://raw.githubusercontent.com/linuxserver/docker-qbittorrent/${br}/.github/workflows/package_trigger.yml > /dev/null 2>&1; then
|
||||||
echo "**** Workflow exists. Triggering package trigger workflow for branch ${br}. ****"
|
echo "**** Workflow exists. Triggering package trigger workflow for branch ${br}. ****"
|
||||||
|
echo "Triggering package trigger workflow for branch ${br}" >> $GITHUB_STEP_SUMMARY
|
||||||
triggered_branches="${triggered_branches}${br} "
|
triggered_branches="${triggered_branches}${br} "
|
||||||
curl -iX POST \
|
curl -iX POST \
|
||||||
-H "Authorization: token ${{ secrets.CR_PAT }}" \
|
-H "Authorization: token ${{ secrets.CR_PAT }}" \
|
||||||
@@ -38,9 +36,11 @@ jobs:
|
|||||||
sleep 30
|
sleep 30
|
||||||
else
|
else
|
||||||
echo "**** Workflow doesn't exist; skipping trigger. ****"
|
echo "**** Workflow doesn't exist; skipping trigger. ****"
|
||||||
|
echo "Skipping branch ${br} due to no package trigger workflow present." >> $GITHUB_STEP_SUMMARY
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
echo "**** ${br} appears to be a dev branch; skipping trigger. ****"
|
echo "**** ${br} appears to be a dev branch; skipping trigger. ****"
|
||||||
|
echo "Skipping branch ${br} due to being detected as dev branch." >> $GITHUB_STEP_SUMMARY
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
echo "**** Package check build(s) triggered for branch(es): ${triggered_branches} ****"
|
echo "**** Package check build(s) triggered for branch(es): ${triggered_branches} ****"
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DA
|
|||||||
LABEL maintainer="thespad"
|
LABEL maintainer="thespad"
|
||||||
|
|
||||||
# environment settings
|
# environment settings
|
||||||
ARG UNRAR_VERSION=6.1.7
|
ARG UNRAR_VERSION=6.2.8
|
||||||
ENV HOME="/config" \
|
ENV HOME="/config" \
|
||||||
XDG_CONFIG_HOME="/config" \
|
XDG_CONFIG_HOME="/config" \
|
||||||
XDG_DATA_HOME="/config"
|
XDG_DATA_HOME="/config"
|
||||||
@@ -19,10 +19,10 @@ XDG_DATA_HOME="/config"
|
|||||||
# install runtime packages and qbitorrent-cli
|
# install runtime packages and qbitorrent-cli
|
||||||
RUN \
|
RUN \
|
||||||
echo "**** install build packages ****" && \
|
echo "**** install build packages ****" && \
|
||||||
apk add --no-cache --upgrade --virtual=build-dependencies \
|
apk add --no-cache --virtual=build-dependencies \
|
||||||
build-base && \
|
build-base && \
|
||||||
echo "**** install packages ****" && \
|
echo "**** install packages ****" && \
|
||||||
apk add -U --update --no-cache \
|
apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/testing \
|
||||||
icu-libs \
|
icu-libs \
|
||||||
libstdc++ \
|
libstdc++ \
|
||||||
openssl \
|
openssl \
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DA
|
|||||||
LABEL maintainer="thespad"
|
LABEL maintainer="thespad"
|
||||||
|
|
||||||
# environment settings
|
# environment settings
|
||||||
ARG UNRAR_VERSION=6.1.7
|
ARG UNRAR_VERSION=6.2.8
|
||||||
ENV HOME="/config" \
|
ENV HOME="/config" \
|
||||||
XDG_CONFIG_HOME="/config" \
|
XDG_CONFIG_HOME="/config" \
|
||||||
XDG_DATA_HOME="/config"
|
XDG_DATA_HOME="/config"
|
||||||
@@ -19,10 +19,10 @@ XDG_DATA_HOME="/config"
|
|||||||
# install runtime packages and qbitorrent-cli
|
# install runtime packages and qbitorrent-cli
|
||||||
RUN \
|
RUN \
|
||||||
echo "**** install build packages ****" && \
|
echo "**** install build packages ****" && \
|
||||||
apk add --no-cache --upgrade --virtual=build-dependencies \
|
apk add --no-cache --virtual=build-dependencies \
|
||||||
build-base && \
|
build-base && \
|
||||||
echo "**** install packages ****" && \
|
echo "**** install packages ****" && \
|
||||||
apk add -U --update --no-cache \
|
apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/testing \
|
||||||
icu-libs \
|
icu-libs \
|
||||||
libstdc++ \
|
libstdc++ \
|
||||||
openssl \
|
openssl \
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DA
|
|||||||
LABEL maintainer="thespad"
|
LABEL maintainer="thespad"
|
||||||
|
|
||||||
# environment settings
|
# environment settings
|
||||||
ARG UNRAR_VERSION=6.1.7
|
ARG UNRAR_VERSION=6.2.8
|
||||||
ENV HOME="/config" \
|
ENV HOME="/config" \
|
||||||
XDG_CONFIG_HOME="/config" \
|
XDG_CONFIG_HOME="/config" \
|
||||||
XDG_DATA_HOME="/config"
|
XDG_DATA_HOME="/config"
|
||||||
@@ -19,10 +19,10 @@ XDG_DATA_HOME="/config"
|
|||||||
# install runtime packages and qbitorrent-cli
|
# install runtime packages and qbitorrent-cli
|
||||||
RUN \
|
RUN \
|
||||||
echo "**** install build packages ****" && \
|
echo "**** install build packages ****" && \
|
||||||
apk add --no-cache --upgrade --virtual=build-dependencies \
|
apk add --no-cache --virtual=build-dependencies \
|
||||||
build-base && \
|
build-base && \
|
||||||
echo "**** install packages ****" && \
|
echo "**** install packages ****" && \
|
||||||
apk add -U --update --no-cache \
|
apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/testing \
|
||||||
icu-libs \
|
icu-libs \
|
||||||
libstdc++ \
|
libstdc++ \
|
||||||
openssl \
|
openssl \
|
||||||
|
|||||||
192
Jenkinsfile
vendored
192
Jenkinsfile
vendored
@@ -42,10 +42,16 @@ pipeline {
|
|||||||
// Setup all the basic environment variables needed for the build
|
// Setup all the basic environment variables needed for the build
|
||||||
stage("Set ENV Variables base"){
|
stage("Set ENV Variables base"){
|
||||||
steps{
|
steps{
|
||||||
|
sh '''#! /bin/bash
|
||||||
|
containers=$(docker ps -aq)
|
||||||
|
if [[ -n "${containers}" ]]; then
|
||||||
|
docker stop ${containers}
|
||||||
|
fi
|
||||||
|
docker system prune -af --volumes || : '''
|
||||||
script{
|
script{
|
||||||
env.EXIT_STATUS = ''
|
env.EXIT_STATUS = ''
|
||||||
env.LS_RELEASE = sh(
|
env.LS_RELEASE = sh(
|
||||||
script: '''docker run --rm ghcr.io/linuxserver/alexeiled-skopeo sh -c 'skopeo inspect docker://docker.io/'${DOCKERHUB_IMAGE}':latest 2>/dev/null' | jq -r '.Labels.build_version' | awk '{print $3}' | grep '\\-ls' || : ''',
|
script: '''docker run --rm quay.io/skopeo/stable:v1 inspect docker://ghcr.io/${LS_USER}/${CONTAINER_NAME}:latest 2>/dev/null | jq -r '.Labels.build_version' | awk '{print $3}' | grep '\\-ls' || : ''',
|
||||||
returnStdout: true).trim()
|
returnStdout: true).trim()
|
||||||
env.LS_RELEASE_NOTES = sh(
|
env.LS_RELEASE_NOTES = sh(
|
||||||
script: '''cat readme-vars.yml | awk -F \\" '/date: "[0-9][0-9].[0-9][0-9].[0-9][0-9]:/ {print $4;exit;}' | sed -E ':a;N;$!ba;s/\\r{0,1}\\n/\\\\n/g' ''',
|
script: '''cat readme-vars.yml | awk -F \\" '/date: "[0-9][0-9].[0-9][0-9].[0-9][0-9]:/ {print $4;exit;}' | sed -E ':a;N;$!ba;s/\\r{0,1}\\n/\\\\n/g' ''',
|
||||||
@@ -207,12 +213,12 @@ pipeline {
|
|||||||
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lspipepr-' + env.CONTAINER_NAME
|
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lspipepr-' + env.CONTAINER_NAME
|
||||||
env.QUAYIMAGE = 'quay.io/linuxserver.io/lspipepr-' + env.CONTAINER_NAME
|
env.QUAYIMAGE = 'quay.io/linuxserver.io/lspipepr-' + env.CONTAINER_NAME
|
||||||
if (env.MULTIARCH == 'true') {
|
if (env.MULTIARCH == 'true') {
|
||||||
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST + '|arm32v7-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST
|
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST + '|arm32v7-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST
|
||||||
} else {
|
} else {
|
||||||
env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST
|
env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST
|
||||||
}
|
}
|
||||||
env.VERSION_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST
|
env.VERSION_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST
|
||||||
env.META_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST
|
env.META_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST
|
||||||
env.EXT_RELEASE_TAG = 'version-' + env.EXT_RELEASE_CLEAN
|
env.EXT_RELEASE_TAG = 'version-' + env.EXT_RELEASE_CLEAN
|
||||||
env.CODE_URL = 'https://github.com/' + env.LS_USER + '/' + env.LS_REPO + '/pull/' + env.PULL_REQUEST
|
env.CODE_URL = 'https://github.com/' + env.LS_USER + '/' + env.LS_REPO + '/pull/' + env.PULL_REQUEST
|
||||||
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.PR_DOCKERHUB_IMAGE + '/tags/'
|
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.PR_DOCKERHUB_IMAGE + '/tags/'
|
||||||
@@ -232,7 +238,7 @@ pipeline {
|
|||||||
script{
|
script{
|
||||||
env.SHELLCHECK_URL = 'https://ci-tests.linuxserver.io/' + env.IMAGE + '/' + env.META_TAG + '/shellcheck-result.xml'
|
env.SHELLCHECK_URL = 'https://ci-tests.linuxserver.io/' + env.IMAGE + '/' + env.META_TAG + '/shellcheck-result.xml'
|
||||||
}
|
}
|
||||||
sh '''curl -sL https://raw.githubusercontent.com/linuxserver/docker-shellcheck/master/checkrun.sh | /bin/bash'''
|
sh '''curl -sL https://raw.githubusercontent.com/linuxserver/docker-jenkins-builder/master/checkrun.sh | /bin/bash'''
|
||||||
sh '''#! /bin/bash
|
sh '''#! /bin/bash
|
||||||
docker run --rm \
|
docker run --rm \
|
||||||
-v ${WORKSPACE}:/mnt \
|
-v ${WORKSPACE}:/mnt \
|
||||||
@@ -340,6 +346,8 @@ pipeline {
|
|||||||
git clone https://github.com/linuxserver/templates.git ${TEMPDIR}/unraid/templates
|
git clone https://github.com/linuxserver/templates.git ${TEMPDIR}/unraid/templates
|
||||||
if [[ -f ${TEMPDIR}/unraid/docker-templates/linuxserver.io/img/${CONTAINER_NAME}-logo.png ]]; then
|
if [[ -f ${TEMPDIR}/unraid/docker-templates/linuxserver.io/img/${CONTAINER_NAME}-logo.png ]]; then
|
||||||
sed -i "s|master/linuxserver.io/img/linuxserver-ls-logo.png|master/linuxserver.io/img/${CONTAINER_NAME}-logo.png|" ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml
|
sed -i "s|master/linuxserver.io/img/linuxserver-ls-logo.png|master/linuxserver.io/img/${CONTAINER_NAME}-logo.png|" ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml
|
||||||
|
elif [[ -f ${TEMPDIR}/unraid/docker-templates/linuxserver.io/img/${CONTAINER_NAME}-icon.png ]]; then
|
||||||
|
sed -i "s|master/linuxserver.io/img/linuxserver-ls-logo.png|master/linuxserver.io/img/${CONTAINER_NAME}-icon.png|" ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml
|
||||||
fi
|
fi
|
||||||
if [[ ("${BRANCH_NAME}" == "master") || ("${BRANCH_NAME}" == "main") ]] && [[ (! -f ${TEMPDIR}/unraid/templates/unraid/${CONTAINER_NAME}.xml) || ("$(md5sum ${TEMPDIR}/unraid/templates/unraid/${CONTAINER_NAME}.xml | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml | awk '{ print $1 }')") ]]; then
|
if [[ ("${BRANCH_NAME}" == "master") || ("${BRANCH_NAME}" == "main") ]] && [[ (! -f ${TEMPDIR}/unraid/templates/unraid/${CONTAINER_NAME}.xml) || ("$(md5sum ${TEMPDIR}/unraid/templates/unraid/${CONTAINER_NAME}.xml | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml | awk '{ print $1 }')") ]]; then
|
||||||
cd ${TEMPDIR}/unraid/templates/
|
cd ${TEMPDIR}/unraid/templates/
|
||||||
@@ -380,6 +388,26 @@ pipeline {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// If this is a master build check the S6 service file perms
|
||||||
|
stage("Check S6 Service file Permissions"){
|
||||||
|
when {
|
||||||
|
branch "master"
|
||||||
|
environment name: 'CHANGE_ID', value: ''
|
||||||
|
environment name: 'EXIT_STATUS', value: ''
|
||||||
|
}
|
||||||
|
steps {
|
||||||
|
script{
|
||||||
|
sh '''#! /bin/bash
|
||||||
|
WRONG_PERM=$(find ./ -path "./.git" -prune -o \\( -name "run" -o -name "finish" -o -name "check" \\) -not -perm -u=x,g=x,o=x -print)
|
||||||
|
if [[ -n "${WRONG_PERM}" ]]; then
|
||||||
|
echo "The following S6 service files are missing the executable bit; canceling the faulty build: ${WRONG_PERM}"
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
echo "S6 service file perms look good."
|
||||||
|
fi '''
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
/* #######################
|
/* #######################
|
||||||
GitLab Mirroring
|
GitLab Mirroring
|
||||||
####################### */
|
####################### */
|
||||||
@@ -411,8 +439,7 @@ pipeline {
|
|||||||
}
|
}
|
||||||
steps{
|
steps{
|
||||||
sh '''#! /bin/bash
|
sh '''#! /bin/bash
|
||||||
set -e
|
PACKAGE_UUID=$(curl -X GET -H "Authorization: Bearer ${SCARF_TOKEN}" https://scarf.sh/api/v1/organizations/linuxserver-ci/packages | jq -r '.[] | select(.name=="linuxserver/qbittorrent") | .uuid' || :)
|
||||||
PACKAGE_UUID=$(curl -X GET -H "Authorization: Bearer ${SCARF_TOKEN}" https://scarf.sh/api/v1/organizations/linuxserver-ci/packages | jq -r '.[] | select(.name=="linuxserver/qbittorrent") | .uuid')
|
|
||||||
if [ -z "${PACKAGE_UUID}" ]; then
|
if [ -z "${PACKAGE_UUID}" ]; then
|
||||||
echo "Adding package to Scarf.sh"
|
echo "Adding package to Scarf.sh"
|
||||||
curl -sX POST https://scarf.sh/api/v1/organizations/linuxserver-ci/packages \
|
curl -sX POST https://scarf.sh/api/v1/organizations/linuxserver-ci/packages \
|
||||||
@@ -522,9 +549,12 @@ pipeline {
|
|||||||
retry(5) {
|
retry(5) {
|
||||||
sh "docker push ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}"
|
sh "docker push ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}"
|
||||||
}
|
}
|
||||||
sh '''docker rmi \
|
sh '''#! /bin/bash
|
||||||
${IMAGE}:arm32v7-${META_TAG} \
|
containers=$(docker ps -aq)
|
||||||
ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} || :'''
|
if [[ -n "${containers}" ]]; then
|
||||||
|
docker stop ${containers}
|
||||||
|
fi
|
||||||
|
docker system prune -af --volumes || : '''
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
stage('Build ARM64') {
|
stage('Build ARM64') {
|
||||||
@@ -557,9 +587,12 @@ pipeline {
|
|||||||
retry(5) {
|
retry(5) {
|
||||||
sh "docker push ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}"
|
sh "docker push ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}"
|
||||||
}
|
}
|
||||||
sh '''docker rmi \
|
sh '''#! /bin/bash
|
||||||
${IMAGE}:arm64v8-${META_TAG} \
|
containers=$(docker ps -aq)
|
||||||
ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || :'''
|
if [[ -n "${containers}" ]]; then
|
||||||
|
docker stop ${containers}
|
||||||
|
fi
|
||||||
|
docker system prune -af --volumes || : '''
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -620,13 +653,6 @@ pipeline {
|
|||||||
environment name: 'EXIT_STATUS', value: ''
|
environment name: 'EXIT_STATUS', value: ''
|
||||||
}
|
}
|
||||||
steps {
|
steps {
|
||||||
sh '''#! /bin/bash
|
|
||||||
echo "Packages were updated. Cleaning up the image and exiting."
|
|
||||||
if [ "${MULTIARCH}" == "true" ] && [ "${PACKAGE_CHECK}" == "false" ]; then
|
|
||||||
docker rmi ${IMAGE}:amd64-${META_TAG}
|
|
||||||
else
|
|
||||||
docker rmi ${IMAGE}:${META_TAG}
|
|
||||||
fi'''
|
|
||||||
script{
|
script{
|
||||||
env.EXIT_STATUS = 'ABORTED'
|
env.EXIT_STATUS = 'ABORTED'
|
||||||
}
|
}
|
||||||
@@ -644,13 +670,6 @@ pipeline {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
steps {
|
steps {
|
||||||
sh '''#! /bin/bash
|
|
||||||
echo "There are no package updates. Cleaning up the image and exiting."
|
|
||||||
if [ "${MULTIARCH}" == "true" ] && [ "${PACKAGE_CHECK}" == "false" ]; then
|
|
||||||
docker rmi ${IMAGE}:amd64-${META_TAG}
|
|
||||||
else
|
|
||||||
docker rmi ${IMAGE}:${META_TAG}
|
|
||||||
fi'''
|
|
||||||
script{
|
script{
|
||||||
env.EXIT_STATUS = 'ABORTED'
|
env.EXIT_STATUS = 'ABORTED'
|
||||||
}
|
}
|
||||||
@@ -672,6 +691,7 @@ pipeline {
|
|||||||
]) {
|
]) {
|
||||||
script{
|
script{
|
||||||
env.CI_URL = 'https://ci-tests.linuxserver.io/' + env.IMAGE + '/' + env.META_TAG + '/index.html'
|
env.CI_URL = 'https://ci-tests.linuxserver.io/' + env.IMAGE + '/' + env.META_TAG + '/index.html'
|
||||||
|
env.CI_JSON_URL = 'https://ci-tests.linuxserver.io/' + env.IMAGE + '/' + env.META_TAG + '/report.json'
|
||||||
}
|
}
|
||||||
sh '''#! /bin/bash
|
sh '''#! /bin/bash
|
||||||
set -e
|
set -e
|
||||||
@@ -698,8 +718,6 @@ pipeline {
|
|||||||
-e WEB_SCREENSHOT=\"${CI_WEB}\" \
|
-e WEB_SCREENSHOT=\"${CI_WEB}\" \
|
||||||
-e WEB_AUTH=\"${CI_AUTH}\" \
|
-e WEB_AUTH=\"${CI_AUTH}\" \
|
||||||
-e WEB_PATH=\"${CI_WEBPATH}\" \
|
-e WEB_PATH=\"${CI_WEBPATH}\" \
|
||||||
-e DO_REGION="ams3" \
|
|
||||||
-e DO_BUCKET="lsio-ci" \
|
|
||||||
-t ghcr.io/linuxserver/ci:latest \
|
-t ghcr.io/linuxserver/ci:latest \
|
||||||
python3 test_build.py'''
|
python3 test_build.py'''
|
||||||
}
|
}
|
||||||
@@ -752,17 +770,6 @@ pipeline {
|
|||||||
done
|
done
|
||||||
'''
|
'''
|
||||||
}
|
}
|
||||||
sh '''#! /bin/bash
|
|
||||||
for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${QUAYIMAGE}" "${IMAGE}"; do
|
|
||||||
docker rmi \
|
|
||||||
${DELETEIMAGE}:${META_TAG} \
|
|
||||||
${DELETEIMAGE}:${EXT_RELEASE_TAG} \
|
|
||||||
${DELETEIMAGE}:latest || :
|
|
||||||
if [ -n "${SEMVER}" ]; then
|
|
||||||
docker rmi ${DELETEIMAGE}:${SEMVER} || :
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
'''
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -856,29 +863,6 @@ pipeline {
|
|||||||
done
|
done
|
||||||
'''
|
'''
|
||||||
}
|
}
|
||||||
sh '''#! /bin/bash
|
|
||||||
for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${QUAYIMAGE}" "${IMAGE}"; do
|
|
||||||
docker rmi \
|
|
||||||
${DELETEIMAGE}:amd64-${META_TAG} \
|
|
||||||
${DELETEIMAGE}:amd64-latest \
|
|
||||||
${DELETEIMAGE}:amd64-${EXT_RELEASE_TAG} \
|
|
||||||
${DELETEIMAGE}:arm32v7-${META_TAG} \
|
|
||||||
${DELETEIMAGE}:arm32v7-latest \
|
|
||||||
${DELETEIMAGE}:arm32v7-${EXT_RELEASE_TAG} \
|
|
||||||
${DELETEIMAGE}:arm64v8-${META_TAG} \
|
|
||||||
${DELETEIMAGE}:arm64v8-latest \
|
|
||||||
${DELETEIMAGE}:arm64v8-${EXT_RELEASE_TAG} || :
|
|
||||||
if [ -n "${SEMVER}" ]; then
|
|
||||||
docker rmi \
|
|
||||||
${DELETEIMAGE}:amd64-${SEMVER} \
|
|
||||||
${DELETEIMAGE}:arm32v7-${SEMVER} \
|
|
||||||
${DELETEIMAGE}:arm64v8-${SEMVER} || :
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
docker rmi \
|
|
||||||
ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} \
|
|
||||||
ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || :
|
|
||||||
'''
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -949,12 +933,78 @@ pipeline {
|
|||||||
stage('Pull Request Comment') {
|
stage('Pull Request Comment') {
|
||||||
when {
|
when {
|
||||||
not {environment name: 'CHANGE_ID', value: ''}
|
not {environment name: 'CHANGE_ID', value: ''}
|
||||||
environment name: 'CI', value: 'true'
|
|
||||||
environment name: 'EXIT_STATUS', value: ''
|
environment name: 'EXIT_STATUS', value: ''
|
||||||
}
|
}
|
||||||
steps {
|
steps {
|
||||||
sh '''curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/issues/${PULL_REQUEST}/comments \
|
sh '''#! /bin/bash
|
||||||
-d '{"body": "I am a bot, here are the test results for this PR: \\n'${CI_URL}' \\n'${SHELLCHECK_URL}'"}' '''
|
# Function to retrieve JSON data from URL
|
||||||
|
get_json() {
|
||||||
|
local url="$1"
|
||||||
|
local response=$(curl -s "$url")
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo "Failed to retrieve JSON data from $url"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
local json=$(echo "$response" | jq .)
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo "Failed to parse JSON data from $url"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
echo "$json"
|
||||||
|
}
|
||||||
|
|
||||||
|
build_table() {
|
||||||
|
local data="$1"
|
||||||
|
|
||||||
|
# Get the keys in the JSON data
|
||||||
|
local keys=$(echo "$data" | jq -r 'to_entries | map(.key) | .[]')
|
||||||
|
|
||||||
|
# Check if keys are empty
|
||||||
|
if [ -z "$keys" ]; then
|
||||||
|
echo "JSON report data does not contain any keys or the report does not exist."
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Build table header
|
||||||
|
local header="| Tag | Passed |\\n| --- | --- |\\n"
|
||||||
|
|
||||||
|
# Loop through the JSON data to build the table rows
|
||||||
|
local rows=""
|
||||||
|
for build in $keys; do
|
||||||
|
local status=$(echo "$data" | jq -r ".[\\"$build\\"].test_success")
|
||||||
|
if [ "$status" = "true" ]; then
|
||||||
|
status="✅"
|
||||||
|
else
|
||||||
|
status="❌"
|
||||||
|
fi
|
||||||
|
local row="| "$build" | "$status" |\\n"
|
||||||
|
rows="${rows}${row}"
|
||||||
|
done
|
||||||
|
|
||||||
|
local table="${header}${rows}"
|
||||||
|
local escaped_table=$(echo "$table" | sed 's/\"/\\\\"/g')
|
||||||
|
echo "$escaped_table"
|
||||||
|
}
|
||||||
|
|
||||||
|
if [[ "${CI}" = "true" ]]; then
|
||||||
|
# Retrieve JSON data from URL
|
||||||
|
data=$(get_json "$CI_JSON_URL")
|
||||||
|
# Create table from JSON data
|
||||||
|
table=$(build_table "$data")
|
||||||
|
echo -e "$table"
|
||||||
|
|
||||||
|
curl -X POST -H "Authorization: token $GITHUB_TOKEN" \
|
||||||
|
-H "Accept: application/vnd.github.v3+json" \
|
||||||
|
"https://api.github.com/repos/$LS_USER/$LS_REPO/issues/$PULL_REQUEST/comments" \
|
||||||
|
-d "{\\"body\\": \\"I am a bot, here are the test results for this PR: \\n${CI_URL}\\n${SHELLCHECK_URL}\\n${table}\\"}"
|
||||||
|
else
|
||||||
|
curl -X POST -H "Authorization: token $GITHUB_TOKEN" \
|
||||||
|
-H "Accept: application/vnd.github.v3+json" \
|
||||||
|
"https://api.github.com/repos/$LS_USER/$LS_REPO/issues/$PULL_REQUEST/comments" \
|
||||||
|
-d "{\\"body\\": \\"I am a bot, here is the pushed image/manifest for this PR: \\n\\n\\`${GITHUBIMAGE}:${META_TAG}\\`\\"}"
|
||||||
|
fi
|
||||||
|
'''
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -980,6 +1030,14 @@ pipeline {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
cleanup {
|
cleanup {
|
||||||
|
sh '''#! /bin/bash
|
||||||
|
echo "Performing docker system prune!!"
|
||||||
|
containers=$(docker ps -aq)
|
||||||
|
if [[ -n "${containers}" ]]; then
|
||||||
|
docker stop ${containers}
|
||||||
|
fi
|
||||||
|
docker system prune -af --volumes || :
|
||||||
|
'''
|
||||||
cleanWs()
|
cleanWs()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -264,6 +264,7 @@ Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64
|
|||||||
|
|
||||||
## Versions
|
## Versions
|
||||||
|
|
||||||
|
* **10.06.23:** - Bump unrar to 6.2.8.
|
||||||
* **23.02.23:** - Add qt6-qtbase-sqlite to support SQLite database for resume files.
|
* **23.02.23:** - Add qt6-qtbase-sqlite to support SQLite database for resume files.
|
||||||
* **29.11.22:** - Add openssl1.1-compat for qbittorrent-cli.
|
* **29.11.22:** - Add openssl1.1-compat for qbittorrent-cli.
|
||||||
* **31.10.22:** - Add libtorrentv1 branch.
|
* **31.10.22:** - Add libtorrentv1 branch.
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
NAME VERSION TYPE
|
NAME VERSION TYPE
|
||||||
|
7zip 22.01-r5 apk
|
||||||
Alba.CsConsoleFormat 1.0.0 dotnet
|
Alba.CsConsoleFormat 1.0.0 dotnet
|
||||||
BencodeNET 2.3.0 dotnet
|
BencodeNET 2.3.0 dotnet
|
||||||
CsvHelper 12.1.2 dotnet
|
CsvHelper 12.1.2 dotnet
|
||||||
@@ -83,72 +84,78 @@ System.Threading.Timer 4
|
|||||||
System.Xml.ReaderWriter 4.3.0 dotnet
|
System.Xml.ReaderWriter 4.3.0 dotnet
|
||||||
System.Xml.XDocument 4.3.0 dotnet
|
System.Xml.XDocument 4.3.0 dotnet
|
||||||
System.Xml.XmlDocument 4.3.0 dotnet
|
System.Xml.XmlDocument 4.3.0 dotnet
|
||||||
alpine-baselayout 3.4.0-r0 apk
|
alpine-baselayout 3.4.3-r1 apk
|
||||||
alpine-baselayout-data 3.4.0-r0 apk
|
alpine-baselayout-data 3.4.3-r1 apk
|
||||||
alpine-keys 2.4-r1 apk
|
alpine-keys 2.4-r1 apk
|
||||||
apk-tools 2.14.0_rc1-r0 apk
|
apk-tools 2.14.0-r5 apk
|
||||||
bash 5.2.15-r3 apk
|
bash 5.2.15-r5 apk
|
||||||
brotli-libs 1.0.9-r12 apk
|
brotli-libs 1.0.9-r15 apk
|
||||||
busybox 1.36.0 binary
|
busybox 1.36.1 binary
|
||||||
busybox 1.36.0-r7 apk
|
busybox 1.36.1-r1 apk
|
||||||
busybox-binsh 1.36.0-r7 apk
|
busybox-binsh 1.36.1-r1 apk
|
||||||
ca-certificates 20230106-r1 apk
|
c-ares 1.19.1-r1 apk
|
||||||
ca-certificates-bundle 20230106-r1 apk
|
ca-certificates 20230506-r0 apk
|
||||||
coreutils 9.2-r3 apk
|
ca-certificates-bundle 20230506-r0 apk
|
||||||
curl 8.0.1-r2 apk
|
coreutils 9.3-r7 apk
|
||||||
dbus-libs 1.14.6-r2 apk
|
coreutils-env 9.3-r7 apk
|
||||||
double-conversion 3.2.1-r1 apk
|
coreutils-fmt 9.3-r7 apk
|
||||||
|
coreutils-sha512sum 9.3-r7 apk
|
||||||
|
curl 8.1.2-r0 apk
|
||||||
|
dbus-libs 1.14.8-r0 apk
|
||||||
|
double-conversion 3.3.0-r0 apk
|
||||||
gdbm 1.23-r1 apk
|
gdbm 1.23-r1 apk
|
||||||
glib 2.76.1-r1 apk
|
glib 2.76.3-r0 apk
|
||||||
icu-data-en 72.1-r3 apk
|
icu-data-en 73.1-r2 apk
|
||||||
icu-libs 72.1-r3 apk
|
icu-libs 73.1-r2 apk
|
||||||
jq 1.6-r3 apk
|
jq 1.6-r3 apk
|
||||||
libacl 2.3.1-r3 apk
|
libacl 2.3.1-r4 apk
|
||||||
libattr 2.5.1-r4 apk
|
libattr 2.5.1-r5 apk
|
||||||
libb2 0.98.1-r2 apk
|
libb2 0.98.1-r3 apk
|
||||||
libblkid 2.38.1-r6 apk
|
libblkid 2.39-r10 apk
|
||||||
libbsd 0.11.7-r1 apk
|
libbsd 0.11.7-r2 apk
|
||||||
libbz2 1.0.8-r5 apk
|
libbz2 1.0.8-r6 apk
|
||||||
libc-utils 0.7.2-r4 apk
|
libc-utils 0.7.2-r5 apk
|
||||||
libcrypto1.1 1.1.1t-r2 apk
|
libcrypto1.1 1.1.1u-r0 apk
|
||||||
libcrypto3 3.1.0-r3 apk
|
libcrypto3 3.1.1-r1 apk
|
||||||
libcurl 8.0.1-r2 apk
|
libcurl 8.1.2-r0 apk
|
||||||
libexpat 2.5.0-r1 apk
|
libexpat 2.5.0-r2 apk
|
||||||
libffi 3.4.4-r2 apk
|
libffi 3.4.4-r3 apk
|
||||||
libgcc 12.2.1_git20220924-r10 apk
|
libgcc 13.1.1_git20230603-r0 apk
|
||||||
libgomp 12.2.1_git20220924-r10 apk
|
libgomp 13.1.1_git20230603-r0 apk
|
||||||
libidn2 2.3.4-r1 apk
|
libidn2 2.3.4-r2 apk
|
||||||
libintl 0.21.1-r3 apk
|
libintl 0.21.1-r9 apk
|
||||||
libmd 1.0.4-r2 apk
|
libmd 1.0.4-r2 apk
|
||||||
libmount 2.38.1-r6 apk
|
libmount 2.39-r10 apk
|
||||||
libncursesw 6.4_p20230401-r3 apk
|
libncursesw 6.4_p20230610-r0 apk
|
||||||
libpanelw 6.4_p20230401-r3 apk
|
libpanelw 6.4_p20230610-r0 apk
|
||||||
libpcre2-16 10.42-r1 apk
|
libpcre2-16 10.42-r1 apk
|
||||||
libproc2 4.0.3-r1 apk
|
libproc2 4.0.3-r2 apk
|
||||||
libssl1.1 1.1.1t-r2 apk
|
libssl1.1 1.1.1u-r0 apk
|
||||||
libssl3 3.1.0-r3 apk
|
libssl3 3.1.1-r1 apk
|
||||||
libstdc++ 12.2.1_git20220924-r10 apk
|
libstdc++ 13.1.1_git20230603-r0 apk
|
||||||
libtorrent-rasterbar 2.0.8-r3 apk
|
libtorrent-rasterbar 2.0.9-r0 apk
|
||||||
libunistring 1.1-r1 apk
|
libunistring 1.1-r2 apk
|
||||||
linux-pam 1.5.2-r10 apk
|
linux-pam 1.5.3-r1 apk
|
||||||
mpdecimal 2.5.1-r2 apk
|
mpdecimal 2.5.1-r2 apk
|
||||||
musl 1.2.3_git20230322-r3 apk
|
musl 1.2.4-r1 apk
|
||||||
musl-utils 1.2.3_git20230322-r3 apk
|
musl-utils 1.2.4-r1 apk
|
||||||
ncurses-terminfo-base 6.4_p20230401-r3 apk
|
ncurses-terminfo-base 6.4_p20230610-r0 apk
|
||||||
netcat-openbsd 1.219-r1 apk
|
netcat-openbsd 1.219-r1 apk
|
||||||
nghttp2-libs 1.52.0-r1 apk
|
nghttp2-libs 1.54.0-r0 apk
|
||||||
oniguruma 6.9.8-r1 apk
|
oniguruma 6.9.8-r1 apk
|
||||||
openssl 3.1.0-r3 apk
|
openssl 3.1.1-r1 apk
|
||||||
openssl1.1-compat 1.1.1t-r2 apk
|
openssl1.1-compat 1.1.1u-r0 apk
|
||||||
p7zip 17.05-r2 apk
|
|
||||||
pcre2 10.42-r1 apk
|
pcre2 10.42-r1 apk
|
||||||
procps-ng 4.0.3-r1 apk
|
procps-ng 4.0.3-r2 apk
|
||||||
python 3.11.3 binary
|
pyc 0.1-r0 apk
|
||||||
python3 3.11.3-r3 apk
|
python 3.11.4 binary
|
||||||
qbittorrent-nox 4.5.2-r2 apk
|
python3 3.11.4-r0 apk
|
||||||
qt6-qtbase 6.5.0-r3 apk
|
python3-pyc 3.11.4-r0 apk
|
||||||
qt6-qtbase-sqlite 6.5.0-r3 apk
|
python3-pycache-pyc0 3.11.4-r0 apk
|
||||||
readline 8.2.1-r1 apk
|
qbittorrent-nox 4.5.3-r0 apk
|
||||||
|
qt6-qtbase 6.5.1-r1 apk
|
||||||
|
qt6-qtbase-sqlite 6.5.1-r1 apk
|
||||||
|
readline 8.2.1-r2 apk
|
||||||
runtime.any.System.Collections 4.3.0 dotnet
|
runtime.any.System.Collections 4.3.0 dotnet
|
||||||
runtime.any.System.Diagnostics.Tools 4.3.0 dotnet
|
runtime.any.System.Diagnostics.Tools 4.3.0 dotnet
|
||||||
runtime.any.System.Diagnostics.Tracing 4.3.0 dotnet
|
runtime.any.System.Diagnostics.Tracing 4.3.0 dotnet
|
||||||
@@ -192,10 +199,11 @@ runtime.unix.System.Private.Uri 4
|
|||||||
runtime.unix.System.Runtime.Extensions 4.3.0 dotnet
|
runtime.unix.System.Runtime.Extensions 4.3.0 dotnet
|
||||||
scanelf 1.3.7-r1 apk
|
scanelf 1.3.7-r1 apk
|
||||||
shadow 4.13-r2 apk
|
shadow 4.13-r2 apk
|
||||||
skalibs 2.13.1.1-r1 apk
|
skalibs 2.13.1.1-r2 apk
|
||||||
sqlite-libs 3.41.2-r2 apk
|
sqlite-libs 3.42.0-r2 apk
|
||||||
ssl_client 1.36.0-r7 apk
|
ssl_client 1.36.1-r1 apk
|
||||||
tzdata 2023c-r1 apk
|
tzdata 2023c-r1 apk
|
||||||
utmps-libs 0.1.2.1-r1 apk
|
utmps-libs 0.1.2.1-r2 apk
|
||||||
xz-libs 5.4.2-r1 apk
|
xz-libs 5.4.3-r1 apk
|
||||||
zlib 1.2.13-r1 apk
|
zlib 1.2.13-r2 apk
|
||||||
|
zstd-libs 1.5.5-r5 apk
|
||||||
|
|||||||
@@ -69,6 +69,7 @@ app_setup_block: |
|
|||||||
|
|
||||||
# changelog
|
# changelog
|
||||||
changelogs:
|
changelogs:
|
||||||
|
- { date: "10.06.23:", desc: "Bump unrar to 6.2.8." }
|
||||||
- { date: "23.02.23:", desc: "Add qt6-qtbase-sqlite to support SQLite database for resume files."}
|
- { date: "23.02.23:", desc: "Add qt6-qtbase-sqlite to support SQLite database for resume files."}
|
||||||
- { date: "29.11.22:", desc: "Add openssl1.1-compat for qbittorrent-cli." }
|
- { date: "29.11.22:", desc: "Add openssl1.1-compat for qbittorrent-cli." }
|
||||||
- { date: "31.10.22:", desc: "Add libtorrentv1 branch." }
|
- { date: "31.10.22:", desc: "Add libtorrentv1 branch." }
|
||||||
|
|||||||
Reference in New Issue
Block a user