Compare commits

...

32 Commits

Author SHA1 Message Date
LinuxServer-CI
6b609ad159 Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-12-10 18:35:07 +00:00
LinuxServer-CI
f7a31bb18e Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
2025-12-06 03:45:58 +00:00
LinuxServer-CI
01a5c0123e Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-12-03 21:23:08 +00:00
LinuxServer-CI
012b4ac68f Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
2025-11-29 03:49:15 +00:00
LinuxServer-CI
8961b7e923 Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-11-22 03:43:45 +00:00
LinuxServer-CI
1e3524f927 Bot Updating Templated Files 2025-11-22 03:39:13 +00:00
LinuxServer-CI
a2f969a62e Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-11-15 03:43:31 +00:00
LinuxServer-CI
caaaccb0b3 Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-11-08 03:39:30 +00:00
LinuxServer-CI
ae11ca79a0 Bot Updating Templated Files
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-11-05 12:06:21 +00:00
driz
9d7c0d6239 Merge pull request #590 from linuxserver/nemchik-patch-1
Update changelog for Gandi credentials update
2025-11-05 07:04:42 -05:00
Eric Nemchik
eb151ebd19 Update changelog for Gandi credentials update
Updated the changelog to reflect changes in Gandi credentials and Azure DNS propagation.
2025-11-04 21:22:08 -06:00
Eric Nemchik
4076c6b012 Merge pull request #577 from jeanrobertjs/patch-1
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
2025-11-04 21:18:42 -06:00
LinuxServer-CI
8437debed5 Bot Updating Package Versions 2025-11-05 03:16:31 +00:00
Eric Nemchik
0f177af593 Merge branch 'master' into patch-1 2025-11-04 20:43:59 -06:00
Eric Nemchik
23dd0531f1 Merge pull request #562 from neoteq-it/master 2025-11-04 20:41:38 -06:00
LinuxServer-CI
56d0503cb3 Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
2025-11-01 03:46:36 +00:00
LinuxServer-CI
9397e9c70f Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-10-25 03:41:22 +00:00
LinuxServer-CI
e87649ffcd Bot Updating Templated Files 2025-10-25 03:37:01 +00:00
LinuxServer-CI
e11a8ded00 Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-10-18 03:32:52 +00:00
LinuxServer-CI
576de0400c Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-10-11 03:31:40 +00:00
LinuxServer-CI
ad2d99029a Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-10-07 18:32:33 +00:00
LinuxServer-CI
b8d0c422ab Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
2025-10-04 03:29:29 +00:00
LinuxServer-CI
07c7399089 Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-09-27 03:32:32 +00:00
LinuxServer-CI
2d9590691c Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-09-20 03:32:41 +00:00
LinuxServer-CI
72e5347c3b Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-09-13 03:26:16 +00:00
LinuxServer-CI
be7016bcc1 Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-09-06 03:31:28 +00:00
LinuxServer-CI
ccd2464a26 Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-09-02 17:20:15 +00:00
Jean-Robert JS
0e19ad9d0f Merge branch 'master' into patch-1 2025-08-19 12:13:04 +02:00
Jean-Robert JS
f491b59335 Merge branch 'master' into patch-1 2025-07-31 23:30:29 +02:00
Jean-Robert JS
d602e9bccf Update gandi.ini 2025-07-24 10:47:17 +02:00
Jean-Robert JS
284a8c66f9 Reflects the depreciation of the API key in favor of the personal access token (PAT) 2025-07-23 14:03:33 +02:00
Jean Stickelmann
a5f1da0bcf Update run - Azure Supports propagation 2025-04-24 10:27:16 +02:00
6 changed files with 203 additions and 162 deletions

110
Jenkinsfile vendored
View File

