|
|
|
|
@ -284,7 +284,7 @@ pipeline {
|
|
|
|
|
# ${TEMPDIR}/unraid/docker-templates: Cloned docker-templates repo to check for logos
|
|
|
|
|
# ${TEMPDIR}/unraid/templates: Cloned templates repo for commiting unraid template changes and pushing back to Github
|
|
|
|
|
git clone --branch master --depth 1 https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/docker-${CONTAINER_NAME}
|
|
|
|
|
docker run --rm -v ${TEMPDIR}/docker-${CONTAINER_NAME}:/tmp -e LOCAL=true ghcr.io/linuxserver/jenkins-builder:latest
|
|
|
|
|
docker run --rm -v ${TEMPDIR}/docker-${CONTAINER_NAME}:/tmp -e LOCAL=true -e PUID=$(id -u) -e PGID=$(id -g) ghcr.io/linuxserver/jenkins-builder:latest
|
|
|
|
|
echo "Starting Stage 1 - Jenkinsfile update"
|
|
|
|
|
if [[ "$(md5sum Jenkinsfile | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile | awk '{ print $1 }')" ]]; then
|
|
|
|
|
mkdir -p ${TEMPDIR}/repo
|
|
|
|
|
@ -304,7 +304,7 @@ pipeline {
|
|
|
|
|
echo "Jenkinsfile is up to date."
|
|
|
|
|
fi
|
|
|
|
|
echo "Starting Stage 2 - Delete old templates"
|
|
|
|
|
OLD_TEMPLATES=".github/ISSUE_TEMPLATE.md .github/ISSUE_TEMPLATE/issue.bug.md .github/ISSUE_TEMPLATE/issue.feature.md .github/workflows/call_invalid_helper.yml .github/workflows/stale.yml Dockerfile.armhf"
|
|
|
|
|
OLD_TEMPLATES=".github/ISSUE_TEMPLATE.md .github/ISSUE_TEMPLATE/issue.bug.md .github/ISSUE_TEMPLATE/issue.feature.md .github/workflows/call_invalid_helper.yml .github/workflows/stale.yml"
|
|
|
|
|
for i in ${OLD_TEMPLATES}; do
|
|
|
|
|
if [[ -f "${i}" ]]; then
|
|
|
|
|
TEMPLATES_TO_DELETE="${i} ${TEMPLATES_TO_DELETE}"
|
|
|
|
|
@ -390,7 +390,9 @@ pipeline {
|
|
|
|
|
echo "Updating Unraid template"
|
|
|
|
|
cd ${TEMPDIR}/unraid/templates/
|
|
|
|
|
GH_TEMPLATES_DEFAULT_BRANCH=$(git remote show origin | grep "HEAD branch:" | sed 's|.*HEAD branch: ||')
|
|
|
|
|
if grep -wq "${CONTAINER_NAME}" ${TEMPDIR}/unraid/templates/unraid/ignore.list; then
|
|
|
|
|
if grep -wq "${CONTAINER_NAME}" ${TEMPDIR}/unraid/templates/unraid/ignore.list && [[ -f ${TEMPDIR}/unraid/templates/unraid/deprecated/${CONTAINER_NAME}.xml ]]; then
|
|
|
|
|
echo "Image is on the ignore list, and already in the deprecation folder."
|
|
|
|
|
elif grep -wq "${CONTAINER_NAME}" ${TEMPDIR}/unraid/templates/unraid/ignore.list; then
|
|
|
|
|
echo "Image is on the ignore list, marking Unraid template as deprecated"
|
|
|
|
|
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml ${TEMPDIR}/unraid/templates/unraid/
|
|
|
|
|
git add -u unraid/${CONTAINER_NAME}.xml
|
|
|
|
|
@ -532,6 +534,7 @@ pipeline {
|
|
|
|
|
--label \"org.opencontainers.image.title=Orcaslicer\" \
|
|
|
|
|
--label \"org.opencontainers.image.description=[Orca Slicer](https://github.com/SoftFever/OrcaSlicer) is an open source slicer for FDM printers. OrcaSlicer is fork of Bambu Studio, it was previously known as BambuStudio-SoftFever, Bambu Studio is forked from PrusaSlicer by Prusa Research, which is from Slic3r by Alessandro Ranellucci and the RepRap community\" \
|
|
|
|
|
--no-cache --pull -t ${IMAGE}:${META_TAG} --platform=linux/amd64 \
|
|
|
|
|
--provenance=false --sbom=false \
|
|
|
|
|
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
@ -563,6 +566,7 @@ pipeline {
|
|
|
|
|
--label \"org.opencontainers.image.title=Orcaslicer\" \
|
|
|
|
|
--label \"org.opencontainers.image.description=[Orca Slicer](https://github.com/SoftFever/OrcaSlicer) is an open source slicer for FDM printers. OrcaSlicer is fork of Bambu Studio, it was previously known as BambuStudio-SoftFever, Bambu Studio is forked from PrusaSlicer by Prusa Research, which is from Slic3r by Alessandro Ranellucci and the RepRap community\" \
|
|
|
|
|
--no-cache --pull -t ${IMAGE}:amd64-${META_TAG} --platform=linux/amd64 \
|
|
|
|
|
--provenance=false --sbom=false \
|
|
|
|
|
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
@ -591,6 +595,7 @@ pipeline {
|
|
|
|
|
--label \"org.opencontainers.image.title=Orcaslicer\" \
|
|
|
|
|
--label \"org.opencontainers.image.description=[Orca Slicer](https://github.com/SoftFever/OrcaSlicer) is an open source slicer for FDM printers. OrcaSlicer is fork of Bambu Studio, it was previously known as BambuStudio-SoftFever, Bambu Studio is forked from PrusaSlicer by Prusa Research, which is from Slic3r by Alessandro Ranellucci and the RepRap community\" \
|
|
|
|
|
--no-cache --pull -f Dockerfile.aarch64 -t ${IMAGE}:arm64v8-${META_TAG} --platform=linux/arm64 \
|
|
|
|
|
--provenance=false --sbom=false \
|
|
|
|
|
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
|
|
|
|
|
sh "docker tag ${IMAGE}:arm64v8-${META_TAG} ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}"
|
|
|
|
|
retry(5) {
|
|
|
|
|
@ -617,7 +622,7 @@ pipeline {
|
|
|
|
|
sh '''#! /bin/bash
|
|
|
|
|
set -e
|
|
|
|
|
TEMPDIR=$(mktemp -d)
|
|
|
|
|
if [ "${MULTIARCH}" == "true" ] && [ "${PACKAGE_CHECK}" == "false" ]; then
|
|
|
|
|
if [ "${MULTIARCH}" == "true" ] && [ "${PACKAGE_CHECK}" != "true" ]; then
|
|
|
|
|
LOCAL_CONTAINER=${IMAGE}:amd64-${META_TAG}
|
|
|
|
|
else
|
|
|
|
|
LOCAL_CONTAINER=${IMAGE}:${META_TAG}
|
|
|
|
|
@ -714,7 +719,7 @@ pipeline {
|
|
|
|
|
--shm-size=1gb \
|
|
|
|
|
-v /var/run/docker.sock:/var/run/docker.sock \
|
|
|
|
|
-e IMAGE=\"${IMAGE}\" \
|
|
|
|
|
-e DELAY_START=\"${CI_DELAY}\" \
|
|
|
|
|
-e DOCKER_LOGS_TIMEOUT=\"${CI_DELAY}\" \
|
|
|
|
|
-e TAGS=\"${CI_TAGS}\" \
|
|
|
|
|
-e META_TAG=\"${META_TAG}\" \
|
|
|
|
|
-e PORT=\"${CI_PORT}\" \
|
|
|
|
|
@ -822,35 +827,13 @@ pipeline {
|
|
|
|
|
docker push ${MANIFESTIMAGE}:amd64-${SEMVER}
|
|
|
|
|
docker push ${MANIFESTIMAGE}:arm64v8-${SEMVER}
|
|
|
|
|
fi
|
|
|
|
|
docker manifest push --purge ${MANIFESTIMAGE}:latest || :
|
|
|
|
|
docker manifest create ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm64v8-latest
|
|
|
|
|
docker manifest annotate ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:arm64v8-latest --os linux --arch arm64 --variant v8
|
|
|
|
|
docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG} || :
|
|
|
|
|
docker manifest create ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
|
|
|
|
|
docker manifest annotate ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} --os linux --arch arm64 --variant v8
|
|
|
|
|
docker manifest push --purge ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} || :
|
|
|
|
|
docker manifest create ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
|
|
|
|
|
docker manifest annotate ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} --os linux --arch arm64 --variant v8
|
|
|
|
|
done
|
|
|
|
|
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}:${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 [ -n "${SEMVER}" ]; then
|
|
|
|
|
docker manifest push --purge ${MANIFESTIMAGE}:${SEMVER} || :
|
|
|
|
|
docker manifest create ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
|
|
|
|
|
docker manifest annotate ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} --os linux --arch arm64 --variant v8
|
|
|
|
|
fi
|
|
|
|
|
token=$(curl -sX GET "https://ghcr.io/token?scope=repository%3Alinuxserver%2F${CONTAINER_NAME}%3Apull" | jq -r '.token')
|
|
|
|
|
digest=$(curl -s \
|
|
|
|
|
--header "Accept: application/vnd.docker.distribution.manifest.v2+json" \
|
|
|
|
|
--header "Authorization: Bearer ${token}" \
|
|
|
|
|
"https://ghcr.io/v2/linuxserver/${CONTAINER_NAME}/manifests/arm32v7-latest")
|
|
|
|
|
if [[ $(echo "$digest" | jq -r '.layers') != "null" ]]; then
|
|
|
|
|
docker manifest push --purge ${MANIFESTIMAGE}:arm32v7-latest || :
|
|
|
|
|
docker manifest create ${MANIFESTIMAGE}:arm32v7-latest ${MANIFESTIMAGE}:amd64-latest
|
|
|
|
|
docker manifest push --purge ${MANIFESTIMAGE}:arm32v7-latest
|
|
|
|
|
fi
|
|
|
|
|
docker manifest push --purge ${MANIFESTIMAGE}:latest
|
|
|
|
|
docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG}
|
|
|
|
|
docker manifest push --purge ${MANIFESTIMAGE}:${EXT_RELEASE_TAG}
|
|
|
|
|
if [ -n "${SEMVER}" ]; then
|
|
|
|
|
docker manifest push --purge ${MANIFESTIMAGE}:${SEMVER}
|
|
|
|
|
docker buildx imagetools create -t ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
|
|
|
|
|
fi
|
|
|
|
|
done
|
|
|
|
|
'''
|
|
|
|
|
|