-
-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
d2b1afb
commit 82bf41d
Showing
1 changed file
with
73 additions
and
19 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -58,7 +58,7 @@ pipeline { | |
env.CODE_URL = 'https://github.com/' + env.LS_USER + '/' + env.LS_REPO + '/commit/' + env.GIT_COMMIT | ||
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.DOCKERHUB_IMAGE + '/tags/' | ||
env.PULL_REQUEST = env.CHANGE_ID | ||
env.TEMPLATED_FILES = 'Jenkinsfile README.md LICENSE ./.github/CONTRIBUTING.md ./.github/FUNDING.yml ./.github/ISSUE_TEMPLATE/config.yml ./.github/ISSUE_TEMPLATE/issue.bug.md ./.github/ISSUE_TEMPLATE/issue.feature.md ./.github/PULL_REQUEST_TEMPLATE.md ./.github/workflows/greetings.yml ./.github/workflows/stale.yml ./.github/workflows/package_trigger.yml ./.github/workflows/package_trigger_scheduler.yml ./.github/workflows/external_trigger.yml ./.github/workflows/external_trigger_scheduler.yml' | ||
env.TEMPLATED_FILES = 'Jenkinsfile README.md LICENSE ./.github/CONTRIBUTING.md ./.github/FUNDING.yml ./.github/ISSUE_TEMPLATE/config.yml ./.github/ISSUE_TEMPLATE/issue.bug.md ./.github/ISSUE_TEMPLATE/issue.feature.md ./.github/PULL_REQUEST_TEMPLATE.md ./.github/workflows/external_trigger_scheduler.yml ./.github/workflows/greetings.yml ./.github/workflows/package_trigger_scheduler.yml ./.github/workflows/stale.yml ./.github/workflows/external_trigger.yml ./.github/workflows/package_trigger.yml' | ||
} | ||
script{ | ||
env.LS_RELEASE_NUMBER = sh( | ||
|
@@ -106,7 +106,7 @@ pipeline { | |
steps{ | ||
script{ | ||
env.EXT_RELEASE = sh( | ||
script: '''curl -s https://api.github.com/repos/${EXT_USER}/${EXT_REPO}/commits/${EXT_GIT_BRANCH} | jq -r '. | .sha' | cut -c1-8 ''', | ||
script: '''curl -H "Authorization: token ${GITHUB_TOKEN}" -s https://api.github.com/repos/${EXT_USER}/${EXT_REPO}/commits/${EXT_GIT_BRANCH} | jq -r '. | .sha' | cut -c1-8 ''', | ||
returnStdout: true).trim() | ||
} | ||
} | ||
|
@@ -317,22 +317,24 @@ pipeline { | |
git commit -m 'Bot Updating Documentation' | ||
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/docker-documentation.git --all | ||
fi | ||
mkdir -p ${TEMPDIR}/unraid | ||
mkdir -p ${TEMPDIR}/unraid | ||
git clone https://github.com/linuxserver/docker-templates.git ${TEMPDIR}/unraid/docker-templates | ||
git clone https://github.com/linuxserver/templates.git ${TEMPDIR}/unraid/templates | ||
if [[ -f ${TEMPDIR}/unraid/docker-templates/linuxserver.io/img/${CONTAINER_NAME}-icon.png ]]; then | ||
sed -i "s|master/linuxserver.io/img/linuxserver-ls-logo.png|master/linuxserver.io/img/${CONTAINER_NAME}-icon.png|" ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml | ||
if [[ -f ${TEMPDIR}/unraid/docker-templates/linuxserver.io/img/${CONTAINER_NAME}-logo.png ]]; then | ||
sed -i "s|master/linuxserver.io/img/linuxserver-ls-logo.png|master/linuxserver.io/img/${CONTAINER_NAME}-logo.png|" ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml | ||
fi | ||
if [[ ("${BRANCH_NAME}" == "master") || ("${BRANCH_NAME}" == "main") ]] && [[ (! -f ${TEMPDIR}/unraid/templates/unraid/${CONTAINER_NAME}.xml) || ("$(md5sum ${TEMPDIR}/unraid/templates/unraid/${CONTAINER_NAME}.xml | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml | awk '{ print $1 }')") ]]; then | ||
cd ${TEMPDIR}/unraid/templates/ | ||
if grep -wq "${CONTAINER_NAME}" ${TEMPDIR}/unraid/templates/unraid/ignore.list; then | ||
echo "Image is on the ignore list, skipping Unraid template upload" | ||
echo "Image is on the ignore list, removing Unraid template" | ||
git rm unraid/${CONTAINER_NAME}.xml || : | ||
git commit -m 'Bot Removing Deprecated Unraid Template' || : | ||
else | ||
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml ${TEMPDIR}/unraid/templates/unraid/ | ||
cd ${TEMPDIR}/unraid/templates/ | ||
git add unraid/${CONTAINER_NAME}.xml | ||
git commit -m 'Bot Updating Unraid Template' | ||
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/templates.git --all | ||
fi | ||
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/templates.git --all | ||
fi | ||
rm -Rf ${TEMPDIR}''' | ||
script{ | ||
|
@@ -389,8 +391,21 @@ pipeline { | |
} | ||
steps { | ||
echo "Running on node: ${NODE_NAME}" | ||
sh "docker build --no-cache --pull -t ${IMAGE}:${META_TAG} \ | ||
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ." | ||
sh "docker build \ | ||
--label \"org.opencontainers.image.created=${GITHUB_DATE}\" \ | ||
--label \"org.opencontainers.image.authors=linuxserver.io\" \ | ||
--label \"org.opencontainers.image.url=https://github.com/linuxserver/docker-quassel-web/packages\" \ | ||
--label \"org.opencontainers.image.documentation=https://docs.linuxserver.io/images/docker-quassel-web\" \ | ||
--label \"org.opencontainers.image.source=https://github.com/linuxserver/docker-quassel-web\" \ | ||
--label \"org.opencontainers.image.version=${EXT_RELEASE_CLEAN}-ls${LS_TAG_NUMBER}\" \ | ||
--label \"org.opencontainers.image.revision=${COMMIT_SHA}\" \ | ||
--label \"org.opencontainers.image.vendor=linuxserver.io\" \ | ||
--label \"org.opencontainers.image.licenses=GPL-3.0-only\" \ | ||
--label \"org.opencontainers.image.ref.name=${COMMIT_SHA}\" \ | ||
--label \"org.opencontainers.image.title=Quassel-web\" \ | ||
--label \"org.opencontainers.image.description=[Quassel-web](https://github.com/magne4000/quassel-webserver) is a web client for Quassel. Note that a Quassel-Core instance is required, we have a container available [here.](https://hub.docker.com/r/linuxserver/quassel-core/) \" \ | ||
--no-cache --pull -t ${IMAGE}:${META_TAG} \ | ||
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ." | ||
} | ||
} | ||
// Build MultiArch Docker containers for push to LS Repo | ||
|
@@ -403,8 +418,21 @@ pipeline { | |
stage('Build X86') { | ||
steps { | ||
echo "Running on node: ${NODE_NAME}" | ||
sh "docker build --no-cache --pull -t ${IMAGE}:amd64-${META_TAG} \ | ||
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ." | ||
sh "docker build \ | ||
--label \"org.opencontainers.image.created=${GITHUB_DATE}\" \ | ||
--label \"org.opencontainers.image.authors=linuxserver.io\" \ | ||
--label \"org.opencontainers.image.url=https://github.com/linuxserver/docker-quassel-web/packages\" \ | ||
--label \"org.opencontainers.image.documentation=https://docs.linuxserver.io/images/docker-quassel-web\" \ | ||
--label \"org.opencontainers.image.source=https://github.com/linuxserver/docker-quassel-web\" \ | ||
--label \"org.opencontainers.image.version=${EXT_RELEASE_CLEAN}-ls${LS_TAG_NUMBER}\" \ | ||
--label \"org.opencontainers.image.revision=${COMMIT_SHA}\" \ | ||
--label \"org.opencontainers.image.vendor=linuxserver.io\" \ | ||
--label \"org.opencontainers.image.licenses=GPL-3.0-only\" \ | ||
--label \"org.opencontainers.image.ref.name=${COMMIT_SHA}\" \ | ||
--label \"org.opencontainers.image.title=Quassel-web\" \ | ||
--label \"org.opencontainers.image.description=[Quassel-web](https://github.com/magne4000/quassel-webserver) is a web client for Quassel. Note that a Quassel-Core instance is required, we have a container available [here.](https://hub.docker.com/r/linuxserver/quassel-core/) \" \ | ||
--no-cache --pull -t ${IMAGE}:amd64-${META_TAG} \ | ||
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ." | ||
} | ||
} | ||
stage('Build ARMHF') { | ||
|
@@ -417,8 +445,21 @@ pipeline { | |
sh '''#! /bin/bash | ||
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin | ||
''' | ||
sh "docker build --no-cache --pull -f Dockerfile.armhf -t ${IMAGE}:arm32v7-${META_TAG} \ | ||
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ." | ||
sh "docker build \ | ||
--label \"org.opencontainers.image.created=${GITHUB_DATE}\" \ | ||
--label \"org.opencontainers.image.authors=linuxserver.io\" \ | ||
--label \"org.opencontainers.image.url=https://github.com/linuxserver/docker-quassel-web/packages\" \ | ||
--label \"org.opencontainers.image.documentation=https://docs.linuxserver.io/images/docker-quassel-web\" \ | ||
--label \"org.opencontainers.image.source=https://github.com/linuxserver/docker-quassel-web\" \ | ||
--label \"org.opencontainers.image.version=${EXT_RELEASE_CLEAN}-ls${LS_TAG_NUMBER}\" \ | ||
--label \"org.opencontainers.image.revision=${COMMIT_SHA}\" \ | ||
--label \"org.opencontainers.image.vendor=linuxserver.io\" \ | ||
--label \"org.opencontainers.image.licenses=GPL-3.0-only\" \ | ||
--label \"org.opencontainers.image.ref.name=${COMMIT_SHA}\" \ | ||
--label \"org.opencontainers.image.title=Quassel-web\" \ | ||
--label \"org.opencontainers.image.description=[Quassel-web](https://github.com/magne4000/quassel-webserver) is a web client for Quassel. Note that a Quassel-Core instance is required, we have a container available [here.](https://hub.docker.com/r/linuxserver/quassel-core/) \" \ | ||
--no-cache --pull -f Dockerfile.armhf -t ${IMAGE}:arm32v7-${META_TAG} \ | ||
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ." | ||
sh "docker tag ${IMAGE}:arm32v7-${META_TAG} ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}" | ||
retry(5) { | ||
sh "docker push ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}" | ||
|
@@ -438,8 +479,21 @@ pipeline { | |
sh '''#! /bin/bash | ||
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin | ||
''' | ||
sh "docker build --no-cache --pull -f Dockerfile.aarch64 -t ${IMAGE}:arm64v8-${META_TAG} \ | ||
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ." | ||
sh "docker build \ | ||
--label \"org.opencontainers.image.created=${GITHUB_DATE}\" \ | ||
--label \"org.opencontainers.image.authors=linuxserver.io\" \ | ||
--label \"org.opencontainers.image.url=https://github.com/linuxserver/docker-quassel-web/packages\" \ | ||
--label \"org.opencontainers.image.documentation=https://docs.linuxserver.io/images/docker-quassel-web\" \ | ||
--label \"org.opencontainers.image.source=https://github.com/linuxserver/docker-quassel-web\" \ | ||
--label \"org.opencontainers.image.version=${EXT_RELEASE_CLEAN}-ls${LS_TAG_NUMBER}\" \ | ||
--label \"org.opencontainers.image.revision=${COMMIT_SHA}\" \ | ||
--label \"org.opencontainers.image.vendor=linuxserver.io\" \ | ||
--label \"org.opencontainers.image.licenses=GPL-3.0-only\" \ | ||
--label \"org.opencontainers.image.ref.name=${COMMIT_SHA}\" \ | ||
--label \"org.opencontainers.image.title=Quassel-web\" \ | ||
--label \"org.opencontainers.image.description=[Quassel-web](https://github.com/magne4000/quassel-webserver) is a web client for Quassel. Note that a Quassel-Core instance is required, we have a container available [here.](https://hub.docker.com/r/linuxserver/quassel-core/) \" \ | ||
--no-cache --pull -f Dockerfile.aarch64 -t ${IMAGE}:arm64v8-${META_TAG} \ | ||
--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) { | ||
sh "docker push ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}" | ||
|
@@ -746,11 +800,11 @@ pipeline { | |
"tagger": {"name": "LinuxServer Jenkins","email": "[email protected]","date": "'${GITHUB_DATE}'"}}' ''' | ||
echo "Pushing New release for Tag" | ||
sh '''#! /bin/bash | ||
curl -s https://api.github.com/repos/${EXT_USER}/${EXT_REPO}/commits/${EXT_GIT_BRANCH} | jq '. | .commit.message' | sed 's:^.\\(.*\\).$:\\1:' > releasebody.json | ||
curl -H "Authorization: token ${GITHUB_TOKEN}" -s https://api.github.com/repos/${EXT_USER}/${EXT_REPO}/commits/${EXT_RELEASE_CLEAN} | jq '.commit.message' | sed 's:^.\\(.*\\).$:\\1:' > releasebody.json | ||
echo '{"tag_name":"'${META_TAG}'",\ | ||
"target_commitish": "master",\ | ||
"name": "'${META_TAG}'",\ | ||
"body": "**LinuxServer Changes:**\\n\\n'${LS_RELEASE_NOTES}'\\n**'${EXT_REPO}' Changes:**\\n\\n' > start | ||
"body": "**LinuxServer Changes:**\\n\\n'${LS_RELEASE_NOTES}'\\n\\n**'${EXT_REPO}' 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''' | ||
|
@@ -775,7 +829,7 @@ pipeline { | |
set -e | ||
TEMPDIR=$(mktemp -d) | ||
docker pull ghcr.io/linuxserver/jenkins-builder:latest | ||
docker run --rm -e CONTAINER_NAME=${CONTAINER_NAME} -e GITHUB_BRANCH="${BRANCH_NAME}" -v ${TEMPDIR}:/ansible/jenkins ghcr.io/linuxserver/jenkins-builder:latest | ||
docker run --rm -e CONTAINER_NAME=${CONTAINER_NAME} -e GITHUB_BRANCH="${BRANCH_NAME}" -v ${TEMPDIR}:/ansible/jenkins ghcr.io/linuxserver/jenkins-builder:latest | ||
docker pull ghcr.io/linuxserver/readme-sync | ||
docker run --rm=true \ | ||
-e DOCKERHUB_USERNAME=$DOCKERUSER \ | ||
|