Compare commits

...

12 Commits

Author SHA1 Message Date
LinuxServer-CI
24d1630688 Bot Updating Package Versions 2024-10-13 06:51:45 +00:00
LinuxServer-CI
a13e4722f7 Bot Updating Package Versions 2024-10-10 16:51:54 +00:00
LinuxServer-CI
95f4150538 Bot Updating Package Versions 2024-10-08 10:11:44 +00:00
Adam
efa08e0e83 Merge pull request #333 from linuxserver/master-dynamic-bind-address 2024-10-08 11:09:04 +01:00
thespad
4573a98e14 Read webui bind address from config if present. 2024-10-07 20:16:53 +01:00
LinuxServer-CI
4437b92c16 Bot Updating Package Versions 2024-10-06 06:52:08 +00:00
LinuxServer-CI
d3597ffea1 Bot Updating Package Versions 2024-09-30 17:49:32 +00:00
LinuxServer-CI
2f793f5456 Bot Updating Package Versions 2024-09-30 15:49:14 +00:00
LinuxServer-CI
50cd7a6a07 Bot Updating Package Versions 2024-09-29 06:56:52 +00:00
LinuxServer-CI
a6ba44ffa0 Bot Updating Templated Files 2024-09-29 06:54:04 +00:00
LinuxServer-CI
fa9f5c9cb3 Bot Updating Templated Files 2024-09-29 06:52:47 +00:00
LinuxServer-CI
4dcdd36ff4 Bot Updating Templated Files 2024-09-29 06:51:31 +00:00
9 changed files with 340 additions and 290 deletions

View File

