Compare commits

...

9 Commits

Author SHA1 Message Date
LinuxServer-CI
9a63c22e77 Bot Updating Package Versions 2025-01-03 15:29:34 +00:00
LinuxServer-CI
2e005369f1 Bot Updating Package Versions 2024-12-28 03:23:46 +00:00
LinuxServer-CI
d9a92bd940 Bot Updating Package Versions
Some checks failed
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2024-12-21 03:28:51 +00:00
LinuxServer-CI
892cf960a9 Bot Updating Templated Files 2024-12-21 03:24:57 +00:00
LinuxServer-CI
aaa6ae77b5 Bot Updating Templated Files 2024-12-21 03:22:04 +00:00
LinuxServer-CI
584ca6732c Bot Updating Package Versions
Some checks failed
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2024-12-14 03:33:45 +00:00
LinuxServer-CI
4e109fb858 Bot Updating Package Versions
Some checks failed
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2024-12-07 03:39:50 +00:00
LinuxServer-CI
4788f2b855 Bot Updating Templated Files 2024-12-07 03:35:51 +00:00
LinuxServer-CI
397106ec30 Bot Updating Templated Files 2024-12-07 03:34:27 +00:00
4 changed files with 135 additions and 93 deletions

View File

@@ -43,16 +43,35 @@ jobs:
token=$(curl -sX GET \ token=$(curl -sX GET \
"https://ghcr.io/token?scope=repository%3Alinuxserver%2Fswag%3Apull" \ "https://ghcr.io/token?scope=repository%3Alinuxserver%2Fswag%3Apull" \
| jq -r '.token') | jq -r '.token')
multidigest=$(curl -s \ multidigest=$(curl -s \
--header "Accept: application/vnd.docker.distribution.manifest.v2+json" \
--header "Accept: application/vnd.oci.image.index.v1+json" \
--header "Authorization: Bearer ${token}" \
"https://ghcr.io/v2/${image}/manifests/${tag}")
if jq -e '.layers // empty' <<< "${multidigest}" >/dev/null 2>&1; then
# If there's a layer element it's a single-arch manifest so just get that digest
digest=$(jq -r '.config.digest' <<< "${multidigest}")
else
# Otherwise it's multi-arch or has manifest annotations
if jq -e '.manifests[]?.annotations // empty' <<< "${multidigest}" >/dev/null 2>&1; then
# Check for manifest annotations and delete if found
multidigest=$(jq 'del(.manifests[] | select(.annotations))' <<< "${multidigest}")
fi
if [[ $(jq '.manifests | length' <<< "${multidigest}") -gt 1 ]]; then
# If there's still more than one digest, it's multi-arch
multidigest=$(jq -r ".manifests[] | select(.platform.architecture == \"amd64\").digest?" <<< "${multidigest}")
else
# Otherwise it's single arch
multidigest=$(jq -r ".manifests[].digest?" <<< "${multidigest}")
fi
if digest=$(curl -s \
--header "Accept: application/vnd.docker.distribution.manifest.v2+json" \ --header "Accept: application/vnd.docker.distribution.manifest.v2+json" \
--header "Accept: application/vnd.oci.image.manifest.v1+json" \
--header "Authorization: Bearer ${token}" \ --header "Authorization: Bearer ${token}" \
"https://ghcr.io/v2/${image}/manifests/${tag}" \ "https://ghcr.io/v2/${image}/manifests/${multidigest}"); then
| jq -r 'first(.manifests[].digest)') digest=$(jq -r '.config.digest' <<< "${digest}");
digest=$(curl -s \ fi
--header "Accept: application/vnd.docker.distribution.manifest.v2+json" \ fi
--header "Authorization: Bearer ${token}" \
"https://ghcr.io/v2/${image}/manifests/${multidigest}" \
| jq -r '.config.digest')
image_info=$(curl -sL \ image_info=$(curl -sL \
--header "Authorization: Bearer ${token}" \ --header "Authorization: Bearer ${token}" \
"https://ghcr.io/v2/${image}/blobs/${digest}") "https://ghcr.io/v2/${image}/blobs/${digest}")
@@ -90,7 +109,7 @@ jobs:
else else
printf "\n## Trigger new build\n\n" >> $GITHUB_STEP_SUMMARY printf "\n## Trigger new build\n\n" >> $GITHUB_STEP_SUMMARY
echo "New version \`${EXT_RELEASE}\` found; old version was \`${IMAGE_VERSION}\`. Triggering new build" >> $GITHUB_STEP_SUMMARY echo "New version \`${EXT_RELEASE}\` found; old version was \`${IMAGE_VERSION}\`. Triggering new build" >> $GITHUB_STEP_SUMMARY
if "${artifacts_found}" == "true" ]]; then if [[ "${artifacts_found}" == "true" ]]; then
echo "All artifacts seem to be uploaded." >> $GITHUB_STEP_SUMMARY echo "All artifacts seem to be uploaded." >> $GITHUB_STEP_SUMMARY
fi fi
response=$(curl -iX POST \ response=$(curl -iX POST \

View File

@@ -27,9 +27,18 @@ jobs:
fi fi
printf "\n## Evaluating \`%s\`\n\n" ${br} >> $GITHUB_STEP_SUMMARY printf "\n## Evaluating \`%s\`\n\n" ${br} >> $GITHUB_STEP_SUMMARY
JENKINS_VARS=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-swag/${br}/jenkins-vars.yml) JENKINS_VARS=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-swag/${br}/jenkins-vars.yml)
if [[ "${br}" == $(yq -r '.ls_branch' <<< "${JENKINS_VARS}") ]]; then if ! curl -sfX GET https://raw.githubusercontent.com/linuxserver/docker-swag/${br}/Jenkinsfile >/dev/null 2>&1; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> No Jenkinsfile found. Branch is either deprecated or is an early dev branch." >> $GITHUB_STEP_SUMMARY
skipped_branches="${skipped_branches}${br} "
elif [[ "${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 [[ $(yq -r '.skip_package_check' <<< "${JENKINS_VARS}") == "true" ]]; then README_VARS=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-swag/${br}/readme-vars.yml)
if [[ $(yq -r '.project_deprecation_status' <<< "${README_VARS}") == "true" ]]; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> Branch appears to be deprecated; skipping trigger." >> $GITHUB_STEP_SUMMARY
skipped_branches="${skipped_branches}${br} "
elif [[ $(yq -r '.skip_package_check' <<< "${JENKINS_VARS}") == "true" ]]; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> Skipping branch ${br} due to \`skip_package_check\` being set in \`jenkins-vars.yml\`." >> $GITHUB_STEP_SUMMARY echo "> Skipping branch ${br} due to \`skip_package_check\` being set in \`jenkins-vars.yml\`." >> $GITHUB_STEP_SUMMARY
skipped_branches="${skipped_branches}${br} " skipped_branches="${skipped_branches}${br} "
@@ -37,7 +46,7 @@ jobs:
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> Github organizational variable \`SKIP_PACKAGE_TRIGGER\` contains \`swag_${br}\`; skipping trigger." >> $GITHUB_STEP_SUMMARY echo "> Github organizational variable \`SKIP_PACKAGE_TRIGGER\` contains \`swag_${br}\`; skipping trigger." >> $GITHUB_STEP_SUMMARY
skipped_branches="${skipped_branches}${br} " skipped_branches="${skipped_branches}${br} "
elif [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-swag/job/${br}/lastBuild/api/json | jq -r '.building') == "true" ]; then elif [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-swag/job/${br}/lastBuild/api/json | jq -r '.building' 2>/dev/null) == "true" ]; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> There already seems to be an active build on Jenkins; skipping package trigger for ${br}" >> $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} " skipped_branches="${skipped_branches}${br} "
@@ -49,6 +58,11 @@ jobs:
response=$(curl -iX POST \ response=$(curl -iX POST \
https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-swag/job/${br}/buildWithParameters?PACKAGE_CHECK=true \ https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-swag/job/${br}/buildWithParameters?PACKAGE_CHECK=true \
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} | grep -i location | sed "s|^[L|l]ocation: \(.*\)|\1|") --user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} | grep -i location | sed "s|^[L|l]ocation: \(.*\)|\1|")
if [[ -z "${response}" ]]; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> Jenkins build could not be triggered. Skipping branch."
continue
fi
echo "Jenkins [job queue url](${response%$'\r'})" >> $GITHUB_STEP_SUMMARY echo "Jenkins [job queue url](${response%$'\r'})" >> $GITHUB_STEP_SUMMARY
echo "Sleeping 10 seconds until job starts" >> $GITHUB_STEP_SUMMARY echo "Sleeping 10 seconds until job starts" >> $GITHUB_STEP_SUMMARY
sleep 10 sleep 10
@@ -56,11 +70,14 @@ jobs:
buildurl="${buildurl%$'\r'}" buildurl="${buildurl%$'\r'}"
echo "Jenkins job [build url](${buildurl})" >> $GITHUB_STEP_SUMMARY echo "Jenkins job [build url](${buildurl})" >> $GITHUB_STEP_SUMMARY
echo "Attempting to change the Jenkins job description" >> $GITHUB_STEP_SUMMARY echo "Attempting to change the Jenkins job description" >> $GITHUB_STEP_SUMMARY
curl -iX POST \ if ! curl -ifX POST \
"${buildurl}submitDescription" \ "${buildurl}submitDescription" \
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} \ --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 "description=GHA package trigger https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" \
--data-urlencode "Submit=Submit" --data-urlencode "Submit=Submit"; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> Unable to change the Jenkins job description."
fi
sleep 20 sleep 20
fi fi
else else

26
Jenkinsfile vendored
View File

@@ -341,7 +341,7 @@ pipeline {
echo "Starting Stage 2.5 - Update init diagram" echo "Starting Stage 2.5 - Update init diagram"
if ! grep -q 'init_diagram:' readme-vars.yml; then if ! grep -q 'init_diagram:' readme-vars.yml; then
echo "Adding the key 'init_diagram' to readme-vars.yml" echo "Adding the key 'init_diagram' to readme-vars.yml"
sed -i '\\|^#.*changelog.*$|d' readme-vars.yml sed -i '\\|^#.*changelog.*$|d' readme-vars.yml
sed -i 's|^changelogs:|# init diagram\\ninit_diagram:\\n\\n# changelog\\nchangelogs:|' readme-vars.yml sed -i 's|^changelogs:|# init diagram\\ninit_diagram:\\n\\n# changelog\\nchangelogs:|' readme-vars.yml
fi fi
mkdir -p ${TEMPDIR}/d2 mkdir -p ${TEMPDIR}/d2
@@ -575,7 +575,7 @@ pipeline {
--label \"org.opencontainers.image.title=Swag\" \ --label \"org.opencontainers.image.title=Swag\" \
--label \"org.opencontainers.image.description=SWAG - Secure Web Application Gateway (formerly known as letsencrypt, no relation to Let's Encrypt™) sets up an Nginx webserver and reverse proxy with php support and a built-in certbot client that automates free SSL server certificate generation and renewal processes (Let's Encrypt and ZeroSSL). It also contains fail2ban for intrusion prevention.\" \ --label \"org.opencontainers.image.description=SWAG - Secure Web Application Gateway (formerly known as letsencrypt, no relation to Let's Encrypt™) sets up an Nginx webserver and reverse proxy with php support and a built-in certbot client that automates free SSL server certificate generation and renewal processes (Let's Encrypt and ZeroSSL). It also contains fail2ban for intrusion prevention.\" \
--no-cache --pull -t ${IMAGE}:${META_TAG} --platform=linux/amd64 \ --no-cache --pull -t ${IMAGE}:${META_TAG} --platform=linux/amd64 \
--provenance=false --sbom=false --builder=container --load \ --provenance=true --sbom=true --builder=container --load \
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ." --build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
sh '''#! /bin/bash sh '''#! /bin/bash
set -e set -e
@@ -604,7 +604,9 @@ pipeline {
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} &
done done
wait for p in $(jobs -p); do
wait "$p" || { echo "job $p failed" >&2; exit 1; }
done
fi fi
''' '''
} }
@@ -639,7 +641,7 @@ pipeline {
--label \"org.opencontainers.image.title=Swag\" \ --label \"org.opencontainers.image.title=Swag\" \
--label \"org.opencontainers.image.description=SWAG - Secure Web Application Gateway (formerly known as letsencrypt, no relation to Let's Encrypt™) sets up an Nginx webserver and reverse proxy with php support and a built-in certbot client that automates free SSL server certificate generation and renewal processes (Let's Encrypt and ZeroSSL). It also contains fail2ban for intrusion prevention.\" \ --label \"org.opencontainers.image.description=SWAG - Secure Web Application Gateway (formerly known as letsencrypt, no relation to Let's Encrypt™) sets up an Nginx webserver and reverse proxy with php support and a built-in certbot client that automates free SSL server certificate generation and renewal processes (Let's Encrypt and ZeroSSL). It also contains fail2ban for intrusion prevention.\" \
--no-cache --pull -t ${IMAGE}:amd64-${META_TAG} --platform=linux/amd64 \ --no-cache --pull -t ${IMAGE}:amd64-${META_TAG} --platform=linux/amd64 \
--provenance=false --sbom=false --builder=container --load \ --provenance=true --sbom=true --builder=container --load \
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ." --build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
sh '''#! /bin/bash sh '''#! /bin/bash
set -e set -e
@@ -668,7 +670,9 @@ pipeline {
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} &
done done
wait for p in $(jobs -p); do
wait "$p" || { echo "job $p failed" >&2; exit 1; }
done
fi fi
''' '''
} }
@@ -696,7 +700,7 @@ pipeline {
--label \"org.opencontainers.image.title=Swag\" \ --label \"org.opencontainers.image.title=Swag\" \
--label \"org.opencontainers.image.description=SWAG - Secure Web Application Gateway (formerly known as letsencrypt, no relation to Let's Encrypt™) sets up an Nginx webserver and reverse proxy with php support and a built-in certbot client that automates free SSL server certificate generation and renewal processes (Let's Encrypt and ZeroSSL). It also contains fail2ban for intrusion prevention.\" \ --label \"org.opencontainers.image.description=SWAG - Secure Web Application Gateway (formerly known as letsencrypt, no relation to Let's Encrypt™) sets up an Nginx webserver and reverse proxy with php support and a built-in certbot client that automates free SSL server certificate generation and renewal processes (Let's Encrypt and ZeroSSL). It also contains fail2ban for intrusion prevention.\" \
--no-cache --pull -f Dockerfile.aarch64 -t ${IMAGE}:arm64v8-${META_TAG} --platform=linux/arm64 \ --no-cache --pull -f Dockerfile.aarch64 -t ${IMAGE}:arm64v8-${META_TAG} --platform=linux/arm64 \
--provenance=false --sbom=false --builder=container --load \ --provenance=true --sbom=true --builder=container --load \
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ." --build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
sh '''#! /bin/bash sh '''#! /bin/bash
set -e set -e
@@ -725,7 +729,9 @@ pipeline {
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} &
done done
wait for p in $(jobs -p); do
wait "$p" || { echo "job $p failed" >&2; exit 1; }
done
fi fi
''' '''
} }
@@ -889,7 +895,7 @@ pipeline {
retry_backoff(5,5) { retry_backoff(5,5) {
sh '''#! /bin/bash sh '''#! /bin/bash
set -e set -e
for PUSHIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${QUAYIMAGE}" "${IMAGE}"; do for PUSHIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
[[ ${PUSHIMAGE%%/*} =~ \\. ]] && PUSHIMAGEPLUS="${PUSHIMAGE}" || PUSHIMAGEPLUS="docker.io/${PUSHIMAGE}" [[ ${PUSHIMAGE%%/*} =~ \\. ]] && PUSHIMAGEPLUS="${PUSHIMAGE}" || PUSHIMAGEPLUS="docker.io/${PUSHIMAGE}"
IFS=',' read -ra CACHE <<< "$BUILDCACHE" IFS=',' read -ra CACHE <<< "$BUILDCACHE"
for i in "${CACHE[@]}"; do for i in "${CACHE[@]}"; do
@@ -897,7 +903,7 @@ 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 [ -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}
fi fi
@@ -968,7 +974,7 @@ pipeline {
echo '{"tag_name":"'${META_TAG}'",\ echo '{"tag_name":"'${META_TAG}'",\
"target_commitish": "master",\ "target_commitish": "master",\
"name": "'${META_TAG}'",\ "name": "'${META_TAG}'",\
"body": "**CI Report:**\\n\\n'${CI_URL:-N/A}'\\n\\n**LinuxServer Changes:**\\n\\n'${LS_RELEASE_NOTES}'\\n\\n**PIP Changes:**\\n\\n' > start "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 printf '","draft": false,"prerelease": false}' >> releasebody.json
paste -d'\\0' start releasebody.json > releasebody.json.done 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''' curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/releases -d @releasebody.json.done'''

View File

@@ -7,11 +7,11 @@ alpine-keys 2.4-r1 apk
alpine-release 3.20.3-r0 apk alpine-release 3.20.3-r0 apk
aom-libs 3.9.1-r0 apk aom-libs 3.9.1-r0 apk
apache2-utils 2.4.62-r0 apk apache2-utils 2.4.62-r0 apk
apk-tools 2.14.4-r0 apk apk-tools 2.14.4-r1 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 24.2.0 python attrs 24.3.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.32.0 python azure-core 1.32.0 python
@@ -21,8 +21,8 @@ azure-mgmt-dns 8.2.0 python
backports-tarfile 1.2.0 python backports-tarfile 1.2.0 python
bash 5.2.26-r0 apk bash 5.2.26-r0 apk
beautifulsoup4 4.12.3 python beautifulsoup4 4.12.3 python
boto3 1.35.71 python boto3 1.35.91 python
botocore 1.35.71 python botocore 1.35.91 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.36.1-r29 apk busybox 1.36.1-r29 apk
@@ -36,13 +36,13 @@ catatonit 0.2.0-r0 apk
certbot 3.0.1 python certbot 3.0.1 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 2.6.1 python
certbot-dns-bunny 3.0.0 python certbot-dns-bunny 3.0.0 python
certbot-dns-cloudflare 3.0.1 python certbot-dns-cloudflare 3.0.1 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.2.1 python
certbot-dns-digitalocean 3.0.1 python certbot-dns-digitalocean 3.0.1 python
certbot-dns-directadmin 1.0.12 python certbot-dns-directadmin 1.0.13 python
certbot-dns-dnsimple 3.0.1 python certbot-dns-dnsimple 3.0.1 python
certbot-dns-dnsmadeeasy 3.0.1 python certbot-dns-dnsmadeeasy 3.0.1 python
certbot-dns-dnspod 0.1.0 python certbot-dns-dnspod 0.1.0 python
@@ -58,8 +58,8 @@ certbot-dns-godaddy 2.8.0 python
certbot-dns-google 3.0.1 python certbot-dns-google 3.0.1 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.2 python certbot-dns-infomaniak 0.2.3 python
certbot-dns-inwx 3.0.0 python certbot-dns-inwx 3.0.1 python
certbot-dns-ionos 2024.11.9 python certbot-dns-ionos 2024.11.9 python
certbot-dns-linode 3.0.1 python certbot-dns-linode 3.0.1 python
certbot-dns-loopia 1.0.1 python certbot-dns-loopia 1.0.1 python
@@ -77,11 +77,11 @@ certbot-dns-standalone 1.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 2024.8.30 python certifi 2024.12.14 python
cffi 1.17.1 python cffi 1.17.1 python
charset-normalizer 3.4.0 python charset-normalizer 3.4.1 python
cloudflare 2.19.4 python cloudflare 2.19.4 python
composer 2.8.3 binary composer 2.8.4 binary
configargparse 1.7 python configargparse 1.7 python
configobj 5.0.9 python configobj 5.0.9 python
coreutils 9.5-r1 apk coreutils 9.5-r1 apk
@@ -89,9 +89,9 @@ coreutils-env 9.5-r1 apk
coreutils-fmt 9.5-r1 apk coreutils-fmt 9.5-r1 apk
coreutils-sha512sum 9.5-r1 apk coreutils-sha512sum 9.5-r1 apk
cryptography 44.0.0 python cryptography 44.0.0 python
curl 8.9.1-r2 apk curl 8.11.1-r0 apk
distro 1.9.0 python distro 1.9.0 python
dns-lexicon 3.18.0 python dns-lexicon 3.20.1 python
dnslib 0.9.25 python dnslib 0.9.25 python
dnspython 2.7.0 python dnspython 2.7.0 python
domeneshop 0.4.4 python domeneshop 0.4.4 python
@@ -115,9 +115,9 @@ gnupg-keyboxd 2.4.5-r0 apk
gnupg-utils 2.4.5-r0 apk gnupg-utils 2.4.5-r0 apk
gnupg-wks-client 2.4.5-r0 apk gnupg-wks-client 2.4.5-r0 apk
gnutls 3.8.5-r0 apk gnutls 3.8.5-r0 apk
google-api-core 2.23.0 python google-api-core 2.24.0 python
google-api-python-client 2.154.0 python google-api-python-client 2.157.0 python
google-auth 2.36.0 python google-auth 2.37.0 python
google-auth-httplib2 0.2.0 python google-auth-httplib2 0.2.0 python
googleapis-common-protos 1.66.0 python googleapis-common-protos 1.66.0 python
gpg 2.4.5-r0 apk gpg 2.4.5-r0 apk
@@ -143,7 +143,7 @@ jmespath 1.0.1 python
josepy 1.14.0 python josepy 1.14.0 python
jq 1.7.1-r0 apk jq 1.7.1-r0 apk
jsonlines 4.0.0 python jsonlines 4.0.0 python
jsonpickle 4.0.0 python jsonpickle 4.0.1 python
libacl 2.3.2-r0 apk libacl 2.3.2-r0 apk
libassuan 2.5.7-r0 apk libassuan 2.5.7-r0 apk
libattr 2.5.2-r0 apk libattr 2.5.2-r0 apk
@@ -151,7 +151,7 @@ libavif 1.0.4-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.3.2-r1 apk libcrypto3 3.3.2-r1 apk
libcurl 8.9.1-r2 apk libcurl 8.11.1-r0 apk
libdav1d 1.4.2-r0 apk libdav1d 1.4.2-r0 apk
libedit 20240517.3.1-r0 apk libedit 20240517.3.1-r0 apk
libevent 2.1.12-r7 apk libevent 2.1.12-r7 apk
@@ -252,55 +252,55 @@ pcre2 10.43-r0 apk
perl 5.38.2-r0 apk perl 5.38.2-r0 apk
perl-error 0.17029-r2 apk perl-error 0.17029-r2 apk
perl-git 2.45.2-r0 apk perl-git 2.45.2-r0 apk
php83 8.3.14-r0 apk php83 8.3.15-r0 apk
php83-bcmath 8.3.14-r0 apk php83-bcmath 8.3.15-r0 apk
php83-bz2 8.3.14-r0 apk php83-bz2 8.3.15-r0 apk
php83-common 8.3.14-r0 apk php83-common 8.3.15-r0 apk
php83-ctype 8.3.14-r0 apk php83-ctype 8.3.15-r0 apk
php83-curl 8.3.14-r0 apk php83-curl 8.3.15-r0 apk
php83-dom 8.3.14-r0 apk php83-dom 8.3.15-r0 apk
php83-exif 8.3.14-r0 apk php83-exif 8.3.15-r0 apk
php83-fileinfo 8.3.14-r0 apk php83-fileinfo 8.3.15-r0 apk
php83-fpm 8.3.14-r0 apk php83-fpm 8.3.15-r0 apk
php83-ftp 8.3.14-r0 apk php83-ftp 8.3.15-r0 apk
php83-gd 8.3.14-r0 apk php83-gd 8.3.15-r0 apk
php83-gmp 8.3.14-r0 apk php83-gmp 8.3.15-r0 apk
php83-iconv 8.3.14-r0 apk php83-iconv 8.3.15-r0 apk
php83-imap 8.3.14-r0 apk php83-imap 8.3.15-r0 apk
php83-intl 8.3.14-r0 apk php83-intl 8.3.15-r0 apk
php83-ldap 8.3.14-r0 apk php83-ldap 8.3.15-r0 apk
php83-mbstring 8.3.14-r0 apk php83-mbstring 8.3.15-r0 apk
php83-mysqli 8.3.14-r0 apk php83-mysqli 8.3.15-r0 apk
php83-mysqlnd 8.3.14-r0 apk php83-mysqlnd 8.3.15-r0 apk
php83-opcache 8.3.14-r0 apk php83-opcache 8.3.15-r0 apk
php83-openssl 8.3.14-r0 apk php83-openssl 8.3.15-r0 apk
php83-pdo 8.3.14-r0 apk php83-pdo 8.3.15-r0 apk
php83-pdo_mysql 8.3.14-r0 apk php83-pdo_mysql 8.3.15-r0 apk
php83-pdo_odbc 8.3.14-r0 apk php83-pdo_odbc 8.3.15-r0 apk
php83-pdo_pgsql 8.3.14-r0 apk php83-pdo_pgsql 8.3.15-r0 apk
php83-pdo_sqlite 8.3.14-r0 apk php83-pdo_sqlite 8.3.15-r0 apk
php83-pear 8.3.14-r0 apk php83-pear 8.3.15-r0 apk
php83-pecl-apcu 5.1.23-r0 apk php83-pecl-apcu 5.1.23-r0 apk
php83-pecl-igbinary 3.2.15-r0 apk php83-pecl-igbinary 3.2.15-r0 apk
php83-pecl-mcrypt 1.0.7-r0 apk php83-pecl-mcrypt 1.0.7-r0 apk
php83-pecl-memcached 3.3.0-r0 apk php83-pecl-memcached 3.3.0-r0 apk
php83-pecl-msgpack 2.2.0-r2 apk php83-pecl-msgpack 2.2.0-r2 apk
php83-pecl-redis 6.1.0-r0 apk php83-pecl-redis 6.1.0-r0 apk
php83-pgsql 8.3.14-r0 apk php83-pgsql 8.3.15-r0 apk
php83-phar 8.3.14-r0 apk php83-phar 8.3.15-r0 apk
php83-posix 8.3.14-r0 apk php83-posix 8.3.15-r0 apk
php83-session 8.3.14-r0 apk php83-session 8.3.15-r0 apk
php83-simplexml 8.3.14-r0 apk php83-simplexml 8.3.15-r0 apk
php83-soap 8.3.14-r0 apk php83-soap 8.3.15-r0 apk
php83-sockets 8.3.14-r0 apk php83-sockets 8.3.15-r0 apk
php83-sodium 8.3.14-r0 apk php83-sodium 8.3.15-r0 apk
php83-sqlite3 8.3.14-r0 apk php83-sqlite3 8.3.15-r0 apk
php83-tokenizer 8.3.14-r0 apk php83-tokenizer 8.3.15-r0 apk
php83-xml 8.3.14-r0 apk php83-xml 8.3.15-r0 apk
php83-xmlreader 8.3.14-r0 apk php83-xmlreader 8.3.15-r0 apk
php83-xmlwriter 8.3.14-r0 apk php83-xmlwriter 8.3.15-r0 apk
php83-xsl 8.3.14-r0 apk php83-xsl 8.3.15-r0 apk
php83-zip 8.3.14-r0 apk php83-zip 8.3.15-r0 apk
pinentry 1.3.0-r0 apk pinentry 1.3.0-r0 apk
pip 24.3.1 python pip 24.3.1 python
pkb-client 2.0.0 python pkb-client 2.0.0 python
@@ -309,24 +309,24 @@ popt 1.19-r3 apk
portalocker 2.10.1 python portalocker 2.10.1 python
procps-ng 4.0.4-r0 apk procps-ng 4.0.4-r0 apk
proto-plus 1.25.0 python proto-plus 1.25.0 python
protobuf 5.29.0 python protobuf 5.29.2 python
pyacmedns 0.4 python pyacmedns 0.4 python
pyasn1 0.6.1 python pyasn1 0.6.1 python
pyasn1-modules 0.4.1 python pyasn1-modules 0.4.1 python
pyc 3.12.7-r0 apk pyc 3.12.8-r1 apk
pycparser 2.22 python pycparser 2.22 python
pyjwt 2.10.1 python pyjwt 2.10.1 python
pynamecheap 0.0.3 python pynamecheap 0.0.3 python
pyopenssl 24.3.0 python pyopenssl 24.3.0 python
pyotp 2.9.0 python pyotp 2.9.0 python
pyparsing 3.2.0 python pyparsing 3.2.1 python
pyrfc3339 2.0.1 python pyrfc3339 2.0.1 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.7-r0 apk python3 3.12.8-r1 apk
python3-pyc 3.12.7-r0 apk python3-pyc 3.12.8-r1 apk
python3-pycache-pyc0 3.12.7-r0 apk python3-pycache-pyc0 3.12.8-r1 apk
pytz 2024.2 python pytz 2024.2 python
pyyaml 6.0.2 python pyyaml 6.0.2 python
readline 8.2.10-r0 apk readline 8.2.10-r0 apk
@@ -338,7 +338,7 @@ s3transfer 0.10.4 python
scanelf 1.3.7-r2 apk scanelf 1.3.7-r2 apk
setuptools 75.6.0 python setuptools 75.6.0 python
shadow 4.15.1-r0 apk shadow 4.15.1-r0 apk
six 1.16.0 python six 1.17.0 python
skalibs 2.14.1.1-r0 apk skalibs 2.14.1.1-r0 apk
soupsieve 2.6 python soupsieve 2.6 python
sqlite-libs 3.45.3-r1 apk sqlite-libs 3.45.3-r1 apk
@@ -351,7 +351,7 @@ typing-extensions 4.12.2 python (+1 duplicate)
tzdata 2024b-r0 apk tzdata 2024b-r0 apk
unixodbc 2.3.12-r0 apk unixodbc 2.3.12-r0 apk
uritemplate 4.1.1 python uritemplate 4.1.1 python
urllib3 2.2.3 python urllib3 2.3.0 python
utmps-libs 0.1.2.2-r1 apk utmps-libs 0.1.2.2-r1 apk
wheel 0.43.0 python wheel 0.43.0 python
wheel 0.45.1 python wheel 0.45.1 python