Merge branch 'master' into patch-1

This commit is contained in:
Eric Nemchik
2025-11-04 20:43:59 -06:00
committed by GitHub
3 changed files with 194 additions and 156 deletions

98
Jenkinsfile vendored
View File

@@ -208,6 +208,7 @@ pipeline {
env.META_TAG = env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER env.META_TAG = env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
env.EXT_RELEASE_TAG = 'version-' + env.EXT_RELEASE_CLEAN 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.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.EXT_RELEASE_TAG = 'version-' + env.EXT_RELEASE_CLEAN
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.DEV_DOCKERHUB_IMAGE + '/tags/' 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.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.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/'
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.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 \ -v ${WORKSPACE}:/mnt \
-e AWS_ACCESS_KEY_ID=\"${S3_KEY}\" \ -e AWS_ACCESS_KEY_ID=\"${S3_KEY}\" \
-e AWS_SECRET_ACCESS_KEY=\"${S3_SECRET}\" \ -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 && \ apk add --no-cache python3 && \
python3 -m venv /lsiopy && \ python3 -m venv /lsiopy && \
pip install --no-cache-dir -U pip && \ 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 $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 $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
if [[ "${PACKAGE_CHECK}" != "true" ]]; then if [[ "${PACKAGE_CHECK}" != "true" ]]; then
declare -A pids
IFS=',' read -ra CACHE <<< "$BUILDCACHE" IFS=',' read -ra CACHE <<< "$BUILDCACHE"
for i in "${CACHE[@]}"; do for i in "${CACHE[@]}"; do
docker push ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} & docker push ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} &
pids[$!]="$i"
done done
for p in $(jobs -p); do for p in "${!pids[@]}"; do
wait "$p" || { echo "job $p failed" >&2; exit 1; } wait "$p" || { [[ "${pids[$p]}" != *"quay.io"* ]] && exit 1; }
done done
fi fi
''' '''
@@ -681,13 +687,16 @@ pipeline {
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin 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 $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
if [[ "${PACKAGE_CHECK}" != "true" ]]; then if [[ "${PACKAGE_CHECK}" != "true" ]]; then
declare -A pids
IFS=',' read -ra CACHE <<< "$BUILDCACHE" IFS=',' read -ra CACHE <<< "$BUILDCACHE"
for i in "${CACHE[@]}"; do for i in "${CACHE[@]}"; do
docker push ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} & docker push ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} &
pids[$!]="$i"
done done
for p in $(jobs -p); do for p in "${!pids[@]}"; do
wait "$p" || { echo "job $p failed" >&2; exit 1; } wait "$p" || { [[ "${pids[$p]}" != *"quay.io"* ]] && exit 1; }
done done
fi fi
''' '''
@@ -741,12 +750,14 @@ pipeline {
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --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 echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
if [[ "${PACKAGE_CHECK}" != "true" ]]; then if [[ "${PACKAGE_CHECK}" != "true" ]]; then
declare -A pids
IFS=',' read -ra CACHE <<< "$BUILDCACHE" IFS=',' read -ra CACHE <<< "$BUILDCACHE"
for i in "${CACHE[@]}"; do for i in "${CACHE[@]}"; do
docker push ${i}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} & docker push ${i}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} &
pids[$!]="$i"
done done
for p in $(jobs -p); do for p in "${!pids[@]}"; do
wait "$p" || { echo "job $p failed" >&2; exit 1; } wait "$p" || { [[ "${pids[$p]}" != *"quay.io"* ]] && exit 1; }
done done
fi fi
''' '''
@@ -871,7 +882,7 @@ pipeline {
CI_DOCKERENV="LSIO_FIRST_PARTY=true" CI_DOCKERENV="LSIO_FIRST_PARTY=true"
fi fi
fi fi
docker pull ghcr.io/linuxserver/ci:latest docker pull ghcr.io/linuxserver/ci:${CITEST_IMAGETAG}
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
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG} docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
@@ -895,7 +906,7 @@ pipeline {
-e WEB_PATH=\"${CI_WEBPATH}\" \ -e WEB_PATH=\"${CI_WEBPATH}\" \
-e NODE_NAME=\"${NODE_NAME}\" \ -e NODE_NAME=\"${NODE_NAME}\" \
-e SYFT_IMAGE_TAG=\"${CI_SYFT_IMAGE_TAG:-${SYFT_IMAGE_TAG}}\" \ -e SYFT_IMAGE_TAG=\"${CI_SYFT_IMAGE_TAG:-${SYFT_IMAGE_TAG}}\" \
-t ghcr.io/linuxserver/ci:latest \ -t ghcr.io/linuxserver/ci:${CITEST_IMAGETAG} \
python3 test_build.py''' python3 test_build.py'''
} }
} }
@@ -921,9 +932,11 @@ pipeline {
CACHEIMAGE=${i} CACHEIMAGE=${i}
fi fi
done 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 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 fi
done done
''' '''
@@ -948,20 +961,27 @@ pipeline {
CACHEIMAGE=${i} CACHEIMAGE=${i}
fi fi
done 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}: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} { 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 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}: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} { 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 fi
done done
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do 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}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm64v8-latest || \
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}:${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} { 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 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 fi
done done
''' '''
@@ -979,23 +999,41 @@ pipeline {
environment name: 'EXIT_STATUS', value: '' environment name: 'EXIT_STATUS', value: ''
} }
steps { steps {
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}" 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 \ curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/git/tags \
-d '{"tag":"'${META_TAG}'",\ -d '{"tag":"'${META_TAG}'",\
"object": "'${COMMIT_SHA}'",\ "object": "'${COMMIT_SHA}'",\
"message": "Tagging Release '${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}' to master",\ "message": "Tagging Release '${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}' to master",\
"type": "commit",\ "type": "commit",\
"tagger": {"name": "LinuxServer-CI","email": "ci@linuxserver.io","date": "'${GITHUB_DATE}'"}}' ''' "tagger": {"name": "LinuxServer-CI","email": "ci@linuxserver.io","date": "'${GITHUB_DATE}'"}}'
echo "Pushing New release for Tag" echo "Pushing New release for Tag"
sh '''#! /bin/bash
echo "Updating PIP version of ${EXT_PIP} to ${EXT_RELEASE_CLEAN}" > releasebody.json echo "Updating PIP version of ${EXT_PIP} to ${EXT_RELEASE_CLEAN}" > releasebody.json
echo '{"tag_name":"'${META_TAG}'",\ jq -n \
"target_commitish": "master",\ --arg tag_name "$META_TAG" \
"name": "'${META_TAG}'",\ --arg target_commitish "master" \
"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 --arg ci_url "${CI_URL:-N/A}" \
printf '","draft": false,"prerelease": false}' >> releasebody.json --arg ls_notes "$AUTO_RELEASE_NOTES" \
paste -d'\\0' start releasebody.json > releasebody.json.done --arg remote_notes "$(cat releasebody.json)" \
curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/releases -d @releasebody.json.done''' '{
"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 // Add protection to the release branch

View File

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

View File

@@ -303,7 +303,7 @@ if [[ "${VALIDATION}" = "dns" ]]; then
sed -i "/^dns-${DNSPLUGIN}-credentials\b/d" /config/etc/letsencrypt/cli.ini sed -i "/^dns-${DNSPLUGIN}-credentials\b/d" /config/etc/letsencrypt/cli.ini
fi fi
# plugins that don't support setting propagation # 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 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 sed -i "/^dns-${DNSPLUGIN}-propagation-seconds\b/d" /config/etc/letsencrypt/cli.ini
fi fi