@@ -208,6 +208,7 @@ pipeline {
env.META_TAG = env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
env.EXT_RELEASE_TAG = 'version-' + env.EXT_RELEASE_CLEAN
env.BUILDCACHE = 'docker.io/lsiodev/buildcache,registry.gitlab.com/linuxserver.io/docker-jenkins-builder/lsiodev-buildcache,ghcr.io/linuxserver/lsiodev-buildcache,quay.io/linuxserver.io/lsiodev-buildcache'
env.CITEST_IMAGETAG = 'latest'
}
}
}
@@ -233,6 +234,7 @@ pipeline {
env.EXT_RELEASE_TAG = 'version-' + env.EXT_RELEASE_CLEAN
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.DEV_DOCKERHUB_IMAGE + '/tags/'
env.BUILDCACHE = 'docker.io/lsiodev/buildcache,registry.gitlab.com/linuxserver.io/docker-jenkins-builder/lsiodev-buildcache,ghcr.io/linuxserver/lsiodev-buildcache,quay.io/linuxserver.io/lsiodev-buildcache'
env.CITEST_IMAGETAG = 'develop'
}
}
}
@@ -258,6 +260,7 @@ pipeline {
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.BUILDCACHE = 'docker.io/lsiodev/buildcache,registry.gitlab.com/linuxserver.io/docker-jenkins-builder/lsiodev-buildcache,ghcr.io/linuxserver/lsiodev-buildcache,quay.io/linuxserver.io/lsiodev-buildcache'
env.CITEST_IMAGETAG = 'develop'
}
}
}
@@ -280,7 +283,7 @@ pipeline {
-v ${WORKSPACE}:/mnt \
-e AWS_ACCESS_KEY_ID=\"${S3_KEY}\" \
-e AWS_SECRET_ACCESS_KEY=\"${S3_SECRET}\" \
ghcr.io/linuxserver/baseimage-alpine:3.20 s6-envdir -fn -- /var/run/s6/container_environment /bin/bash -c "\
ghcr.io/linuxserver/baseimage-alpine:3 s6-envdir -fn -- /var/run/s6/container_environment /bin/bash -c "\
apk add --no-cache python3 && \
python3 -m venv /lsiopy && \
pip install --no-cache-dir -U pip && \
@@ -615,13 +618,16 @@ pipeline {
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
if [[ "${PACKAGE_CHECK}" != "true" ]]; then
declare -A pids
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
for i in "${CACHE[@]}"; do
docker push ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} &
pids[$!]="$i"
done
for p in $(jobs -p); do
wait "$p" || { echo "job $p failed" >&2; exit 1; }
for p in "${!pids[@]}"; do
wait "$p" || { [[ "${pids[$p]}" != *"quay.io"* ]] && exit 1; }
done
fi
'''
@@ -681,13 +687,16 @@ pipeline {
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
if [[ "${PACKAGE_CHECK}" != "true" ]]; then
declare -A pids
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
for i in "${CACHE[@]}"; do
docker push ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} &
pids[$!]="$i"
done
for p in $(jobs -p); do
wait "$p" || { echo "job $p failed" >&2; exit 1; }
for p in "${!pids[@]}"; do
wait "$p" || { [[ "${pids[$p]}" != *"quay.io"* ]] && exit 1; }
done
fi
'''
@@ -741,12 +750,14 @@ pipeline {
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
if [[ "${PACKAGE_CHECK}" != "true" ]]; then
declare -A pids
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
for i in "${CACHE[@]}"; do
docker push ${i}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} &
pids[$!]="$i"
done
for p in $(jobs -p); do
wait "$p" || { echo "job $p failed" >&2; exit 1; }
for p in "${!pids[@]}"; do
wait "$p" || { [[ "${pids[$p]}" != *"quay.io"* ]] && exit 1; }
done
fi
'''
@@ -871,7 +882,7 @@ pipeline {
CI_DOCKERENV="LSIO_FIRST_PARTY=true"
fi
fi
docker pull ghcr.io/linuxserver/ci:latest
docker pull ghcr.io/linuxserver/ci:${CITEST_IMAGETAG}
if [ "${MULTIARCH}" == "true" ]; then
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} --platform=arm64
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
@@ -895,7 +906,9 @@ pipeline {
-e WEB_PATH=\"${CI_WEBPATH}\" \
-e NODE_NAME=\"${NODE_NAME}\" \
-e SYFT_IMAGE_TAG=\"${CI_SYFT_IMAGE_TAG:-${SYFT_IMAGE_TAG}}\" \
-t ghcr.io/linuxserver/ci:latest \
-e COMMIT_SHA=\"${COMMIT_SHA}\" \
-e BUILD_NUMBER=\"${BUILD_NUMBER}\" \
-t ghcr.io/linuxserver/ci:${CITEST_IMAGETAG} \
python3 test_build.py'''
}
}
@@ -921,9 +934,11 @@ pipeline {
CACHEIMAGE=${i}
fi
done
docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${META_TAG} -t ${PUSHIMAGE}:latest -t ${PUSHIMAGE}:${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${META_TAG} -t ${PUSHIMAGE}:latest -t ${PUSHIMAGE}:${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} || \
{ if [[ "${PUSHIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
if [ -n "${SEMVER}" ]; then
docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} || \
{ if [[ "${PUSHIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
fi
done
'''
@@ -948,20 +963,27 @@ pipeline {
CACHEIMAGE=${i}
fi
done
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${META_TAG} -t ${MANIFESTIMAGE}:amd64-latest -t ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${META_TAG} -t ${MANIFESTIMAGE}:arm64v8-latest -t ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${META_TAG} -t ${MANIFESTIMAGE}:amd64-latest -t ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} || \
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${META_TAG} -t ${MANIFESTIMAGE}:arm64v8-latest -t ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || \
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
if [ -n "${SEMVER}" ]; then
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${SEMVER} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} || \
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${SEMVER} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || \
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
fi
done
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
docker buildx imagetools create -t ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm64v8-latest
docker buildx imagetools create -t ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
docker buildx imagetools create -t ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
docker buildx imagetools create -t ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm64v8-latest || \
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
docker buildx imagetools create -t ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} || \
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
docker buildx imagetools create -t ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} || \
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
if [ -n "${SEMVER}" ]; then
docker buildx imagetools create -t ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
docker buildx imagetools create -t ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} || \
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
fi
done
'''
@@ -979,23 +1001,41 @@ pipeline {
environment name: 'EXIT_STATUS', value: ''
}
steps {
echo "Pushing New tag for current commit ${META_TAG}"
sh '''curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/git/tags \
-d '{"tag":"'${META_TAG}'",\
"object": "'${COMMIT_SHA}'",\
"message": "Tagging Release '${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}' to master",\
"type": "commit",\
"tagger": {"name": "LinuxServer-CI","email": "ci@linuxserver.io","date": "'${GITHUB_DATE}'"}}' '''
echo "Pushing New release for Tag"
sh '''#! /bin/bash
echo "Auto-generating release notes"
if [ "$(git tag --points-at HEAD)" != "" ]; then
echo "Existing tag points to current commit, suggesting no new LS changes"
AUTO_RELEASE_NOTES="No changes"
else
AUTO_RELEASE_NOTES=$(curl -fsL -H "Authorization: token ${GITHUB_TOKEN}" -H "Accept: application/vnd.github+json" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/releases/generate-notes \
-d '{"tag_name":"'${META_TAG}'",\
"target_commitish": "master"}' \
| jq -r '.body' | sed 's|## What.s Changed||')
fi
echo "Pushing New tag for current commit ${META_TAG}"
curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/git/tags \
-d '{"tag":"'${META_TAG}'",\
"object": "'${COMMIT_SHA}'",\
"message": "Tagging Release '${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}' to master",\
"type": "commit",\
"tagger": {"name": "LinuxServer-CI","email": "ci@linuxserver.io","date": "'${GITHUB_DATE}'"}}'
echo "Pushing New release for Tag"
echo "Updating PIP version of ${EXT_PIP} to ${EXT_RELEASE_CLEAN}" > releasebody.json
echo '{"tag_name":"'${META_TAG}'",\
"target_commitish": "master",\
"name": "'${META_TAG}'",\
"body": "**CI Report:**\\n\\n'${CI_URL:-N/A}'\\n\\n**LinuxServer Changes:**\\n\\n'${LS_RELEASE_NOTES}'\\n\\n**Remote Changes:**\\n\\n' > start
printf '","draft": false,"prerelease": false}' >> releasebody.json
paste -d'\\0' start releasebody.json > releasebody.json.done
curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/releases -d @releasebody.json.done'''
jq -n \
--arg tag_name "$META_TAG" \
--arg target_commitish "master" \
--arg ci_url "${CI_URL:-N/A}" \
--arg ls_notes "$AUTO_RELEASE_NOTES" \
--arg remote_notes "$(cat releasebody.json)" \
'{
"tag_name": $tag_name,
"target_commitish": $target_commitish,
"name": $tag_name,
"body": ("**CI Report:**\\n\\n" + $ci_url + "\\n\\n**LinuxServer Changes:**\\n\\n" + $ls_notes + "\\n\\n**Remote Changes:**\\n\\n" + $remote_notes),
"draft": false,
"prerelease": false }' > releasebody.json.done
curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/releases -d @releasebody.json.done
'''
}
}
// Add protection to the release branch

View File

@@ -433,6 +433,7 @@ Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64
## Versions
* **04.11.25:** - Switch default Gandi credentials from API Key to Token, allow DNS propagation time for Azure DNS plugin.
* **18.07.25:** - Rebase to Alpine 3.22 with PHP 8.4. Add QUIC support. Drop PHP bindings for mcrypt as it is no longer maintained.
* **05.05.25:** - Disable Certbot's built in log rotation.
* **19.01.25:** - Add [Auto Reload](https://github.com/linuxserver/docker-mods/tree/swag-auto-reload) functionality to SWAG.

View File

@@ -1,109 +1,109 @@
NAME VERSION TYPE
Simple Launcher 1.1.0.14 binary (+5 duplicates)
acl-libs 2.3.2-r1 apk
acme 4.2.0 python
acme 5.2.2 python
alpine-baselayout 3.7.0-r0 apk
alpine-baselayout-data 3.7.0-r0 apk
alpine-keys 2.5-r0 apk
alpine-release 3.22.1-r0 apk
alpine-release 3.22.2-r0 apk
aom-libs 3.12.1-r0 apk
apache2-utils 2.4.65-r0 apk
apk-tools 2.14.9-r2 apk
apk-tools 2.14.9-r3 apk
apr 1.7.5-r0 apk
apr-util 1.6.3-r1 apk
argon2-libs 20190702-r5 apk
attrs 25.3.0 python
attrs 25.4.0 python
autocommand 2.2.2 python
azure-common 1.1.28 python
azure-core 1.35.0 python
azure-identity 1.24.0 python
azure-core 1.36.0 python
azure-identity 1.25.1 python
azure-mgmt-core 1.6.0 python
azure-mgmt-dns 9.0.0 python
backports-tarfile 1.2.0 python
bash 5.2.37-r0 apk
beautifulsoup4 4.13.5 python
boto3 1.40.21 python
botocore 1.40.21 python
beautifulsoup4 4.14.3 python
boto3 1.42.6 python
botocore 1.42.6 python
brotli-libs 1.1.0-r2 apk
bs4 0.0.2 python
busybox 1.37.0-r19 apk
busybox-binsh 1.37.0-r19 apk
busybox 1.37.0-r20 apk
busybox-binsh 1.37.0-r20 apk
c-ares 1.34.5-r0 apk
c-client 2007f-r15 apk
ca-certificates 20250619-r0 apk
ca-certificates-bundle 20250619-r0 apk
cachetools 5.5.2 python
ca-certificates 20250911-r0 apk
ca-certificates-bundle 20250911-r0 apk
cachetools 6.2.2 python
catatonit 0.2.1-r0 apk
certbot 4.2.0 python
certbot 5.2.2 python
certbot-dns-acmedns 0.1.0 python
certbot-dns-aliyun 2.0.0 python
certbot-dns-azure 1.5.0 python
certbot-dns-bunny 3.0.0 python
certbot-dns-cloudflare 4.2.0 python
certbot-dns-cloudflare 5.2.2 python
certbot-dns-cpanel 0.4.0 python
certbot-dns-desec 1.2.1 python
certbot-dns-digitalocean 4.2.0 python
certbot-dns-desec 1.3.2 python
certbot-dns-digitalocean 5.2.2 python
certbot-dns-directadmin 1.0.15 python
certbot-dns-dnsimple 4.2.0 python
certbot-dns-dnsmadeeasy 4.2.0 python
certbot-dns-dnsimple 5.2.2 python
certbot-dns-dnsmadeeasy 5.2.2 python
certbot-dns-dnspod 0.1.0 python
certbot-dns-do 0.31.0 python
certbot-dns-domeneshop 0.2.9 python
certbot-dns-dreamhost 1.0 python
certbot-dns-duckdns 1.6 python
certbot-dns-duckdns 1.7.1 python
certbot-dns-dynudns 0.0.6 python
certbot-dns-freedns 0.2.0 python
certbot-dns-gehirn 4.2.0 python
certbot-dns-gehirn 5.2.2 python
certbot-dns-glesys 2.1.0 python
certbot-dns-godaddy 2.8.0 python
certbot-dns-google 4.2.0 python
certbot-dns-google 5.2.2 python
certbot-dns-he 1.0.0 python
certbot-dns-hetzner 2.0.1 python
certbot-dns-infomaniak 0.2.3 python
certbot-dns-infomaniak 0.2.4 python
certbot-dns-inwx 3.0.3 python
certbot-dns-ionos 2024.11.9 python
certbot-dns-linode 4.2.0 python
certbot-dns-linode 5.2.2 python
certbot-dns-loopia 1.0.1 python
certbot-dns-luadns 4.2.0 python
certbot-dns-luadns 5.2.2 python
certbot-dns-namecheap 1.0.0 python
certbot-dns-netcup 1.4.4 python
certbot-dns-netcup 2.0.0 python
certbot-dns-njalla 2.0.2 python
certbot-dns-nsone 4.2.0 python
certbot-dns-ovh 4.2.0 python
certbot-dns-porkbun 0.10.1 python
certbot-dns-rfc2136 4.2.0 python
certbot-dns-route53 4.2.0 python
certbot-dns-sakuracloud 4.2.0 python
certbot-dns-nsone 5.2.2 python
certbot-dns-ovh 5.2.2 python
certbot-dns-porkbun 0.11.0 python
certbot-dns-rfc2136 5.2.2 python
certbot-dns-route53 5.2.2 python
certbot-dns-sakuracloud 5.2.2 python
certbot-dns-standalone 1.2.1 python
certbot-dns-transip 0.5.2 python
certbot-dns-vultr 1.1.0 python
certbot-plugin-gandi 1.5.0 python
certifi 2025.8.3 python
cffi 1.17.1 python
charset-normalizer 3.4.3 python
certifi 2025.11.12 python
cffi 2.0.0 python
charset-normalizer 3.4.4 python
cli UNKNOWN binary
cli-32 UNKNOWN binary
cli-64 UNKNOWN binary
cli-arm64 UNKNOWN binary
cloudflare 2.19.4 python
composer 2.8.11 binary
composer 2.9.2 binary
configargparse 1.7.1 python
configobj 5.0.9 python
coreutils 9.7-r1 apk
coreutils-env 9.7-r1 apk
coreutils-fmt 9.7-r1 apk
coreutils-sha512sum 9.7-r1 apk
cryptography 45.0.6 python
curl 8.14.1-r1 apk
cryptography 46.0.3 python
curl 8.14.1-r2 apk
distro 1.9.0 python
dns-lexicon 3.21.1 python
dns-lexicon 3.23.2 python
dnslib 0.9.26 python
dnspython 2.7.0 python
dnspython 2.8.0 python
domeneshop 0.4.4 python
fail2ban 1.1.0 python
fail2ban 1.1.0-r3 apk
fail2ban-pyc 1.1.0-r3 apk
filelock 3.19.1 python
filelock 3.20.0 python
findutils 4.10.0-r0 apk
fontconfig 2.15.0-r3 apk
freetype 2.13.3-r0 apk
@@ -120,11 +120,11 @@ gnupg-keyboxd 2.4.7-r0 apk
gnupg-utils 2.4.7-r0 apk
gnupg-wks-client 2.4.7-r0 apk
gnutls 3.8.8-r0 apk
google-api-core 2.25.1 python
google-api-python-client 2.179.0 python
google-auth 2.40.3 python
google-auth-httplib2 0.2.0 python
googleapis-common-protos 1.70.0 python
google-api-core 2.28.1 python
google-api-python-client 2.187.0 python
google-auth 2.43.0 python
google-auth-httplib2 0.2.1 python
googleapis-common-protos 1.72.0 python
gpg 2.4.7-r0 apk
gpg-agent 2.4.7-r0 apk
gpg-wks-server 2.4.7-r0 apk
@@ -134,10 +134,10 @@ gui UNKNOWN binary
gui-32 UNKNOWN binary
gui-64 UNKNOWN binary
gui-arm64 UNKNOWN binary
httplib2 0.30.0 python
httplib2 0.31.0 python
icu-data-en 76.1-r1 apk
icu-libs 76.1-r1 apk
idna 3.10 python
idna 3.11 python
importlib-metadata 8.0.0 python
inflect 7.3.1 python
inotify-tools 4.23.9.0-r0 apk
@@ -152,22 +152,22 @@ jaraco-functools 4.0.1 python
jaraco-text 3.12.1 python
jinja2 3.1.6 python
jmespath 1.0.1 python
josepy 2.1.0 python
jq 1.8.0-r0 apk
josepy 2.2.0 python
jq 1.8.1-r0 apk
jsonlines 4.0.0 python
jsonpickle 4.1.1 python
libapk2 2.14.9-r2 apk
libapk2 2.14.9-r3 apk
libassuan 2.5.7-r0 apk
libattr 2.5.2-r2 apk
libavif 1.3.0-r0 apk
libbsd 0.12.2-r0 apk
libbz2 1.0.8-r6 apk
libcrypto3 3.5.2-r0 apk
libcurl 8.14.1-r1 apk
libcrypto3 3.5.4-r0 apk
libcurl 8.14.1-r2 apk
libdav1d 1.5.1-r0 apk
libedit 20250104.3.1-r1 apk
libevent 2.1.12-r8 apk
libexpat 2.7.1-r0 apk
libexpat 2.7.3-r0 apk
libffi 3.4.8-r0 apk
libgcc 14.2.0-r6 apk
libgcrypt 1.10.3-r1 apk
@@ -188,8 +188,8 @@ libmnl 1.0.5-r2 apk
libncursesw 6.5_p20250503-r0 apk
libnftnl 1.2.9-r0 apk
libpanelw 6.5_p20250503-r0 apk
libpng 1.6.47-r0 apk
libpq 17.6-r0 apk
libpng 1.6.53-r0 apk
libpq 17.7-r0 apk
libproc2 4.0.4-r3 apk
libpsl 0.21.5-r3 apk
libsasl 2.1.28-r8 apk
@@ -197,7 +197,7 @@ libseccomp 2.6.0-r0 apk
libsharpyuv 1.5.0-r0 apk
libsm 1.2.5-r0 apk
libsodium 1.0.20-r0 apk
libssl3 3.5.2-r0 apk
libssl3 3.5.4-r0 apk
libstdc++ 14.2.0-r6 apk
libtasn1 4.20.0-r0 apk
libunistring 1.3-r0 apk
@@ -208,7 +208,7 @@ libxau 1.0.12-r0 apk
libxcb 1.17.0-r0 apk
libxdmcp 1.1.5-r1 apk
libxext 1.3.6-r2 apk
libxml2 2.13.8-r0 apk
libxml2 2.13.9-r0 apk
libxpm 3.5.17-r0 apk
libxslt 1.1.43-r3 apk
libxt 1.3.1-r0 apk
@@ -218,14 +218,14 @@ libzip 1.11.4-r0 apk
linux-pam 1.7.0-r4 apk
logrotate 3.21.0-r1 apk
loopialib 0.2.0 python
lxml 6.0.1 python
lxml 6.0.2 python
lz4-libs 1.10.0-r0 apk
markupsafe 3.0.2 python
markupsafe 3.0.3 python
memcached 1.6.32-r0 apk
mock 5.2.0 python
more-itertools 10.3.0 python
mpdecimal 4.0.1-r0 apk
msal 1.33.0 python
msal 1.34.0 python
msal-extensions 1.3.1 python
musl 1.2.5-r10 apk
musl-utils 1.2.5-r10 apk
@@ -256,94 +256,94 @@ nginx-mod-stream-geoip2 1.28.0-r3 apk
nginx-vim 1.28.0-r3 apk
npth 1.8-r0 apk
oniguruma 6.9.10-r0 apk
openssl 3.5.2-r0 apk
openssl 3.5.4-r0 apk
p11-kit 0.25.5-r2 apk
packaging 24.2 python
parsedatetime 2.6 python
pcre2 10.43-r1 apk
pcre2 10.46-r0 apk
perl 5.40.3-r0 apk
perl-error 0.17030-r0 apk
perl-git 2.49.1-r0 apk
php84 8.4.11-r0 apk
php84-bcmath 8.4.11-r0 apk
php84-bz2 8.4.11-r0 apk
php84-common 8.4.11-r0 apk
php84-ctype 8.4.11-r0 apk
php84-curl 8.4.11-r0 apk
php84-dom 8.4.11-r0 apk
php84-exif 8.4.11-r0 apk
php84-fileinfo 8.4.11-r0 apk
php84-fpm 8.4.11-r0 apk
php84-ftp 8.4.11-r0 apk
php84-gd 8.4.11-r0 apk
php84-gmp 8.4.11-r0 apk
php84-iconv 8.4.11-r0 apk
php84-intl 8.4.11-r0 apk
php84-ldap 8.4.11-r0 apk
php84-mbstring 8.4.11-r0 apk
php84-mysqli 8.4.11-r0 apk
php84-mysqlnd 8.4.11-r0 apk
php84-opcache 8.4.11-r0 apk
php84-openssl 8.4.11-r0 apk
php84-pdo 8.4.11-r0 apk
php84-pdo_mysql 8.4.11-r0 apk
php84-pdo_odbc 8.4.11-r0 apk
php84-pdo_pgsql 8.4.11-r0 apk
php84-pdo_sqlite 8.4.11-r0 apk
php84-pear 8.4.11-r0 apk
php84 8.4.14-r0 apk
php84-bcmath 8.4.14-r0 apk
php84-bz2 8.4.14-r0 apk
php84-common 8.4.14-r0 apk
php84-ctype 8.4.14-r0 apk
php84-curl 8.4.14-r0 apk
php84-dom 8.4.14-r0 apk
php84-exif 8.4.14-r0 apk
php84-fileinfo 8.4.14-r0 apk
php84-fpm 8.4.14-r0 apk
php84-ftp 8.4.14-r0 apk
php84-gd 8.4.14-r0 apk
php84-gmp 8.4.14-r0 apk
php84-iconv 8.4.14-r0 apk
php84-intl 8.4.14-r0 apk
php84-ldap 8.4.14-r0 apk
php84-mbstring 8.4.14-r0 apk
php84-mysqli 8.4.14-r0 apk
php84-mysqlnd 8.4.14-r0 apk
php84-opcache 8.4.14-r0 apk
php84-openssl 8.4.14-r0 apk
php84-pdo 8.4.14-r0 apk
php84-pdo_mysql 8.4.14-r0 apk
php84-pdo_odbc 8.4.14-r0 apk
php84-pdo_pgsql 8.4.14-r0 apk
php84-pdo_sqlite 8.4.14-r0 apk
php84-pear 8.4.14-r0 apk
php84-pecl-apcu 5.1.27-r0 apk
php84-pecl-igbinary 3.2.16-r1 apk
php84-pecl-imap 1.0.3-r0 apk
php84-pecl-memcached 3.3.0-r0 apk
php84-pecl-msgpack 3.0.0-r0 apk
php84-pecl-redis 6.2.0-r0 apk
php84-pgsql 8.4.11-r0 apk
php84-phar 8.4.11-r0 apk
php84-posix 8.4.11-r0 apk
php84-session 8.4.11-r0 apk
php84-simplexml 8.4.11-r0 apk
php84-soap 8.4.11-r0 apk
php84-sockets 8.4.11-r0 apk
php84-sodium 8.4.11-r0 apk
php84-sqlite3 8.4.11-r0 apk
php84-tokenizer 8.4.11-r0 apk
php84-xml 8.4.11-r0 apk
php84-xmlreader 8.4.11-r0 apk
php84-xmlwriter 8.4.11-r0 apk
php84-xsl 8.4.11-r0 apk
php84-zip 8.4.11-r0 apk
php84-pecl-redis 6.3.0-r0 apk
php84-pgsql 8.4.14-r0 apk
php84-phar 8.4.14-r0 apk
php84-posix 8.4.14-r0 apk
php84-session 8.4.14-r0 apk
php84-simplexml 8.4.14-r0 apk
php84-soap 8.4.14-r0 apk
php84-sockets 8.4.14-r0 apk
php84-sodium 8.4.14-r0 apk
php84-sqlite3 8.4.14-r0 apk
php84-tokenizer 8.4.14-r0 apk
php84-xml 8.4.14-r0 apk
php84-xmlreader 8.4.14-r0 apk
php84-xmlwriter 8.4.14-r0 apk
php84-xsl 8.4.14-r0 apk
php84-zip 8.4.14-r0 apk
pinentry 1.3.1-r0 apk
pip 25.2 python
pip 25.3 python
pkb-client 2.2.0 python
platformdirs 4.2.2 python
popt 1.19-r4 apk
procps-ng 4.0.4-r3 apk
proto-plus 1.26.1 python
protobuf 6.32.0 python
protobuf 6.33.2 python
pyacmedns 0.4 python
pyasn1 0.6.1 python
pyasn1-modules 0.4.2 python
pyc 3.12.11-r0 apk
pycparser 2.22 python
pyc 3.12.12-r0 apk
pycparser 2.23 python
pyjwt 2.10.1 python
pynamecheap 0.0.3 python
pyopenssl 25.1.0 python
pyopenssl 25.3.0 python
pyotp 2.9.0 python
pyparsing 3.2.3 python
pyparsing 3.2.5 python
pyrfc3339 2.1.0 python
python-dateutil 2.9.0.post0 python
python-digitalocean 1.17.0 python
python-transip 0.6.0 python
python3 3.12.11-r0 apk
python3-pyc 3.12.11-r0 apk
python3-pycache-pyc0 3.12.11-r0 apk
pyyaml 6.0.2 python
python3 3.12.12-r0 apk
python3-pyc 3.12.12-r0 apk
python3-pycache-pyc0 3.12.12-r0 apk
pyyaml 6.0.3 python
readline 8.2.13-r1 apk
requests 2.32.5 python
requests-file 2.1.0 python
requests-file 3.0.1 python
requests-mock 1.12.1 python
rsa 4.9.1 python
s3transfer 0.13.1 python
s3transfer 0.16.0 python
scanelf 1.3.8-r1 apk
setuptools 80.9.0 python
shadow 4.17.3-r0 apk
@@ -351,8 +351,8 @@ six 1.17.0 python
skalibs-libs 2.14.4.0-r0 apk
soupsieve 2.8 python
sqlite-libs 3.49.2-r1 apk
ssl_client 1.37.0-r19 apk
tiff 4.7.0-r0 apk
ssl_client 1.37.0-r20 apk
tiff 4.7.1-r0 apk
tldextract 5.3.0 python
tomli 2.0.1 python
typeguard 4.3.0 python
@@ -361,12 +361,12 @@ typing-extensions 4.15.0 python
tzdata 2025b-r0 apk
unixodbc 2.3.12-r0 apk
uritemplate 4.2.0 python
urllib3 2.5.0 python
urllib3 2.6.1 python
utmps-libs 0.1.3.1-r0 apk
wheel 0.45.1 python (+1 duplicate)
whois 5.6.3-r0 apk
xz-libs 5.8.1-r0 apk
zipp 3.19.2 python
zlib 1.3.1-r2 apk
zope-interface 7.2 python
zope-interface 8.1.1 python
zstd-libs 1.5.7-r0 apk

View File

@@ -218,6 +218,7 @@ init_diagram: |
"swag:latest" <- Base Images
# changelog
changelogs:
- {date: "04.11.25:", desc: "Switch default Gandi credentials from API Key to Token, allow DNS propagation time for Azure DNS plugin."}
- {date: "18.07.25:", desc: "Rebase to Alpine 3.22 with PHP 8.4. Add QUIC support. Drop PHP bindings for mcrypt as it is no longer maintained."}
- {date: "05.05.25:", desc: "Disable Certbot's built in log rotation."}
- {date: "19.01.25:", desc: "Add [Auto Reload](https://github.com/linuxserver/docker-mods/tree/swag-auto-reload) functionality to SWAG."}

View File

@@ -1,7 +1,6 @@
# Instructions: https://github.com/obynio/certbot-plugin-gandi#usage
# Replace with your value
# live dns v5 api key
dns_gandi_api_key=APIKEY
# Replace with your Gandi Live DNS v5 Personal Access Token
dns_gandi_token=TOKEN
# optional organization id, remove it if not used
#dns_gandi_sharing_id=SHARINGID

View File

@@ -303,7 +303,7 @@ if [[ "${VALIDATION}" = "dns" ]]; then
sed -i "/^dns-${DNSPLUGIN}-credentials\b/d" /config/etc/letsencrypt/cli.ini
fi
# plugins that don't support setting propagation
if [[ "${DNSPLUGIN}" =~ ^(azure|gandi|route53|standalone)$ ]]; then
if [[ "${DNSPLUGIN}" =~ ^(gandi|route53|standalone)$ ]]; then
if [[ -n "${PROPAGATION}" ]]; then echo "${DNSPLUGIN} dns plugin does not support setting propagation time"; fi
sed -i "/^dns-${DNSPLUGIN}-propagation-seconds\b/d" /config/etc/letsencrypt/cli.ini
fi