This repository has been archived by the owner on Feb 4, 2022. It is now read-only.
-
-
Notifications
You must be signed in to change notification settings - Fork 7
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
eeba1fb
commit 0745686
Showing
1 changed file
with
61 additions
and
16 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 |
---|---|---|
|
@@ -241,22 +241,67 @@ pipeline { | |
TEMPDIR=$(mktemp -d) | ||
docker pull ghcr.io/linuxserver/jenkins-builder:latest | ||
docker run --rm -e CONTAINER_NAME=${CONTAINER_NAME} -e GITHUB_BRANCH=master -v ${TEMPDIR}:/ansible/jenkins ghcr.io/linuxserver/jenkins-builder:latest | ||
# Stage 1 - Jenkinsfile update | ||
if [[ "$(md5sum Jenkinsfile | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile | awk '{ print $1 }')" ]]; then | ||
mkdir -p ${TEMPDIR}/repo | ||
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO} | ||
cd ${TEMPDIR}/repo/${LS_REPO} | ||
git checkout -f master | ||
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile ${TEMPDIR}/repo/${LS_REPO}/ | ||
git add Jenkinsfile | ||
git commit -m 'Bot Updating Templated Files' | ||
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git --all | ||
echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER} | ||
echo "Updating Jenkinsfile" | ||
rm -Rf ${TEMPDIR} | ||
exit 0 | ||
else | ||
echo "Jenkinsfile is up to date." | ||
fi | ||
# Stage 2 - Delete old templates | ||
OLD_TEMPLATES=".github/ISSUE_TEMPLATE.md" | ||
for i in ${OLD_TEMPLATES}; do | ||
if [[ -f "${i}" ]]; then | ||
TEMPLATES_TO_DELETE="${i} ${TEMPLATES_TO_DELETE}" | ||
fi | ||
done | ||
if [[ -n "${TEMPLATES_TO_DELETE}" ]]; then | ||
mkdir -p ${TEMPDIR}/repo | ||
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO} | ||
cd ${TEMPDIR}/repo/${LS_REPO} | ||
git checkout -f master | ||
cd ${TEMPDIR}/docker-${CONTAINER_NAME} | ||
for i in ${TEMPLATES_TO_DELETE}; do | ||
git rm "${i}" | ||
done | ||
git commit -m 'Bot Updating Templated Files' | ||
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git --all | ||
echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER} | ||
echo "Deleting old templates" | ||
rm -Rf ${TEMPDIR} | ||
exit 0 | ||
else | ||
echo "No templates to delete" | ||
fi | ||
# Stage 3 - Update templates | ||
CURRENTHASH=$(grep -hs ^ ${TEMPLATED_FILES} | md5sum | cut -c1-8) | ||
cd ${TEMPDIR}/docker-${CONTAINER_NAME} | ||
NEWHASH=$(grep -hs ^ ${TEMPLATED_FILES} | md5sum | cut -c1-8) | ||
if [[ "${CURRENTHASH}" != "${NEWHASH}" ]]; then | ||
if [[ "${CURRENTHASH}" != "${NEWHASH}" ]] || ! grep -q '.jenkins-external' "${WORKSPACE}/.gitignore" 2>/dev/null; then | ||
mkdir -p ${TEMPDIR}/repo | ||
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO} | ||
cd ${TEMPDIR}/repo/${LS_REPO} | ||
git checkout -f master | ||
cd ${TEMPDIR}/docker-${CONTAINER_NAME} | ||
mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/workflows | ||
mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/ISSUE_TEMPLATE | ||
rm -f ${TEMPDIR}/repo/${LS_REPO}/.github/ISSUE_TEMPLATE.md | ||
cp --parents ${TEMPLATED_FILES} ${TEMPDIR}/repo/${LS_REPO}/ || : | ||
cd ${TEMPDIR}/repo/${LS_REPO}/ | ||
if ! grep -q '.jenkins-external' .gitignore 2>/dev/null; then | ||
echo ".jenkins-external" >> .gitignore | ||
git add .gitignore | ||
fi | ||
git add ${TEMPLATED_FILES} | ||
git rm .github/ISSUE_TEMPLATE.md || : | ||
git commit -m 'Bot Updating Templated Files' | ||
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git --all | ||
echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER} | ||
|
@@ -265,8 +310,8 @@ pipeline { | |
fi | ||
mkdir -p ${TEMPDIR}/gitbook | ||
git clone https://github.com/linuxserver/docker-documentation.git ${TEMPDIR}/gitbook/docker-documentation | ||
if [[ ("${BRANCH_NAME}" == "master") || ("${BRANCH_NAME}" == "main") ]] && [[ (! -f ${TEMPDIR}/gitbook/docker-documentation/images/docker-${CONTAINER_NAME}.md) || ("$(md5sum ${TEMPDIR}/gitbook/docker-documentation/images/docker-${CONTAINER_NAME}.md | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/docker-${CONTAINER_NAME}.md | awk '{ print $1 }')") ]]; then | ||
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/docker-${CONTAINER_NAME}.md ${TEMPDIR}/gitbook/docker-documentation/images/ | ||
if [[ ("${BRANCH_NAME}" == "master") || ("${BRANCH_NAME}" == "main") ]] && [[ (! -f ${TEMPDIR}/gitbook/docker-documentation/images/docker-${CONTAINER_NAME}.md) || ("$(md5sum ${TEMPDIR}/gitbook/docker-documentation/images/docker-${CONTAINER_NAME}.md | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/docker-${CONTAINER_NAME}.md | awk '{ print $1 }')") ]]; then | ||
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/docker-${CONTAINER_NAME}.md ${TEMPDIR}/gitbook/docker-documentation/images/ | ||
cd ${TEMPDIR}/gitbook/docker-documentation/ | ||
git add images/docker-${CONTAINER_NAME}.md | ||
git commit -m 'Bot Updating Documentation' | ||
|
@@ -276,13 +321,13 @@ pipeline { | |
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}/${CONTAINER_NAME}.xml | ||
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 | ||
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}/${CONTAINER_NAME}.xml | awk '{ print $1 }')") ]]; then | ||
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 | ||
if grep -wq "${CONTAINER_NAME}" ${TEMPDIR}/unraid/templates/unraid/ignore.list; then | ||
echo "Image is on the ignore list, skipping Unraid template upload" | ||
else | ||
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/${CONTAINER_NAME}.xml ${TEMPDIR}/unraid/templates/unraid/ | ||
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' | ||
|
@@ -522,7 +567,7 @@ pipeline { | |
} | ||
sh '''#! /bin/bash | ||
set -e | ||
docker pull ghcr.io/linuxserver/lsiodev-ci:latest | ||
docker pull ghcr.io/linuxserver/ci:latest | ||
if [ "${MULTIARCH}" == "true" ]; then | ||
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} | ||
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} | ||
|
@@ -547,7 +592,7 @@ pipeline { | |
-e WEB_PATH=\"${CI_WEBPATH}\" \ | ||
-e DO_REGION="ams3" \ | ||
-e DO_BUCKET="lsio-ci" \ | ||
-t ghcr.io/linuxserver/lsiodev-ci:latest \ | ||
-t ghcr.io/linuxserver/ci:latest \ | ||
python /ci/ci.py''' | ||
} | ||
} | ||
|
@@ -692,19 +737,19 @@ pipeline { | |
environment name: 'EXIT_STATUS', value: '' | ||
} | ||
steps { | ||
echo "Pushing New tag for current commit ${EXT_RELEASE_CLEAN}-ls${LS_TAG_NUMBER}" | ||
echo "Pushing New tag for current commit ${META_TAG}" | ||
sh '''curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/git/tags \ | ||
-d '{"tag":"'${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}'",\ | ||
-d '{"tag":"'${META_TAG}'",\ | ||
"object": "'${COMMIT_SHA}'",\ | ||
"message": "Tagging Release '${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}' to master",\ | ||
"type": "commit",\ | ||
"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}/releases/latest | jq '. |.body' | sed 's:^.\\(.*\\).$:\\1:' > releasebody.json | ||
echo '{"tag_name":"'${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}'",\ | ||
echo '{"tag_name":"'${META_TAG}'",\ | ||
"target_commitish": "master",\ | ||
"name": "'${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}'",\ | ||
"name": "'${META_TAG}'",\ | ||
"body": "**LinuxServer Changes:**\\n\\n'${LS_RELEASE_NOTES}'\\n**'${EXT_REPO}' Changes:**\\n\\n' > start | ||
printf '","draft": false,"prerelease": false}' >> releasebody.json | ||
paste -d'\\0' start releasebody.json > releasebody.json.done | ||
|
@@ -731,15 +776,15 @@ pipeline { | |
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 pull ghcr.io/linuxserver/lsiodev-readme-sync | ||
docker pull ghcr.io/linuxserver/readme-sync | ||
docker run --rm=true \ | ||
-e DOCKERHUB_USERNAME=$DOCKERUSER \ | ||
-e DOCKERHUB_PASSWORD=$DOCKERPASS \ | ||
-e GIT_REPOSITORY=${LS_USER}/${LS_REPO} \ | ||
-e DOCKER_REPOSITORY=${IMAGE} \ | ||
-e GIT_BRANCH=master \ | ||
-v ${TEMPDIR}/docker-${CONTAINER_NAME}:/mnt \ | ||
ghcr.io/linuxserver/lsiodev-readme-sync bash -c 'node sync' | ||
ghcr.io/linuxserver/readme-sync bash -c 'node sync' | ||
rm -Rf ${TEMPDIR} ''' | ||
} | ||
} | ||
|