mirror of
https://github.com/linuxserver/docker-swag.git
synced 2026-03-13 21:55:15 +09:00
Compare commits
8 Commits
3.0.1-ls34
...
3.0.1-ls34
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2e005369f1 | ||
|
|
d9a92bd940 | ||
|
|
892cf960a9 | ||
|
|
aaa6ae77b5 | ||
|
|
584ca6732c | ||
|
|
4e109fb858 | ||
|
|
4788f2b855 | ||
|
|
397106ec30 |
37
.github/workflows/external_trigger.yml
vendored
37
.github/workflows/external_trigger.yml
vendored
@@ -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 \
|
||||||
|
|||||||
27
.github/workflows/package_trigger_scheduler.yml
vendored
27
.github/workflows/package_trigger_scheduler.yml
vendored
@@ -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
26
Jenkinsfile
vendored
@@ -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'''
|
||||||
|
|||||||
@@ -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.89 python
|
||||||
botocore 1.35.71 python
|
botocore 1.35.89 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,7 +36,7 @@ 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
|
||||||
@@ -58,7 +58,7 @@ 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.0 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
|
||||||
@@ -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.156.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,11 +309,11 @@ 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
|
||||||
@@ -324,9 +324,9 @@ 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
|
||||||
|
|||||||
Reference in New Issue
Block a user