mirror of
https://github.com/linuxserver/docker-heimdall.git
synced 2026-04-02 01:36:00 +09:00
Compare commits
6 Commits
developmen
...
developmen
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
dfabf2eede | ||
|
|
9c28a7f738 | ||
|
|
04488583cd | ||
|
|
2c05453937 | ||
|
|
1cc3130021 | ||
|
|
29b552ead4 |
33
.github/workflows/external_trigger.yml
vendored
33
.github/workflows/external_trigger.yml
vendored
@@ -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 \
|
||||
|
||||
27
.github/workflows/package_trigger_scheduler.yml
vendored
27
.github/workflows/package_trigger_scheduler.yml
vendored
@@ -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-heimdall/${br}/jenkins-vars.yml)
|
||||
if [[ "${br}" == $(yq -r '.ls_branch' <<< "${JENKINS_VARS}") ]]; then
|
||||
if ! curl -sfX GET https://raw.githubusercontent.com/linuxserver/docker-heimdall/${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-heimdall/${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 \`heimdall_${br}\`; skipping trigger." >> $GITHUB_STEP_SUMMARY
|
||||
skipped_branches="${skipped_branches}${br} "
|
||||
elif [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-heimdall/job/${br}/lastBuild/api/json | jq -r '.building') == "true" ]; then
|
||||
elif [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-heimdall/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-heimdall/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
20
Jenkinsfile
vendored
@@ -585,7 +585,7 @@ pipeline {
|
||||
--label \"org.opencontainers.image.title=Heimdall\" \
|
||||
--label \"org.opencontainers.image.description=[Heimdall](https://heimdall.site) is a way to organise all those links to your most used web sites and web applications in a simple way. Simplicity is the key to Heimdall. Why not use it as your browser start page? It even has the ability to include a search bar using either Google, Bing or DuckDuckGo. \" \
|
||||
--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
|
||||
@@ -614,7 +614,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
|
||||
'''
|
||||
}
|
||||
@@ -649,7 +651,7 @@ pipeline {
|
||||
--label \"org.opencontainers.image.title=Heimdall\" \
|
||||
--label \"org.opencontainers.image.description=[Heimdall](https://heimdall.site) is a way to organise all those links to your most used web sites and web applications in a simple way. Simplicity is the key to Heimdall. Why not use it as your browser start page? It even has the ability to include a search bar using either Google, Bing or DuckDuckGo. \" \
|
||||
--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
|
||||
@@ -678,7 +680,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
|
||||
'''
|
||||
}
|
||||
@@ -706,7 +710,7 @@ pipeline {
|
||||
--label \"org.opencontainers.image.title=Heimdall\" \
|
||||
--label \"org.opencontainers.image.description=[Heimdall](https://heimdall.site) is a way to organise all those links to your most used web sites and web applications in a simple way. Simplicity is the key to Heimdall. Why not use it as your browser start page? It even has the ability to include a search bar using either Google, Bing or DuckDuckGo. \" \
|
||||
--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
|
||||
@@ -735,7 +739,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
|
||||
'''
|
||||
}
|
||||
@@ -978,7 +984,7 @@ pipeline {
|
||||
echo '{"tag_name":"'${META_TAG}'",\
|
||||
"target_commitish": "development",\
|
||||
"name": "'${META_TAG}'",\
|
||||
"body": "**CI Report:**\\n\\n'${CI_URL:-N/A}'\\n\\n**LinuxServer Changes:**\\n\\n'${LS_RELEASE_NOTES}'\\n\\n**'${EXT_REPO}' 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": true}' >> 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'''
|
||||
|
||||
@@ -3,7 +3,7 @@ Hidden Input 1, 0, 0, 0 dotnet
|
||||
alpine-baselayout 3.6.5-r0 apk
|
||||
alpine-baselayout-data 3.6.5-r0 apk
|
||||
alpine-keys 2.4-r1 apk
|
||||
alpine-release 3.20.3-r0 apk
|
||||
alpine-release 3.20.5-r0 apk
|
||||
apache2-utils 2.4.62-r0 apk
|
||||
apk-tools 2.14.4-r1 apk
|
||||
apr 1.7.5-r0 apk
|
||||
@@ -19,19 +19,19 @@ brotli-libs 1.1.0-r2 apk
|
||||
busybox 1.36.1-r29 apk
|
||||
busybox-binsh 1.36.1-r29 apk
|
||||
c-ares 1.33.1-r0 apk
|
||||
ca-certificates 20240705-r0 apk
|
||||
ca-certificates-bundle 20240705-r0 apk
|
||||
ca-certificates 20241121-r1 apk
|
||||
ca-certificates-bundle 20241121-r1 apk
|
||||
carbonphp/carbon-doctrine-types 2.1.0 php-composer
|
||||
catatonit 0.2.0-r0 apk
|
||||
clue/stream-filter v1.7.0 php-composer
|
||||
composer 2.8.4 binary
|
||||
composer/class-map-generator 1.1.0 php-composer
|
||||
composer/pcre 3.1.1 php-composer
|
||||
coreutils 9.5-r1 apk
|
||||
coreutils-env 9.5-r1 apk
|
||||
coreutils-fmt 9.5-r1 apk
|
||||
coreutils-sha512sum 9.5-r1 apk
|
||||
curl 8.11.0-r2 apk
|
||||
coreutils 9.5-r2 apk
|
||||
coreutils-env 9.5-r2 apk
|
||||
coreutils-fmt 9.5-r2 apk
|
||||
coreutils-sha512sum 9.5-r2 apk
|
||||
curl 8.11.1-r0 apk
|
||||
dflydev/dot-access-data v3.0.2 php-composer
|
||||
doctrine/cache 2.2.0 php-composer
|
||||
doctrine/dbal 3.8.2 php-composer
|
||||
@@ -46,8 +46,9 @@ fakerphp/faker v1.23.1 php-composer
|
||||
filp/whoops 2.15.4 php-composer
|
||||
findutils 4.9.0-r5 apk
|
||||
fruitcake/php-cors v1.3.0 php-composer
|
||||
git 2.45.2-r0 apk
|
||||
git-init-template 2.45.2-r0 apk
|
||||
git 2.45.3-r0 apk
|
||||
git-init-template 2.45.3-r0 apk
|
||||
gmp 6.3.0-r1 apk
|
||||
graham-campbell/bounded-cache v2.2.0 php-composer
|
||||
graham-campbell/github v12.4.0 php-composer
|
||||
graham-campbell/manager v5.1.0 php-composer
|
||||
@@ -79,7 +80,7 @@ libattr 2.5.2-r0 apk
|
||||
libbsd 0.12.2-r0 apk
|
||||
libbz2 1.0.8-r6 apk
|
||||
libcrypto3 3.3.2-r1 apk
|
||||
libcurl 8.11.0-r2 apk
|
||||
libcurl 8.11.1-r0 apk
|
||||
libedit 20240517.3.1-r0 apk
|
||||
libexpat 2.6.4-r0 apk
|
||||
libgcc 13.2.1_git20240309-r0 apk
|
||||
@@ -129,30 +130,30 @@ php-http/message 1.16.0 php-composer
|
||||
php-http/message-factory 1.1.0 php-composer
|
||||
php-http/multipart-stream-builder 1.3.0 php-composer
|
||||
php-http/promise 1.3.0 php-composer
|
||||
php83 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-fileinfo 8.3.14-r0 apk
|
||||
php83-fpm 8.3.14-r0 apk
|
||||
php83-iconv 8.3.14-r0 apk
|
||||
php83-intl 8.3.14-r0 apk
|
||||
php83-mbstring 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_pgsql 8.3.14-r0 apk
|
||||
php83-pdo_sqlite 8.3.14-r0 apk
|
||||
php83-phar 8.3.14-r0 apk
|
||||
php83-session 8.3.14-r0 apk
|
||||
php83-simplexml 8.3.14-r0 apk
|
||||
php83-tokenizer 8.3.14-r0 apk
|
||||
php83-xml 8.3.14-r0 apk
|
||||
php83-xmlwriter 8.3.14-r0 apk
|
||||
php83-zip 8.3.14-r0 apk
|
||||
php83 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-fileinfo 8.3.15-r0 apk
|
||||
php83-fpm 8.3.15-r0 apk
|
||||
php83-iconv 8.3.15-r0 apk
|
||||
php83-intl 8.3.15-r0 apk
|
||||
php83-mbstring 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_pgsql 8.3.15-r0 apk
|
||||
php83-pdo_sqlite 8.3.15-r0 apk
|
||||
php83-phar 8.3.15-r0 apk
|
||||
php83-session 8.3.15-r0 apk
|
||||
php83-simplexml 8.3.15-r0 apk
|
||||
php83-tokenizer 8.3.15-r0 apk
|
||||
php83-xml 8.3.15-r0 apk
|
||||
php83-xmlwriter 8.3.15-r0 apk
|
||||
php83-zip 8.3.15-r0 apk
|
||||
phpdocumentor/reflection-common 2.2.0 php-composer
|
||||
phpdocumentor/type-resolver 1.8.0 php-composer
|
||||
phpoption/phpoption 1.9.2 php-composer
|
||||
|
||||
Reference in New Issue
Block a user