Compare commits

...

5 Commits

Author SHA1 Message Date
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
4 changed files with 123 additions and 83 deletions

View File

@@ -48,13 +48,30 @@ jobs:
--header "Accept: application/vnd.oci.image.index.v1+json" \
--header "Authorization: Bearer ${token}" \
"https://ghcr.io/v2/${image}/manifests/${tag}")
multidigest=$(jq -r ".manifests[] | select(.platform.architecture == \"amd64\").digest?" <<< "${multidigest}")
digest=$(curl -s \
--header "Accept: application/vnd.docker.distribution.manifest.v2+json" \
--header "Accept: application/vnd.oci.image.manifest.v1+json" \
--header "Authorization: Bearer ${token}" \
"https://ghcr.io/v2/${image}/manifests/${multidigest}" \
| jq -r '.config.digest')
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.oci.image.manifest.v1+json" \
--header "Authorization: Bearer ${token}" \
"https://ghcr.io/v2/${image}/manifests/${multidigest}"); then
digest=$(jq -r '.config.digest' <<< "${digest}");
fi
fi
image_info=$(curl -sL \
--header "Authorization: Bearer ${token}" \
"https://ghcr.io/v2/${image}/blobs/${digest}")
@@ -92,7 +109,7 @@ jobs:
else
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
if "${artifacts_found}" == "true" ]]; then
if [[ "${artifacts_found}" == "true" ]]; then
echo "All artifacts seem to be uploaded." >> $GITHUB_STEP_SUMMARY
fi
response=$(curl -iX POST \

View File

@@ -27,9 +27,18 @@ jobs:
fi
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)
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
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 "> Skipping branch ${br} due to \`skip_package_check\` being set in \`jenkins-vars.yml\`." >> $GITHUB_STEP_SUMMARY
skipped_branches="${skipped_branches}${br} "
@@ -37,7 +46,7 @@ jobs:
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> Github organizational variable \`SKIP_PACKAGE_TRIGGER\` contains \`swag_${br}\`; skipping trigger." >> $GITHUB_STEP_SUMMARY
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 "> There already seems to be an active build on Jenkins; skipping package trigger for ${br}" >> $GITHUB_STEP_SUMMARY
skipped_branches="${skipped_branches}${br} "
@@ -49,6 +58,11 @@ jobs:
response=$(curl -iX POST \
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|")
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 "Sleeping 10 seconds until job starts" >> $GITHUB_STEP_SUMMARY
sleep 10
@@ -56,11 +70,14 @@ jobs:
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 \
if ! curl -ifX 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"
--data-urlencode "Submit=Submit"; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> Unable to change the Jenkins job description."
fi
sleep 20
fi
else

20
Jenkinsfile vendored
View File

@@ -575,7 +575,7 @@ pipeline {
--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.\" \
--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} ."
sh '''#! /bin/bash
set -e
@@ -604,7 +604,9 @@ pipeline {
for i in "${CACHE[@]}"; do
docker push ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} &
done
wait
for p in $(jobs -p); do
wait "$p" || { echo "job $p failed" >&2; exit 1; }
done
fi
'''
}
@@ -639,7 +641,7 @@ pipeline {
--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.\" \
--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} ."
sh '''#! /bin/bash
set -e
@@ -668,7 +670,9 @@ pipeline {
for i in "${CACHE[@]}"; do
docker push ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} &
done
wait
for p in $(jobs -p); do
wait "$p" || { echo "job $p failed" >&2; exit 1; }
done
fi
'''
}
@@ -696,7 +700,7 @@ pipeline {
--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.\" \
--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} ."
sh '''#! /bin/bash
set -e
@@ -725,7 +729,9 @@ pipeline {
for i in "${CACHE[@]}"; do
docker push ${i}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} &
done
wait
for p in $(jobs -p); do
wait "$p" || { echo "job $p failed" >&2; exit 1; }
done
fi
'''
}
@@ -968,7 +974,7 @@ pipeline {
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**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
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'''

View File

@@ -7,11 +7,11 @@ alpine-keys 2.4-r1 apk
alpine-release 3.20.3-r0 apk
aom-libs 3.9.1-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-util 1.6.3-r1 apk
argon2-libs 20190702-r5 apk
attrs 24.2.0 python
attrs 24.3.0 python
autocommand 2.2.2 python
azure-common 1.1.28 python
azure-core 1.32.0 python
@@ -21,8 +21,8 @@ azure-mgmt-dns 8.2.0 python
backports-tarfile 1.2.0 python
bash 5.2.26-r0 apk
beautifulsoup4 4.12.3 python
boto3 1.35.76 python
botocore 1.35.76 python
boto3 1.35.89 python
botocore 1.35.89 python
brotli-libs 1.1.0-r2 apk
bs4 0.0.2 python
busybox 1.36.1-r29 apk
@@ -77,11 +77,11 @@ certbot-dns-standalone 1.1 python
certbot-dns-transip 0.5.2 python
certbot-dns-vultr 1.1.0 python
certbot-plugin-gandi 1.5.0 python
certifi 2024.8.30 python
certifi 2024.12.14 python
cffi 1.17.1 python
charset-normalizer 3.4.0 python
charset-normalizer 3.4.1 python
cloudflare 2.19.4 python
composer 2.8.3 binary
composer 2.8.4 binary
configargparse 1.7 python
configobj 5.0.9 python
coreutils 9.5-r1 apk
@@ -89,9 +89,9 @@ coreutils-env 9.5-r1 apk
coreutils-fmt 9.5-r1 apk
coreutils-sha512sum 9.5-r1 apk
cryptography 44.0.0 python
curl 8.9.1-r2 apk
curl 8.11.1-r0 apk
distro 1.9.0 python
dns-lexicon 3.19.0 python
dns-lexicon 3.20.1 python
dnslib 0.9.25 python
dnspython 2.7.0 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-wks-client 2.4.5-r0 apk
gnutls 3.8.5-r0 apk
google-api-core 2.23.0 python
google-api-python-client 2.154.0 python
google-auth 2.36.0 python
google-api-core 2.24.0 python
google-api-python-client 2.156.0 python
google-auth 2.37.0 python
google-auth-httplib2 0.2.0 python
googleapis-common-protos 1.66.0 python
gpg 2.4.5-r0 apk
@@ -143,7 +143,7 @@ jmespath 1.0.1 python
josepy 1.14.0 python
jq 1.7.1-r0 apk
jsonlines 4.0.0 python
jsonpickle 4.0.0 python
jsonpickle 4.0.1 python
libacl 2.3.2-r0 apk
libassuan 2.5.7-r0 apk
libattr 2.5.2-r0 apk
@@ -151,7 +151,7 @@ libavif 1.0.4-r0 apk
libbsd 0.12.2-r0 apk
libbz2 1.0.8-r6 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
libedit 20240517.3.1-r0 apk
libevent 2.1.12-r7 apk
@@ -252,55 +252,55 @@ pcre2 10.43-r0 apk
perl 5.38.2-r0 apk
perl-error 0.17029-r2 apk
perl-git 2.45.2-r0 apk
php83 8.3.14-r0 apk
php83-bcmath 8.3.14-r0 apk
php83-bz2 8.3.14-r0 apk
php83-common 8.3.14-r0 apk
php83-ctype 8.3.14-r0 apk
php83-curl 8.3.14-r0 apk
php83-dom 8.3.14-r0 apk
php83-exif 8.3.14-r0 apk
php83-fileinfo 8.3.14-r0 apk
php83-fpm 8.3.14-r0 apk
php83-ftp 8.3.14-r0 apk
php83-gd 8.3.14-r0 apk
php83-gmp 8.3.14-r0 apk
php83-iconv 8.3.14-r0 apk
php83-imap 8.3.14-r0 apk
php83-intl 8.3.14-r0 apk
php83-ldap 8.3.14-r0 apk
php83-mbstring 8.3.14-r0 apk
php83-mysqli 8.3.14-r0 apk
php83-mysqlnd 8.3.14-r0 apk
php83-opcache 8.3.14-r0 apk
php83-openssl 8.3.14-r0 apk
php83-pdo 8.3.14-r0 apk
php83-pdo_mysql 8.3.14-r0 apk
php83-pdo_odbc 8.3.14-r0 apk
php83-pdo_pgsql 8.3.14-r0 apk
php83-pdo_sqlite 8.3.14-r0 apk
php83-pear 8.3.14-r0 apk
php83 8.3.15-r0 apk
php83-bcmath 8.3.15-r0 apk
php83-bz2 8.3.15-r0 apk
php83-common 8.3.15-r0 apk
php83-ctype 8.3.15-r0 apk
php83-curl 8.3.15-r0 apk
php83-dom 8.3.15-r0 apk
php83-exif 8.3.15-r0 apk
php83-fileinfo 8.3.15-r0 apk
php83-fpm 8.3.15-r0 apk
php83-ftp 8.3.15-r0 apk
php83-gd 8.3.15-r0 apk
php83-gmp 8.3.15-r0 apk
php83-iconv 8.3.15-r0 apk
php83-imap 8.3.15-r0 apk
php83-intl 8.3.15-r0 apk
php83-ldap 8.3.15-r0 apk
php83-mbstring 8.3.15-r0 apk
php83-mysqli 8.3.15-r0 apk
php83-mysqlnd 8.3.15-r0 apk
php83-opcache 8.3.15-r0 apk
php83-openssl 8.3.15-r0 apk
php83-pdo 8.3.15-r0 apk
php83-pdo_mysql 8.3.15-r0 apk
php83-pdo_odbc 8.3.15-r0 apk
php83-pdo_pgsql 8.3.15-r0 apk
php83-pdo_sqlite 8.3.15-r0 apk
php83-pear 8.3.15-r0 apk
php83-pecl-apcu 5.1.23-r0 apk
php83-pecl-igbinary 3.2.15-r0 apk
php83-pecl-mcrypt 1.0.7-r0 apk
php83-pecl-memcached 3.3.0-r0 apk
php83-pecl-msgpack 2.2.0-r2 apk
php83-pecl-redis 6.1.0-r0 apk
php83-pgsql 8.3.14-r0 apk
php83-phar 8.3.14-r0 apk
php83-posix 8.3.14-r0 apk
php83-session 8.3.14-r0 apk
php83-simplexml 8.3.14-r0 apk
php83-soap 8.3.14-r0 apk
php83-sockets 8.3.14-r0 apk
php83-sodium 8.3.14-r0 apk
php83-sqlite3 8.3.14-r0 apk
php83-tokenizer 8.3.14-r0 apk
php83-xml 8.3.14-r0 apk
php83-xmlreader 8.3.14-r0 apk
php83-xmlwriter 8.3.14-r0 apk
php83-xsl 8.3.14-r0 apk
php83-zip 8.3.14-r0 apk
php83-pgsql 8.3.15-r0 apk
php83-phar 8.3.15-r0 apk
php83-posix 8.3.15-r0 apk
php83-session 8.3.15-r0 apk
php83-simplexml 8.3.15-r0 apk
php83-soap 8.3.15-r0 apk
php83-sockets 8.3.15-r0 apk
php83-sodium 8.3.15-r0 apk
php83-sqlite3 8.3.15-r0 apk
php83-tokenizer 8.3.15-r0 apk
php83-xml 8.3.15-r0 apk
php83-xmlreader 8.3.15-r0 apk
php83-xmlwriter 8.3.15-r0 apk
php83-xsl 8.3.15-r0 apk
php83-zip 8.3.15-r0 apk
pinentry 1.3.0-r0 apk
pip 24.3.1 python
pkb-client 2.0.0 python
@@ -309,11 +309,11 @@ popt 1.19-r3 apk
portalocker 2.10.1 python
procps-ng 4.0.4-r0 apk
proto-plus 1.25.0 python
protobuf 5.29.1 python
protobuf 5.29.2 python
pyacmedns 0.4 python
pyasn1 0.6.1 python
pyasn1-modules 0.4.1 python
pyc 3.12.8-r0 apk
pyc 3.12.8-r1 apk
pycparser 2.22 python
pyjwt 2.10.1 python
pynamecheap 0.0.3 python
@@ -324,9 +324,9 @@ pyrfc3339 2.0.1 python
python-dateutil 2.9.0.post0 python
python-digitalocean 1.17.0 python
python-transip 0.6.0 python
python3 3.12.8-r0 apk
python3-pyc 3.12.8-r0 apk
python3-pycache-pyc0 3.12.8-r0 apk
python3 3.12.8-r1 apk
python3-pyc 3.12.8-r1 apk
python3-pycache-pyc0 3.12.8-r1 apk
pytz 2024.2 python
pyyaml 6.0.2 python
readline 8.2.10-r0 apk
@@ -351,7 +351,7 @@ typing-extensions 4.12.2 python (+1 duplicate)
tzdata 2024b-r0 apk
unixodbc 2.3.12-r0 apk
uritemplate 4.1.1 python
urllib3 2.2.3 python
urllib3 2.3.0 python
utmps-libs 0.1.2.2-r1 apk
wheel 0.43.0 python
wheel 0.45.1 python