@@ -11,15 +11,17 @@ jobs:
- name: External Trigger - name: External Trigger
if: github.ref == 'refs/heads/master' if: github.ref == 'refs/heads/master'
env:
SKIP_EXTERNAL_TRIGGER: ${{ vars.SKIP_EXTERNAL_TRIGGER }}
run: | run: |
printf "# External trigger for docker-qbittorrent\n\n" >> $GITHUB_STEP_SUMMARY printf "# External trigger for docker-qbittorrent\n\n" >> $GITHUB_STEP_SUMMARY
if [ -n "${{ secrets.PAUSE_EXTERNAL_TRIGGER_QBITTORRENT_MASTER }}" ]; then if grep -q "^qbittorrent_master" <<< "${SKIP_EXTERNAL_TRIGGER}"; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> Github secret \`PAUSE_EXTERNAL_TRIGGER_QBITTORRENT_MASTER\` is set; skipping trigger." >> $GITHUB_STEP_SUMMARY echo "> Github organizational variable \`SKIP_EXTERNAL_TRIGGER\` contains \`qbittorrent_master\`; skipping trigger." >> $GITHUB_STEP_SUMMARY
exit 0 exit 0
fi fi
echo "> [!NOTE]" >> $GITHUB_STEP_SUMMARY echo "> [!NOTE]" >> $GITHUB_STEP_SUMMARY
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 "> External trigger running off of master branch. To disable this trigger, add \`qbittorrent_master\` into the Github organizational variable \`SKIP_EXTERNAL_TRIGGER\`." >> $GITHUB_STEP_SUMMARY
printf "\n## Retrieving external version\n\n" >> $GITHUB_STEP_SUMMARY printf "\n## Retrieving external version\n\n" >> $GITHUB_STEP_SUMMARY
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://')
@@ -86,26 +88,38 @@ jobs:
echo "New version \`${EXT_RELEASE}\` found; but there already seems to be an active build on Jenkins; exiting" >> $GITHUB_STEP_SUMMARY 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
printf "\n## Trigger new build\n\n" >> $GITHUB_STEP_SUMMARY if [[ "${artifacts_found}" == "false" ]]; then
echo "New version \`${EXT_RELEASE}\` found; old version was \`${IMAGE_VERSION}\`. Triggering new build" >> $GITHUB_STEP_SUMMARY echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
response=$(curl -iX POST \ echo "> New version detected, but not all artifacts are published yet; skipping trigger" >> $GITHUB_STEP_SUMMARY
https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-qbittorrent/job/master/buildWithParameters?PACKAGE_CHECK=false \ FAILURE_REASON="New version ${EXT_RELEASE} for qbittorrent tag latest is detected, however not all artifacts are uploaded to upstream release yet. Will try again later."
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} | grep -i location | sed "s|^[L|l]ocation: \(.*\)|\1|") curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903,
echo "Jenkins [job queue url](${response%$'\r'})" >> $GITHUB_STEP_SUMMARY "description": "**Trigger Failed** \n**Reason:** '"${FAILURE_REASON}"' \n"}],
echo "Sleeping 10 seconds until job starts" >> $GITHUB_STEP_SUMMARY "username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
sleep 10 else
buildurl=$(curl -s "${response%$'\r'}api/json" | jq -r '.executable.url') printf "\n## Trigger new build\n\n" >> $GITHUB_STEP_SUMMARY
buildurl="${buildurl%$'\r'}" echo "New version \`${EXT_RELEASE}\` found; old version was \`${IMAGE_VERSION}\`. Triggering new build" >> $GITHUB_STEP_SUMMARY
echo "Jenkins job [build url](${buildurl})" >> $GITHUB_STEP_SUMMARY if "${artifacts_found}" == "true" ]]; then
echo "Attempting to change the Jenkins job description" >> $GITHUB_STEP_SUMMARY echo "All artifacts seem to be uploaded." >> $GITHUB_STEP_SUMMARY
curl -iX POST \ fi
"${buildurl}submitDescription" \ response=$(curl -iX POST \
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} \ https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-qbittorrent/job/master/buildWithParameters?PACKAGE_CHECK=false \
--data-urlencode "description=GHA external trigger https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" \ --user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} | grep -i location | sed "s|^[L|l]ocation: \(.*\)|\1|")
--data-urlencode "Submit=Submit" echo "Jenkins [job queue url](${response%$'\r'})" >> $GITHUB_STEP_SUMMARY
echo "**** Notifying Discord ****" echo "Sleeping 10 seconds until job starts" >> $GITHUB_STEP_SUMMARY
TRIGGER_REASON="A version change was detected for qbittorrent tag latest. Old version:${IMAGE_VERSION} New version:${EXT_RELEASE}" sleep 10
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903, buildurl=$(curl -s "${response%$'\r'}api/json" | jq -r '.executable.url')
"description": "**Build Triggered** \n**Reason:** '"${TRIGGER_REASON}"' \n**Build URL:** '"${buildurl}display/redirect"' \n"}], buildurl="${buildurl%$'\r'}"
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }} echo "Jenkins job [build url](${buildurl})" >> $GITHUB_STEP_SUMMARY
echo "Attempting to change the Jenkins job description" >> $GITHUB_STEP_SUMMARY
curl -iX POST \
"${buildurl}submitDescription" \
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} \
--data-urlencode "description=GHA external trigger https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" \
--data-urlencode "Submit=Submit"
echo "**** Notifying Discord ****"
TRIGGER_REASON="A version change was detected for qbittorrent tag latest. Old version:${IMAGE_VERSION} New version:${EXT_RELEASE}"
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903,
"description": "**Build Triggered** \n**Reason:** '"${TRIGGER_REASON}"' \n**Build URL:** '"${buildurl}display/redirect"' \n"}],
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
fi
fi fi

View File

@@ -1,42 +0,0 @@
name: Package Trigger Main
on:
workflow_dispatch:
jobs:
package-trigger-master:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4.1.1
- name: Package Trigger
if: github.ref == 'refs/heads/master'
run: |
printf "# Package trigger for docker-qbittorrent\n\n" >> $GITHUB_STEP_SUMMARY
if [ -n "${{ secrets.PAUSE_PACKAGE_TRIGGER_QBITTORRENT_MASTER }}" ]; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> Github secret \`PAUSE_PACKAGE_TRIGGER_QBITTORRENT_MASTER\` is set; skipping trigger." >> $GITHUB_STEP_SUMMARY
exit 0
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
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> There already seems to be an active build on Jenkins; skipping package trigger" >> $GITHUB_STEP_SUMMARY
exit 0
fi
echo "> [!NOTE]" >> $GITHUB_STEP_SUMMARY
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 \
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|")
echo "Jenkins [job queue url](${response%$'\r'})" >> $GITHUB_STEP_SUMMARY
echo "Sleeping 10 seconds until job starts" >> $GITHUB_STEP_SUMMARY
sleep 10
buildurl=$(curl -s "${response%$'\r'}api/json" | jq -r '.executable.url')
buildurl="${buildurl%$'\r'}"
echo "Jenkins job [build url](${buildurl})" >> $GITHUB_STEP_SUMMARY
echo "Attempting to change the Jenkins job description" >> $GITHUB_STEP_SUMMARY
curl -iX POST \
"${buildurl}submitDescription" \
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} \
--data-urlencode "description=GHA package trigger https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" \
--data-urlencode "Submit=Submit"

View File

@@ -14,6 +14,8 @@ jobs:
fetch-depth: '0' fetch-depth: '0'
- name: Package Trigger Scheduler - name: Package Trigger Scheduler
env:
SKIP_PACKAGE_TRIGGER: ${{ vars.SKIP_PACKAGE_TRIGGER }}
run: | run: |
printf "# Package trigger scheduler for docker-qbittorrent\n\n" >> $GITHUB_STEP_SUMMARY printf "# Package trigger scheduler for docker-qbittorrent\n\n" >> $GITHUB_STEP_SUMMARY
printf "Found the branches:\n\n%s\n" "$(git for-each-ref --format='- %(refname:lstrip=3)' refs/remotes)" >> $GITHUB_STEP_SUMMARY printf "Found the branches:\n\n%s\n" "$(git for-each-ref --format='- %(refname:lstrip=3)' refs/remotes)" >> $GITHUB_STEP_SUMMARY
@@ -24,27 +26,57 @@ jobs:
continue continue
fi fi
printf "\n## Evaluating \`%s\`\n\n" ${br} >> $GITHUB_STEP_SUMMARY printf "\n## Evaluating \`%s\`\n\n" ${br} >> $GITHUB_STEP_SUMMARY
ls_branch=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-qbittorrent/${br}/jenkins-vars.yml | yq -r '.ls_branch') JENKINS_VARS=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-qbittorrent/${br}/jenkins-vars.yml)
if [ "${br}" == "${ls_branch}" ]; then if [[ "${br}" == $(yq -r '.ls_branch' <<< "${JENKINS_VARS}") ]]; then
echo "Branch appears to be live; checking workflow." >> $GITHUB_STEP_SUMMARY echo "Branch appears to be live; checking workflow." >> $GITHUB_STEP_SUMMARY
if curl -sfX GET https://raw.githubusercontent.com/linuxserver/docker-qbittorrent/${br}/.github/workflows/package_trigger.yml > /dev/null 2>&1; then if [[ $(yq -r '.skip_package_check' <<< "${JENKINS_VARS}") == "true" ]]; then
echo "Triggering package trigger workflow for branch ${br}" >> $GITHUB_STEP_SUMMARY echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
triggered_branches="${triggered_branches}${br} " echo "> Skipping branch ${br} due to \`skip_package_check\` being set in \`jenkins-vars.yml\`." >> $GITHUB_STEP_SUMMARY
curl -iX POST \ skipped_branches="${skipped_branches}${br} "
-H "Authorization: token ${{ secrets.CR_PAT }}" \ elif grep -q "^qbittorrent_${br}" <<< "${SKIP_PACKAGE_TRIGGER}"; then
-H "Accept: application/vnd.github.v3+json" \ echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
-d "{\"ref\":\"refs/heads/${br}\"}" \ echo "> Github organizational variable \`SKIP_PACKAGE_TRIGGER\` contains \`qbittorrent_${br}\`; skipping trigger." >> $GITHUB_STEP_SUMMARY
https://api.github.com/repos/linuxserver/docker-qbittorrent/actions/workflows/package_trigger.yml/dispatches skipped_branches="${skipped_branches}${br} "
sleep 30 elif [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-qbittorrent/job/${br}/lastBuild/api/json | jq -r '.building') == "true" ]; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> There already seems to be an active build on Jenkins; skipping package trigger for ${br}" >> $GITHUB_STEP_SUMMARY
skipped_branches="${skipped_branches}${br} "
else else
echo "Skipping branch ${br} due to no package trigger workflow present." >> $GITHUB_STEP_SUMMARY echo "> [!NOTE]" >> $GITHUB_STEP_SUMMARY
echo "> Triggering package trigger for branch ${br}" >> $GITHUB_STEP_SUMMARY
printf "> To disable, add \`qbittorrent_%s\` into the Github organizational variable \`SKIP_PACKAGE_TRIGGER\`.\n\n" "${br}" >> $GITHUB_STEP_SUMMARY
triggered_branches="${triggered_branches}${br} "
response=$(curl -iX POST \
https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-qbittorrent/job/${br}/buildWithParameters?PACKAGE_CHECK=true \
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} | grep -i location | sed "s|^[L|l]ocation: \(.*\)|\1|")
echo "Jenkins [job queue url](${response%$'\r'})" >> $GITHUB_STEP_SUMMARY
echo "Sleeping 10 seconds until job starts" >> $GITHUB_STEP_SUMMARY
sleep 10
buildurl=$(curl -s "${response%$'\r'}api/json" | jq -r '.executable.url')
buildurl="${buildurl%$'\r'}"
echo "Jenkins job [build url](${buildurl})" >> $GITHUB_STEP_SUMMARY
echo "Attempting to change the Jenkins job description" >> $GITHUB_STEP_SUMMARY
curl -iX POST \
"${buildurl}submitDescription" \
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} \
--data-urlencode "description=GHA package trigger https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" \
--data-urlencode "Submit=Submit"
sleep 20
fi fi
else else
echo "Skipping branch ${br} due to being detected as dev branch." >> $GITHUB_STEP_SUMMARY 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} ****" if [[ -n "${triggered_branches}" ]] || [[ -n "${skipped_branches}" ]]; then
echo "**** Notifying Discord ****" if [[ -n "${triggered_branches}" ]]; then
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903, NOTIFY_BRANCHES="**Triggered:** ${triggered_branches} \n"
"description": "**Package Check Build(s) Triggered for qbittorrent** \n**Branch(es):** '"${triggered_branches}"' \n**Build URL:** '"https://ci.linuxserver.io/blue/organizations/jenkins/Docker-Pipeline-Builders%2Fdocker-qbittorrent/activity/"' \n"}], fi
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }} if [[ -n "${skipped_branches}" ]]; then
NOTIFY_BRANCHES="${NOTIFY_BRANCHES}**Skipped:** ${skipped_branches} \n"
fi
echo "**** Package check build(s) triggered for branch(es): ${triggered_branches} ****"
echo "**** Notifying Discord ****"
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903,
"description": "**Package Check Build(s) Triggered for qbittorrent** \n'"${NOTIFY_BRANCHES}"'**Build URL:** '"https://ci.linuxserver.io/blue/organizations/jenkins/Docker-Pipeline-Builders%2Fdocker-qbittorrent/activity/"' \n"}],
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
fi

View File

@@ -21,6 +21,7 @@ XDG_DATA_HOME="/config"
RUN \ RUN \
echo "**** install packages ****" && \ echo "**** install packages ****" && \
apk add --no-cache \ apk add --no-cache \
grep \
icu-libs \ icu-libs \
p7zip \ p7zip \
python3 \ python3 \

View File

@@ -21,6 +21,7 @@ XDG_DATA_HOME="/config"
RUN \ RUN \
echo "**** install packages ****" && \ echo "**** install packages ****" && \
apk add --no-cache \ apk add --no-cache \
grep \
icu-libs \ icu-libs \
p7zip \ p7zip \
python3 \ python3 \

60
Jenkinsfile vendored
View File

@@ -84,7 +84,7 @@ pipeline {
env.CODE_URL = 'https://github.com/' + env.LS_USER + '/' + env.LS_REPO + '/commit/' + env.GIT_COMMIT env.CODE_URL = 'https://github.com/' + env.LS_USER + '/' + env.LS_REPO + '/commit/' + env.GIT_COMMIT
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.DOCKERHUB_IMAGE + '/tags/' env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.DOCKERHUB_IMAGE + '/tags/'
env.PULL_REQUEST = env.CHANGE_ID env.PULL_REQUEST = env.CHANGE_ID
env.TEMPLATED_FILES = 'Jenkinsfile README.md LICENSE .editorconfig ./.github/CONTRIBUTING.md ./.github/FUNDING.yml ./.github/ISSUE_TEMPLATE/config.yml ./.github/ISSUE_TEMPLATE/issue.bug.yml ./.github/ISSUE_TEMPLATE/issue.feature.yml ./.github/PULL_REQUEST_TEMPLATE.md ./.github/workflows/external_trigger_scheduler.yml ./.github/workflows/greetings.yml ./.github/workflows/package_trigger_scheduler.yml ./.github/workflows/call_issue_pr_tracker.yml ./.github/workflows/call_issues_cron.yml ./.github/workflows/permissions.yml ./.github/workflows/external_trigger.yml ./.github/workflows/package_trigger.yml' env.TEMPLATED_FILES = 'Jenkinsfile README.md LICENSE .editorconfig ./.github/CONTRIBUTING.md ./.github/FUNDING.yml ./.github/ISSUE_TEMPLATE/config.yml ./.github/ISSUE_TEMPLATE/issue.bug.yml ./.github/ISSUE_TEMPLATE/issue.feature.yml ./.github/PULL_REQUEST_TEMPLATE.md ./.github/workflows/external_trigger_scheduler.yml ./.github/workflows/greetings.yml ./.github/workflows/package_trigger_scheduler.yml ./.github/workflows/call_issue_pr_tracker.yml ./.github/workflows/call_issues_cron.yml ./.github/workflows/permissions.yml ./.github/workflows/external_trigger.yml'
} }
sh '''#! /bin/bash sh '''#! /bin/bash
echo "The default github branch detected as ${GH_DEFAULT_BRANCH}" ''' echo "The default github branch detected as ${GH_DEFAULT_BRANCH}" '''
@@ -315,7 +315,7 @@ pipeline {
echo "Jenkinsfile is up to date." echo "Jenkinsfile is up to date."
fi fi
echo "Starting Stage 2 - Delete old templates" echo "Starting Stage 2 - Delete old templates"
OLD_TEMPLATES=".github/ISSUE_TEMPLATE.md .github/ISSUE_TEMPLATE/issue.bug.md .github/ISSUE_TEMPLATE/issue.feature.md .github/workflows/call_invalid_helper.yml .github/workflows/stale.yml" OLD_TEMPLATES=".github/ISSUE_TEMPLATE.md .github/ISSUE_TEMPLATE/issue.bug.md .github/ISSUE_TEMPLATE/issue.feature.md .github/workflows/call_invalid_helper.yml .github/workflows/stale.yml .github/workflows/package_trigger.yml"
for i in ${OLD_TEMPLATES}; do for i in ${OLD_TEMPLATES}; do
if [[ -f "${i}" ]]; then if [[ -f "${i}" ]]; then
TEMPLATES_TO_DELETE="${i} ${TEMPLATES_TO_DELETE}" TEMPLATES_TO_DELETE="${i} ${TEMPLATES_TO_DELETE}"
@@ -723,6 +723,14 @@ pipeline {
} }
sh '''#! /bin/bash sh '''#! /bin/bash
set -e set -e
if grep -q 'docker-baseimage' <<< "${LS_REPO}"; then
echo "Detected baseimage, setting LSIO_FIRST_PARTY=true"
if [ -n "${CI_DOCKERENV}" ]; then
CI_DOCKERENV="LSIO_FIRST_PARTY=true|${CI_DOCKERENV}"
else
CI_DOCKERENV="LSIO_FIRST_PARTY=true"
fi
fi
docker pull ghcr.io/linuxserver/ci:latest docker pull ghcr.io/linuxserver/ci:latest
if [ "${MULTIARCH}" == "true" ]; then if [ "${MULTIARCH}" == "true" ]; then
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} --platform=arm64 docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} --platform=arm64
@@ -735,6 +743,7 @@ pipeline {
-e DOCKER_LOGS_TIMEOUT=\"${CI_DELAY}\" \ -e DOCKER_LOGS_TIMEOUT=\"${CI_DELAY}\" \
-e TAGS=\"${CI_TAGS}\" \ -e TAGS=\"${CI_TAGS}\" \
-e META_TAG=\"${META_TAG}\" \ -e META_TAG=\"${META_TAG}\" \
-e RELEASE_TAG=\"latest\" \
-e PORT=\"${CI_PORT}\" \ -e PORT=\"${CI_PORT}\" \
-e SSL=\"${CI_SSL}\" \ -e SSL=\"${CI_SSL}\" \
-e BASE=\"${DIST_IMAGE}\" \ -e BASE=\"${DIST_IMAGE}\" \
@@ -744,6 +753,7 @@ 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 NODE_NAME=\"${NODE_NAME}\" \
-t ghcr.io/linuxserver/ci:latest \ -t ghcr.io/linuxserver/ci:latest \
python3 test_build.py''' python3 test_build.py'''
} }
@@ -1011,17 +1021,45 @@ EOF
git config --global --unset commit.gpgsign git config --global --unset commit.gpgsign
''' '''
script{ script{
env.JOB_DATE = sh(
script: '''date '+%Y-%m-%dT%H:%M:%S%:z' ''',
returnStdout: true).trim()
if (env.EXIT_STATUS == "ABORTED"){ if (env.EXIT_STATUS == "ABORTED"){
sh 'echo "build aborted"' sh 'echo "build aborted"'
} }else{
else if (currentBuild.currentResult == "SUCCESS"){ if (currentBuild.currentResult == "SUCCESS"){
sh ''' curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/jenkins-avatar.png","embeds": [{"color": 1681177,\ if (env.GITHUBIMAGE =~ /lspipepr/){
"description": "**Build:** '${BUILD_NUMBER}'\\n**CI Results:** '${CI_URL}'\\n**ShellCheck Results:** '${SHELLCHECK_URL}'\\n**Status:** Success\\n**Job:** '${RUN_DISPLAY_URL}'\\n**Change:** '${CODE_URL}'\\n**External Release:**: '${RELEASE_LINK}'\\n**DockerHub:** '${DOCKERHUB_LINK}'\\n"}],\ env.JOB_WEBHOOK_STATUS='Success'
"username": "Jenkins"}' ${BUILDS_DISCORD} ''' env.JOB_WEBHOOK_COLOUR=3957028
} env.JOB_WEBHOOK_FOOTER='PR Build'
else { }else if (env.GITHUBIMAGE =~ /lsiodev/){
sh ''' curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/jenkins-avatar.png","embeds": [{"color": 16711680,\ env.JOB_WEBHOOK_STATUS='Success'
"description": "**Build:** '${BUILD_NUMBER}'\\n**CI Results:** '${CI_URL}'\\n**ShellCheck Results:** '${SHELLCHECK_URL}'\\n**Status:** failure\\n**Job:** '${RUN_DISPLAY_URL}'\\n**Change:** '${CODE_URL}'\\n**External Release:**: '${RELEASE_LINK}'\\n**DockerHub:** '${DOCKERHUB_LINK}'\\n"}],\ env.JOB_WEBHOOK_COLOUR=3957028
env.JOB_WEBHOOK_FOOTER='Dev Build'
}else{
env.JOB_WEBHOOK_STATUS='Success'
env.JOB_WEBHOOK_COLOUR=1681177
env.JOB_WEBHOOK_FOOTER='Live Build'
}
}else{
if (env.GITHUBIMAGE =~ /lspipepr/){
env.JOB_WEBHOOK_STATUS='Failure'
env.JOB_WEBHOOK_COLOUR=12669523
env.JOB_WEBHOOK_FOOTER='PR Build'
}else if (env.GITHUBIMAGE =~ /lsiodev/){
env.JOB_WEBHOOK_STATUS='Failure'
env.JOB_WEBHOOK_COLOUR=12669523
env.JOB_WEBHOOK_FOOTER='Dev Build'
}else{
env.JOB_WEBHOOK_STATUS='Failure'
env.JOB_WEBHOOK_COLOUR=16711680
env.JOB_WEBHOOK_FOOTER='Live Build'
}
}
sh ''' curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/jenkins-avatar.png","embeds": [{"'color'": '${JOB_WEBHOOK_COLOUR}',\
"footer": {"text" : "'"${JOB_WEBHOOK_FOOTER}"'"},\
"timestamp": "'${JOB_DATE}'",\
"description": "**Build:** '${BUILD_NUMBER}'\\n**CI Results:** '${CI_URL}'\\n**ShellCheck Results:** '${SHELLCHECK_URL}'\\n**Status:** '${JOB_WEBHOOK_STATUS}'\\n**Job:** '${RUN_DISPLAY_URL}'\\n**Change:** '${CODE_URL}'\\n**External Release:**: '${RELEASE_LINK}'\\n**DockerHub:** '${DOCKERHUB_LINK}'\\n"}],\
"username": "Jenkins"}' ${BUILDS_DISCORD} ''' "username": "Jenkins"}' ${BUILDS_DISCORD} '''
} }
} }

View File

@@ -90,7 +90,6 @@ Similarly to the WEBUI_PORT, to set the port to 6887 you need to pass -p 6887:68
This image can be run with a read-only container filesystem. For details please [read the docs](https://docs.linuxserver.io/misc/read-only/). This image can be run with a read-only container filesystem. For details please [read the docs](https://docs.linuxserver.io/misc/read-only/).
## Usage ## Usage
To help you get started creating a container from this image you can either use docker-compose or the docker cli. To help you get started creating a container from this image you can either use docker-compose or the docker cli.
@@ -292,7 +291,8 @@ Below are the instructions for updating containers:
### Image Update Notifications - Diun (Docker Image Update Notifier) ### Image Update Notifications - Diun (Docker Image Update Notifier)
**tip**: We recommend [Diun](https://crazymax.dev/diun/) for update notifications. Other tools that automatically update containers unattended are not recommended or supported. >[!TIP]
>We recommend [Diun](https://crazymax.dev/diun/) for update notifications. Other tools that automatically update containers unattended are not recommended or supported.
## Building locally ## Building locally

View File

@@ -6,184 +6,184 @@ Bouncy Castle for .NET (netstandard2.0) 1.8.8.2
CommandLineUtils 2.4.4+3c2a4909757a51602dcca9b961d577511b85fd31.3c2a4909757a51602dcca9b961d577511b85fd31 dotnet CommandLineUtils 2.4.4+3c2a4909757a51602dcca9b961d577511b85fd31.3c2a4909757a51602dcca9b961d577511b85fd31 dotnet
CsvHelper 12.1.2 dotnet CsvHelper 12.1.2 dotnet
Json.NET 13.0.3.27908 dotnet Json.NET 13.0.3.27908 dotnet
Microsoft.CSharp 6.0.3024.21525 dotnet Microsoft.CSharp 6.0.3524.45918 dotnet
Microsoft.VisualBasic 6.0.3024.21525 dotnet Microsoft.VisualBasic 6.0.3524.45918 dotnet
Microsoft.VisualBasic.Core 11.100.3024.21525 dotnet Microsoft.VisualBasic.Core 11.100.3524.45918 dotnet
Microsoft.Win32.Primitives 6.0.3024.21525 dotnet Microsoft.Win32.Primitives 6.0.3524.45918 dotnet
Microsoft.Win32.Registry 6.0.3024.21525 dotnet Microsoft.Win32.Registry 6.0.3524.45918 dotnet
Mono.Posix.NETStandard 1.0.0.0 dotnet Mono.Posix.NETStandard 1.0.0.0 dotnet
NJsonSchema 9.14.1.0 dotnet NJsonSchema 9.14.1.0 dotnet
Portable.Xaml.dll 0.18.0.0 dotnet Portable.Xaml.dll 0.18.0.0 dotnet
QBittorrent.Client 1.9.23349.1 dotnet QBittorrent.Client 1.9.24285.1 dotnet
System 6.0.3024.21525 dotnet System 6.0.3524.45918 dotnet
System.AppContext 6.0.3024.21525 dotnet System.AppContext 6.0.3524.45918 dotnet
System.Buffers 6.0.3024.21525 dotnet System.Buffers 6.0.3524.45918 dotnet
System.Collections 6.0.3024.21525 dotnet System.Collections 6.0.3524.45918 dotnet
System.Collections.Concurrent 6.0.3024.21525 dotnet System.Collections.Concurrent 6.0.3524.45918 dotnet
System.Collections.Immutable 6.0.3024.21525 dotnet System.Collections.Immutable 6.0.3524.45918 dotnet
System.Collections.NonGeneric 6.0.3024.21525 dotnet System.Collections.NonGeneric 6.0.3524.45918 dotnet
System.Collections.Specialized 6.0.3024.21525 dotnet System.Collections.Specialized 6.0.3524.45918 dotnet
System.ComponentModel 6.0.3024.21525 dotnet System.ComponentModel 6.0.3524.45918 dotnet
System.ComponentModel.Annotations 6.0.3024.21525 dotnet System.ComponentModel.Annotations 6.0.3524.45918 dotnet
System.ComponentModel.DataAnnotations 6.0.3024.21525 dotnet System.ComponentModel.DataAnnotations 6.0.3524.45918 dotnet
System.ComponentModel.EventBasedAsync 6.0.3024.21525 dotnet System.ComponentModel.EventBasedAsync 6.0.3524.45918 dotnet
System.ComponentModel.Primitives 6.0.3024.21525 dotnet System.ComponentModel.Primitives 6.0.3524.45918 dotnet
System.ComponentModel.TypeConverter 6.0.3024.21525 dotnet System.ComponentModel.TypeConverter 6.0.3524.45918 dotnet
System.Configuration 6.0.3024.21525 dotnet System.Configuration 6.0.3524.45918 dotnet
System.Console 6.0.3024.21525 dotnet System.Console 6.0.3524.45918 dotnet
System.Core 6.0.3024.21525 dotnet System.Core 6.0.3524.45918 dotnet
System.Data 6.0.3024.21525 dotnet System.Data 6.0.3524.45918 dotnet
System.Data.Common 6.0.3024.21525 dotnet System.Data.Common 6.0.3524.45918 dotnet
System.Data.DataSetExtensions 6.0.3024.21525 dotnet System.Data.DataSetExtensions 6.0.3524.45918 dotnet
System.Diagnostics.Contracts 6.0.3024.21525 dotnet System.Diagnostics.Contracts 6.0.3524.45918 dotnet
System.Diagnostics.Debug 6.0.3024.21525 dotnet System.Diagnostics.Debug 6.0.3524.45918 dotnet
System.Diagnostics.DiagnosticSource 6.0.3024.21525 dotnet System.Diagnostics.DiagnosticSource 6.0.3524.45918 dotnet
System.Diagnostics.FileVersionInfo 6.0.3024.21525 dotnet System.Diagnostics.FileVersionInfo 6.0.3524.45918 dotnet
System.Diagnostics.Process 6.0.3024.21525 dotnet System.Diagnostics.Process 6.0.3524.45918 dotnet
System.Diagnostics.StackTrace 6.0.3024.21525 dotnet System.Diagnostics.StackTrace 6.0.3524.45918 dotnet
System.Diagnostics.TextWriterTraceListener 6.0.3024.21525 dotnet System.Diagnostics.TextWriterTraceListener 6.0.3524.45918 dotnet
System.Diagnostics.Tools 6.0.3024.21525 dotnet System.Diagnostics.Tools 6.0.3524.45918 dotnet
System.Diagnostics.TraceSource 6.0.3024.21525 dotnet System.Diagnostics.TraceSource 6.0.3524.45918 dotnet
System.Diagnostics.Tracing 6.0.3024.21525 dotnet System.Diagnostics.Tracing 6.0.3524.45918 dotnet
System.Drawing 6.0.3024.21525 dotnet System.Drawing 6.0.3524.45918 dotnet
System.Drawing.Primitives 6.0.3024.21525 dotnet System.Drawing.Primitives 6.0.3524.45918 dotnet
System.Dynamic.Runtime 6.0.3024.21525 dotnet System.Dynamic.Runtime 6.0.3524.45918 dotnet
System.Formats.Asn1 6.0.3024.21525 dotnet System.Formats.Asn1 6.0.3524.45918 dotnet
System.Globalization 6.0.3024.21525 dotnet System.Globalization 6.0.3524.45918 dotnet
System.Globalization.Calendars 6.0.3024.21525 dotnet System.Globalization.Calendars 6.0.3524.45918 dotnet
System.Globalization.Extensions 6.0.3024.21525 dotnet System.Globalization.Extensions 6.0.3524.45918 dotnet
System.IO 6.0.3024.21525 dotnet System.IO 6.0.3524.45918 dotnet
System.IO.Compression 6.0.3024.21525 dotnet System.IO.Compression 6.0.3524.45918 dotnet
System.IO.Compression.Brotli 6.0.3024.21525 dotnet System.IO.Compression.Brotli 6.0.3524.45918 dotnet
System.IO.Compression.FileSystem 6.0.3024.21525 dotnet System.IO.Compression.FileSystem 6.0.3524.45918 dotnet
System.IO.Compression.ZipFile 6.0.3024.21525 dotnet System.IO.Compression.ZipFile 6.0.3524.45918 dotnet
System.IO.FileSystem 6.0.3024.21525 dotnet System.IO.FileSystem 6.0.3524.45918 dotnet
System.IO.FileSystem.AccessControl 6.0.3024.21525 dotnet System.IO.FileSystem.AccessControl 6.0.3524.45918 dotnet
System.IO.FileSystem.DriveInfo 6.0.3024.21525 dotnet System.IO.FileSystem.DriveInfo 6.0.3524.45918 dotnet
System.IO.FileSystem.Primitives 6.0.3024.21525 dotnet System.IO.FileSystem.Primitives 6.0.3524.45918 dotnet
System.IO.FileSystem.Watcher 6.0.3024.21525 dotnet System.IO.FileSystem.Watcher 6.0.3524.45918 dotnet
System.IO.IsolatedStorage 6.0.3024.21525 dotnet System.IO.IsolatedStorage 6.0.3524.45918 dotnet
System.IO.MemoryMappedFiles 6.0.3024.21525 dotnet System.IO.MemoryMappedFiles 6.0.3524.45918 dotnet
System.IO.Pipes 6.0.3024.21525 dotnet System.IO.Pipes 6.0.3524.45918 dotnet
System.IO.Pipes.AccessControl 6.0.3024.21525 dotnet System.IO.Pipes.AccessControl 6.0.3524.45918 dotnet
System.IO.UnmanagedMemoryStream 6.0.3024.21525 dotnet System.IO.UnmanagedMemoryStream 6.0.3524.45918 dotnet
System.Linq 6.0.3024.21525 dotnet System.Linq 6.0.3524.45918 dotnet
System.Linq.Expressions 6.0.3024.21525 dotnet System.Linq.Expressions 6.0.3524.45918 dotnet
System.Linq.Parallel 6.0.3024.21525 dotnet System.Linq.Parallel 6.0.3524.45918 dotnet
System.Linq.Queryable 6.0.3024.21525 dotnet System.Linq.Queryable 6.0.3524.45918 dotnet
System.Memory 6.0.3024.21525 dotnet System.Memory 6.0.3524.45918 dotnet
System.Net 6.0.3024.21525 dotnet System.Net 6.0.3524.45918 dotnet
System.Net.Http 6.0.3024.21525 dotnet System.Net.Http 6.0.3524.45918 dotnet
System.Net.Http.Json 6.0.3024.21525 dotnet System.Net.Http.Json 6.0.3524.45918 dotnet
System.Net.HttpListener 6.0.3024.21525 dotnet System.Net.HttpListener 6.0.3524.45918 dotnet
System.Net.IPNetwork 2.5.235 dotnet System.Net.IPNetwork 2.5.235 dotnet
System.Net.Mail 6.0.3024.21525 dotnet System.Net.Mail 6.0.3524.45918 dotnet
System.Net.NameResolution 6.0.3024.21525 dotnet System.Net.NameResolution 6.0.3524.45918 dotnet
System.Net.NetworkInformation 6.0.3024.21525 dotnet System.Net.NetworkInformation 6.0.3524.45918 dotnet
System.Net.Ping 6.0.3024.21525 dotnet System.Net.Ping 6.0.3524.45918 dotnet
System.Net.Primitives 6.0.3024.21525 dotnet System.Net.Primitives 6.0.3524.45918 dotnet
System.Net.Quic 6.0.3024.21525 dotnet System.Net.Quic 6.0.3524.45918 dotnet
System.Net.Requests 6.0.3024.21525 dotnet System.Net.Requests 6.0.3524.45918 dotnet
System.Net.Security 6.0.3024.21525 dotnet System.Net.Security 6.0.3524.45918 dotnet
System.Net.ServicePoint 6.0.3024.21525 dotnet System.Net.ServicePoint 6.0.3524.45918 dotnet
System.Net.Sockets 6.0.3024.21525 dotnet System.Net.Sockets 6.0.3524.45918 dotnet
System.Net.WebClient 6.0.3024.21525 dotnet System.Net.WebClient 6.0.3524.45918 dotnet
System.Net.WebHeaderCollection 6.0.3024.21525 dotnet System.Net.WebHeaderCollection 6.0.3524.45918 dotnet
System.Net.WebProxy 6.0.3024.21525 dotnet System.Net.WebProxy 6.0.3524.45918 dotnet
System.Net.WebSockets 6.0.3024.21525 dotnet System.Net.WebSockets 6.0.3524.45918 dotnet
System.Net.WebSockets.Client 6.0.3024.21525 dotnet System.Net.WebSockets.Client 6.0.3524.45918 dotnet
System.Numerics 6.0.3024.21525 dotnet System.Numerics 6.0.3524.45918 dotnet
System.Numerics.Vectors 6.0.3024.21525 dotnet System.Numerics.Vectors 6.0.3524.45918 dotnet
System.ObjectModel 6.0.3024.21525 dotnet System.ObjectModel 6.0.3524.45918 dotnet
System.Private.CoreLib 6.0.3024.21525 dotnet System.Private.CoreLib 6.0.3524.45918 dotnet
System.Private.DataContractSerialization 6.0.3024.21525 dotnet System.Private.DataContractSerialization 6.0.3524.45918 dotnet
System.Private.Uri 6.0.3024.21525 dotnet System.Private.Uri 6.0.3524.45918 dotnet
System.Private.Xml 6.0.3024.21525 dotnet System.Private.Xml 6.0.3524.45918 dotnet
System.Private.Xml.Linq 6.0.3024.21525 dotnet System.Private.Xml.Linq 6.0.3524.45918 dotnet
System.Reflection 6.0.3024.21525 dotnet System.Reflection 6.0.3524.45918 dotnet
System.Reflection.DispatchProxy 6.0.3024.21525 dotnet System.Reflection.DispatchProxy 6.0.3524.45918 dotnet
System.Reflection.Emit 6.0.3024.21525 dotnet System.Reflection.Emit 6.0.3524.45918 dotnet
System.Reflection.Emit.ILGeneration 6.0.3024.21525 dotnet System.Reflection.Emit.ILGeneration 6.0.3524.45918 dotnet
System.Reflection.Emit.Lightweight 6.0.3024.21525 dotnet System.Reflection.Emit.Lightweight 6.0.3524.45918 dotnet
System.Reflection.Extensions 6.0.3024.21525 dotnet System.Reflection.Extensions 6.0.3524.45918 dotnet
System.Reflection.Metadata 6.0.3024.21525 dotnet System.Reflection.Metadata 6.0.3524.45918 dotnet
System.Reflection.Primitives 6.0.3024.21525 dotnet System.Reflection.Primitives 6.0.3524.45918 dotnet
System.Reflection.TypeExtensions 6.0.3024.21525 dotnet System.Reflection.TypeExtensions 6.0.3524.45918 dotnet
System.Resources.Reader 6.0.3024.21525 dotnet System.Resources.Reader 6.0.3524.45918 dotnet
System.Resources.ResourceManager 6.0.3024.21525 dotnet System.Resources.ResourceManager 6.0.3524.45918 dotnet
System.Resources.Writer 6.0.3024.21525 dotnet System.Resources.Writer 6.0.3524.45918 dotnet
System.Runtime 6.0.3024.21525 dotnet System.Runtime 6.0.3524.45918 dotnet
System.Runtime.CompilerServices.VisualC 6.0.3024.21525 dotnet System.Runtime.CompilerServices.VisualC 6.0.3524.45918 dotnet
System.Runtime.Extensions 6.0.3024.21525 dotnet System.Runtime.Extensions 6.0.3524.45918 dotnet
System.Runtime.Handles 6.0.3024.21525 dotnet System.Runtime.Handles 6.0.3524.45918 dotnet
System.Runtime.InteropServices 6.0.3024.21525 dotnet System.Runtime.InteropServices 6.0.3524.45918 dotnet
System.Runtime.InteropServices.RuntimeInformation 6.0.3024.21525 dotnet System.Runtime.InteropServices.RuntimeInformation 6.0.3524.45918 dotnet
System.Runtime.Intrinsics 6.0.3024.21525 dotnet System.Runtime.Intrinsics 6.0.3524.45918 dotnet
System.Runtime.Loader 6.0.3024.21525 dotnet System.Runtime.Loader 6.0.3524.45918 dotnet
System.Runtime.Numerics 6.0.3024.21525 dotnet System.Runtime.Numerics 6.0.3524.45918 dotnet
System.Runtime.Serialization 6.0.3024.21525 dotnet System.Runtime.Serialization 6.0.3524.45918 dotnet
System.Runtime.Serialization.Formatters 6.0.3024.21525 dotnet System.Runtime.Serialization.Formatters 6.0.3524.45918 dotnet
System.Runtime.Serialization.Json 6.0.3024.21525 dotnet System.Runtime.Serialization.Json 6.0.3524.45918 dotnet
System.Runtime.Serialization.Primitives 6.0.3024.21525 dotnet System.Runtime.Serialization.Primitives 6.0.3524.45918 dotnet
System.Runtime.Serialization.Xml 6.0.3024.21525 dotnet System.Runtime.Serialization.Xml 6.0.3524.45918 dotnet
System.Security 6.0.3024.21525 dotnet System.Security 6.0.3524.45918 dotnet
System.Security.AccessControl 6.0.3024.21525 dotnet System.Security.AccessControl 6.0.3524.45918 dotnet
System.Security.Claims 6.0.3024.21525 dotnet System.Security.Claims 6.0.3524.45918 dotnet
System.Security.Cryptography.Algorithms 6.0.3024.21525 dotnet System.Security.Cryptography.Algorithms 6.0.3524.45918 dotnet
System.Security.Cryptography.Cng 6.0.3024.21525 dotnet System.Security.Cryptography.Cng 6.0.3524.45918 dotnet
System.Security.Cryptography.Csp 6.0.3024.21525 dotnet System.Security.Cryptography.Csp 6.0.3524.45918 dotnet
System.Security.Cryptography.Encoding 6.0.3024.21525 dotnet System.Security.Cryptography.Encoding 6.0.3524.45918 dotnet
System.Security.Cryptography.OpenSsl 6.0.3024.21525 dotnet System.Security.Cryptography.OpenSsl 6.0.3524.45918 dotnet
System.Security.Cryptography.Primitives 6.0.3024.21525 dotnet System.Security.Cryptography.Primitives 6.0.3524.45918 dotnet
System.Security.Cryptography.ProtectedData 5.0.20.51904 dotnet System.Security.Cryptography.ProtectedData 5.0.20.51904 dotnet
System.Security.Cryptography.X509Certificates 6.0.3024.21525 dotnet System.Security.Cryptography.X509Certificates 6.0.3524.45918 dotnet
System.Security.Principal 6.0.3024.21525 dotnet System.Security.Principal 6.0.3524.45918 dotnet
System.Security.Principal.Windows 6.0.3024.21525 dotnet System.Security.Principal.Windows 6.0.3524.45918 dotnet
System.Security.SecureString 6.0.3024.21525 dotnet System.Security.SecureString 6.0.3524.45918 dotnet
System.ServiceModel.Web 6.0.3024.21525 dotnet System.ServiceModel.Web 6.0.3524.45918 dotnet
System.ServiceProcess 6.0.3024.21525 dotnet System.ServiceProcess 6.0.3524.45918 dotnet
System.Text.Encoding 6.0.3024.21525 dotnet System.Text.Encoding 6.0.3524.45918 dotnet
System.Text.Encoding.CodePages 6.0.3024.21525 dotnet System.Text.Encoding.CodePages 6.0.3524.45918 dotnet
System.Text.Encoding.Extensions 6.0.3024.21525 dotnet System.Text.Encoding.Extensions 6.0.3524.45918 dotnet
System.Text.Encodings.Web 6.0.3024.21525 dotnet System.Text.Encodings.Web 6.0.3524.45918 dotnet
System.Text.Json 6.0.3024.21525 dotnet System.Text.Json 6.0.3524.45918 dotnet
System.Text.RegularExpressions 6.0.3024.21525 dotnet System.Text.RegularExpressions 6.0.3524.45918 dotnet
System.Threading 6.0.3024.21525 dotnet System.Threading 6.0.3524.45918 dotnet
System.Threading.Channels 6.0.3024.21525 dotnet System.Threading.Channels 6.0.3524.45918 dotnet
System.Threading.Overlapped 6.0.3024.21525 dotnet System.Threading.Overlapped 6.0.3524.45918 dotnet
System.Threading.Tasks 6.0.3024.21525 dotnet System.Threading.Tasks 6.0.3524.45918 dotnet
System.Threading.Tasks.Dataflow 6.0.3024.21525 dotnet System.Threading.Tasks.Dataflow 6.0.3524.45918 dotnet
System.Threading.Tasks.Extensions 6.0.3024.21525 dotnet System.Threading.Tasks.Extensions 6.0.3524.45918 dotnet
System.Threading.Tasks.Parallel 6.0.3024.21525 dotnet System.Threading.Tasks.Parallel 6.0.3524.45918 dotnet
System.Threading.Thread 6.0.3024.21525 dotnet System.Threading.Thread 6.0.3524.45918 dotnet
System.Threading.ThreadPool 6.0.3024.21525 dotnet System.Threading.ThreadPool 6.0.3524.45918 dotnet
System.Threading.Timer 6.0.3024.21525 dotnet System.Threading.Timer 6.0.3524.45918 dotnet
System.Transactions 6.0.3024.21525 dotnet System.Transactions 6.0.3524.45918 dotnet
System.Transactions.Local 6.0.3024.21525 dotnet System.Transactions.Local 6.0.3524.45918 dotnet
System.ValueTuple 6.0.3024.21525 dotnet System.ValueTuple 6.0.3524.45918 dotnet
System.Web 6.0.3024.21525 dotnet System.Web 6.0.3524.45918 dotnet
System.Web.HttpUtility 6.0.3024.21525 dotnet System.Web.HttpUtility 6.0.3524.45918 dotnet
System.Windows 6.0.3024.21525 dotnet System.Windows 6.0.3524.45918 dotnet
System.Xml 6.0.3024.21525 dotnet System.Xml 6.0.3524.45918 dotnet
System.Xml.Linq 6.0.3024.21525 dotnet System.Xml.Linq 6.0.3524.45918 dotnet
System.Xml.ReaderWriter 6.0.3024.21525 dotnet System.Xml.ReaderWriter 6.0.3524.45918 dotnet
System.Xml.Serialization 6.0.3024.21525 dotnet System.Xml.Serialization 6.0.3524.45918 dotnet
System.Xml.XDocument 6.0.3024.21525 dotnet System.Xml.XDocument 6.0.3524.45918 dotnet
System.Xml.XPath 6.0.3024.21525 dotnet System.Xml.XPath 6.0.3524.45918 dotnet
System.Xml.XPath.XDocument 6.0.3024.21525 dotnet System.Xml.XPath.XDocument 6.0.3524.45918 dotnet
System.Xml.XmlDocument 6.0.3024.21525 dotnet System.Xml.XmlDocument 6.0.3524.45918 dotnet
System.Xml.XmlSerializer 6.0.3024.21525 dotnet System.Xml.XmlSerializer 6.0.3524.45918 dotnet
WindowsBase 6.0.3024.21525 dotnet WindowsBase 6.0.3524.45918 dotnet
acl-libs 2.3.2-r1 apk acl-libs 2.3.2-r1 apk
alpine-baselayout 3.6.8-r0 apk alpine-baselayout 3.6.8-r0 apk
alpine-baselayout-data 3.6.8-r0 apk alpine-baselayout-data 3.6.8-r0 apk
alpine-keys 2.5-r0 apk alpine-keys 2.5-r0 apk
apk-tools 2.14.4-r3 apk apk-tools 2.14.4-r3 apk
bash 5.2.32-r0 apk bash 5.2.37-r0 apk
brotli-libs 1.1.0-r2 apk brotli-libs 1.1.0-r2 apk
busybox 1.36.1-r32 apk busybox 1.36.1-r32 apk
busybox-binsh 1.36.1-r32 apk busybox-binsh 1.36.1-r32 apk
c-ares 1.33.1-r0 apk c-ares 1.34.1-r0 apk
ca-certificates 20240705-r0 apk ca-certificates 20240705-r0 apk
ca-certificates-bundle 20240705-r0 apk ca-certificates-bundle 20240705-r0 apk
catatonit 0.2.0-r0 apk catatonit 0.2.0-r0 apk
@@ -192,69 +192,70 @@ coreutils-env 9.5-r1
coreutils-fmt 9.5-r1 apk coreutils-fmt 9.5-r1 apk
coreutils-sha512sum 9.5-r1 apk coreutils-sha512sum 9.5-r1 apk
curl 8.9.1-r2 apk curl 8.9.1-r2 apk
dbus-libs 1.14.10-r3 apk dbus-libs 1.14.10-r4 apk
double-conversion 3.3.0-r0 apk double-conversion 3.3.0-r0 apk
duktape 2.7.0-r1 apk duktape 2.7.0-r1 apk
findutils 4.10.0-r0 apk findutils 4.10.0-r0 apk
gdbm 1.24-r0 apk gdbm 1.24-r0 apk
glib 2.82.1-r0 apk glib 2.82.1-r1 apk
grep 3.11-r0 apk
icu-data-en 74.2-r0 apk icu-data-en 74.2-r0 apk
icu-libs 74.2-r0 apk icu-libs 74.2-r0 apk
jq 1.7.1-r0 apk jq 1.7.1-r0 apk
libattr 2.5.2-r2 apk libattr 2.5.2-r2 apk
libb2 0.98.1-r3 apk libb2 0.98.1-r3 apk
libblkid 2.40.2-r1 apk libblkid 2.40.2-r3 apk
libbsd 0.12.2-r0 apk libbsd 0.12.2-r0 apk
libbz2 1.0.8-r6 apk libbz2 1.0.8-r6 apk
libcrypto3 3.3.2-r1 apk libcrypto3 3.3.2-r2 apk
libcurl 8.9.1-r2 apk libcurl 8.9.1-r2 apk
libeconf 0.6.3-r0 apk libeconf 0.6.3-r0 apk
libexpat 2.6.3-r0 apk libexpat 2.6.3-r0 apk
libffi 3.4.6-r0 apk libffi 3.4.6-r0 apk
libgcc 14.2.0-r2 apk libgcc 14.2.0-r3 apk
libgomp 14.2.0-r2 apk libgomp 14.2.0-r3 apk
libidn2 2.3.7-r0 apk libidn2 2.3.7-r0 apk
libintl 0.22.5-r0 apk libintl 0.22.5-r0 apk
libmd 1.1.0-r0 apk libmd 1.1.0-r0 apk
libmount 2.40.2-r1 apk libmount 2.40.2-r3 apk
libncursesw 6.5_p20240601-r1 apk libncursesw 6.5_p20240601-r1 apk
libpanelw 6.5_p20240601-r1 apk libpanelw 6.5_p20240601-r1 apk
libpcre2-16 10.43-r0 apk libpcre2-16 10.43-r0 apk
libproc2 4.0.4-r2 apk libproc2 4.0.4-r2 apk
libproxy 0.5.8-r0 apk libproxy 0.5.9-r0 apk
libpsl 0.21.5-r2 apk libpsl 0.21.5-r3 apk
libssl3 3.3.2-r1 apk libssl3 3.3.2-r2 apk
libstdc++ 14.2.0-r2 apk libstdc++ 14.2.0-r3 apk
libtorrent-rasterbar 2.0.10-r2 apk libtorrent-rasterbar 2.0.10-r2 apk
libunistring 1.2-r0 apk libunistring 1.2-r0 apk
linux-pam 1.6.1-r1 apk linux-pam 1.6.1-r1 apk
mpdecimal 4.0.0-r0 apk mpdecimal 4.0.0-r0 apk
mscorlib 6.0.3024.21525 dotnet mscorlib 6.0.3524.45918 dotnet
musl 1.2.5-r2 apk musl 1.2.5-r5 apk
musl-utils 1.2.5-r2 apk musl-utils 1.2.5-r3 apk
ncurses-terminfo-base 6.5_p20240601-r1 apk ncurses-terminfo-base 6.5_p20240601-r1 apk
netcat-openbsd 1.226-r0 apk netcat-openbsd 1.226-r0 apk
netstandard 6.0.3024.21525 dotnet netstandard 6.0.3524.45918 dotnet
nghttp2-libs 1.62.1-r0 apk nghttp2-libs 1.63.0-r0 apk
oniguruma 6.9.9-r0 apk oniguruma 6.9.9-r0 apk
pcre2 10.43-r0 apk pcre2 10.43-r0 apk
procps-ng 4.0.4-r2 apk procps-ng 4.0.4-r2 apk
pyc 3.12.6-r0 apk pyc 3.12.7-r0 apk
python3 3.12.6-r0 apk python3 3.12.7-r0 apk
python3-pyc 3.12.6-r0 apk python3-pyc 3.12.7-r0 apk
python3-pycache-pyc0 3.12.6-r0 apk python3-pycache-pyc0 3.12.7-r0 apk
qbittorrent-nox 4.6.7-r0 apk qbittorrent-nox 5.0.0-r2 apk
qbt 1.8.24199.1+738bca0d7d7585cf40629f13a59b6198eaf6fe64 dotnet qbt 1.8.24285.1+c5794123bd204e629729e52e7177834c4ba3bfc2 dotnet
qt6-qtbase 6.7.2-r2 apk qt6-qtbase 6.7.2-r2 apk
qt6-qtbase-sqlite 6.7.2-r2 apk qt6-qtbase-sqlite 6.7.2-r2 apk
readline 8.2.13-r0 apk readline 8.2.13-r0 apk
scanelf 1.3.7-r2 apk scanelf 1.3.8-r0 apk
shadow 4.16.0-r0 apk shadow 4.16.0-r0 apk
skalibs 2.14.2.0-r1 apk skalibs 2.14.2.0-r2 apk
sqlite-libs 3.46.1-r0 apk sqlite-libs 3.46.1-r0 apk
ssl_client 1.36.1-r32 apk ssl_client 1.36.1-r32 apk
tzdata 2024b-r0 apk tzdata 2024b-r1 apk
utmps-libs 0.1.2.2-r2 apk utmps-libs 0.1.2.2-r3 apk
xz-libs 5.6.2-r0 apk xz-libs 5.6.3-r0 apk
zlib 1.3.1-r2 apk zlib 1.3.1-r2 apk
zstd-libs 1.5.6-r1 apk zstd-libs 1.5.6-r1 apk

View File

@@ -6,6 +6,11 @@ if [[ -n "${TORRENTING_PORT}" ]]; then
TORRENTING_PORT_ARG="--torrenting-port=${TORRENTING_PORT}" TORRENTING_PORT_ARG="--torrenting-port=${TORRENTING_PORT}"
fi fi
WEBUI_ADDRESS=$(grep -Po "^WebUI\\\Address=\K(.*)" /config/qBittorrent/qBittorrent.conf)
if [[ -z ${WEBUI_ADDRESS} ]] || [[ ${WEBUI_ADDRESS} == "*" ]]; then
WEBUI_ADDRESS="localhost"
fi
exec \ exec \
s6-notifyoncheck -d -n 300 -w 1000 -c "nc -z localhost ${WEBUI_PORT}" \ s6-notifyoncheck -d -n 300 -w 1000 -c "nc -z ${WEBUI_ADDRESS} ${WEBUI_PORT}" \
s6-setuidgid abc /usr/bin/qbittorrent-nox --webui-port="${WEBUI_PORT}" ${TORRENTING_PORT_ARG} s6-setuidgid abc /usr/bin/qbittorrent-nox --webui-port="${WEBUI_PORT}" ${TORRENTING_PORT_ARG}