mirror of
				https://github.com/linuxserver/docker-heimdall.git
				synced 2025-10-31 13:07:39 +09:00 
			
		
		
		
	Bot Updating Templated Files
This commit is contained in:
		
							
								
								
									
										295
									
								
								Jenkinsfile
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										295
									
								
								Jenkinsfile
									
									
									
									
										vendored
									
									
								
							| @@ -16,6 +16,7 @@ pipeline { | |||||||
|     GITHUB_TOKEN=credentials('498b4638-2d02-4ce5-832d-8a57d01d97ab') |     GITHUB_TOKEN=credentials('498b4638-2d02-4ce5-832d-8a57d01d97ab') | ||||||
|     GITLAB_TOKEN=credentials('b6f0f1dd-6952-4cf6-95d1-9c06380283f0') |     GITLAB_TOKEN=credentials('b6f0f1dd-6952-4cf6-95d1-9c06380283f0') | ||||||
|     GITLAB_NAMESPACE=credentials('gitlab-namespace-id') |     GITLAB_NAMESPACE=credentials('gitlab-namespace-id') | ||||||
|  |     DOCKERHUB_TOKEN=credentials('docker-hub-ci-pat') | ||||||
|     EXT_GIT_BRANCH = '2.x' |     EXT_GIT_BRANCH = '2.x' | ||||||
|     EXT_USER = 'linuxserver' |     EXT_USER = 'linuxserver' | ||||||
|     EXT_REPO = 'Heimdall' |     EXT_REPO = 'Heimdall' | ||||||
| @@ -61,11 +62,16 @@ pipeline { | |||||||
|           env.COMMIT_SHA = sh( |           env.COMMIT_SHA = sh( | ||||||
|             script: '''git rev-parse HEAD''', |             script: '''git rev-parse HEAD''', | ||||||
|             returnStdout: true).trim() |             returnStdout: true).trim() | ||||||
|  |           env.GH_DEFAULT_BRANCH = sh( | ||||||
|  |             script: '''git remote show origin | grep "HEAD branch:" | sed 's|.*HEAD branch: ||' ''', | ||||||
|  |             returnStdout: true).trim() | ||||||
|           env.CODE_URL = 'https://github.com/' + env.LS_USER + '/' + env.LS_REPO + '/commit/' + env.GIT_COMMIT |           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.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.DOCKERHUB_IMAGE + '/tags/' | ||||||
|           env.PULL_REQUEST = env.CHANGE_ID |           env.PULL_REQUEST = env.CHANGE_ID | ||||||
|           env.TEMPLATED_FILES = 'Jenkinsfile README.md LICENSE .editorconfig ./.github/CONTRIBUTING.md ./.github/FUNDING.yml ./.github/ISSUE_TEMPLATE/config.yml ./.github/ISSUE_TEMPLATE/issue.bug.yml ./.github/ISSUE_TEMPLATE/issue.feature.yml ./.github/PULL_REQUEST_TEMPLATE.md ./.github/workflows/external_trigger_scheduler.yml ./.github/workflows/greetings.yml ./.github/workflows/package_trigger_scheduler.yml ./.github/workflows/call_issue_pr_tracker.yml ./.github/workflows/call_issues_cron.yml ./.github/workflows/permissions.yml ./.github/workflows/external_trigger.yml ./.github/workflows/package_trigger.yml' |           env.TEMPLATED_FILES = 'Jenkinsfile README.md LICENSE .editorconfig ./.github/CONTRIBUTING.md ./.github/FUNDING.yml ./.github/ISSUE_TEMPLATE/config.yml ./.github/ISSUE_TEMPLATE/issue.bug.yml ./.github/ISSUE_TEMPLATE/issue.feature.yml ./.github/PULL_REQUEST_TEMPLATE.md ./.github/workflows/external_trigger_scheduler.yml ./.github/workflows/greetings.yml ./.github/workflows/package_trigger_scheduler.yml ./.github/workflows/call_issue_pr_tracker.yml ./.github/workflows/call_issues_cron.yml ./.github/workflows/permissions.yml ./.github/workflows/external_trigger.yml ./.github/workflows/package_trigger.yml' | ||||||
|         } |         } | ||||||
|  |         sh '''#! /bin/bash | ||||||
|  |               echo "The default github branch detected as ${GH_DEFAULT_BRANCH}" ''' | ||||||
|         script{ |         script{ | ||||||
|           env.LS_RELEASE_NUMBER = sh( |           env.LS_RELEASE_NUMBER = sh( | ||||||
|             script: '''echo ${LS_RELEASE} |sed 's/^.*-ls//g' ''', |             script: '''echo ${LS_RELEASE} |sed 's/^.*-ls//g' ''', | ||||||
| @@ -130,7 +136,7 @@ pipeline { | |||||||
|       steps{ |       steps{ | ||||||
|         script{ |         script{ | ||||||
|           env.EXT_RELEASE_CLEAN = sh( |           env.EXT_RELEASE_CLEAN = sh( | ||||||
|             script: '''echo ${EXT_RELEASE} | sed 's/[~,%@+;:/]//g' ''', |             script: '''echo ${EXT_RELEASE} | sed 's/[~,%@+;:/ ]//g' ''', | ||||||
|             returnStdout: true).trim() |             returnStdout: true).trim() | ||||||
|  |  | ||||||
|           def semver = env.EXT_RELEASE_CLEAN =~ /(\d+)\.(\d+)\.(\d+)/ |           def semver = env.EXT_RELEASE_CLEAN =~ /(\d+)\.(\d+)\.(\d+)/ | ||||||
| @@ -148,7 +154,7 @@ pipeline { | |||||||
|           } |           } | ||||||
|  |  | ||||||
|           if (env.SEMVER != null) { |           if (env.SEMVER != null) { | ||||||
|             if (BRANCH_NAME != "master" && BRANCH_NAME != "main") { |             if (BRANCH_NAME != "${env.GH_DEFAULT_BRANCH}") { | ||||||
|               env.SEMVER = "${env.SEMVER}-${BRANCH_NAME}" |               env.SEMVER = "${env.SEMVER}-${BRANCH_NAME}" | ||||||
|             } |             } | ||||||
|             println("SEMVER: ${env.SEMVER}") |             println("SEMVER: ${env.SEMVER}") | ||||||
| @@ -266,115 +272,150 @@ pipeline { | |||||||
|         } |         } | ||||||
|       } |       } | ||||||
|       steps { |       steps { | ||||||
|         sh '''#! /bin/bash |         withCredentials([ | ||||||
|               set -e |           [ | ||||||
|               TEMPDIR=$(mktemp -d) |             $class: 'UsernamePasswordMultiBinding', | ||||||
|               docker pull ghcr.io/linuxserver/jenkins-builder:latest |             credentialsId: '3f9ba4d5-100d-45b0-a3c4-633fd6061207', | ||||||
|               docker run --rm -e CONTAINER_NAME=${CONTAINER_NAME} -e GITHUB_BRANCH=master -v ${TEMPDIR}:/ansible/jenkins ghcr.io/linuxserver/jenkins-builder:latest  |             usernameVariable: 'DOCKERUSER', | ||||||
|               # Stage 1 - Jenkinsfile update |             passwordVariable: 'DOCKERPASS' | ||||||
|               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} |           sh '''#! /bin/bash | ||||||
|                 cd ${TEMPDIR}/repo/${LS_REPO} |                 set -e | ||||||
|                 git checkout -f master |                 TEMPDIR=$(mktemp -d) | ||||||
|                 cp ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile ${TEMPDIR}/repo/${LS_REPO}/ |                 docker pull ghcr.io/linuxserver/jenkins-builder:latest | ||||||
|                 git add Jenkinsfile |                 docker run --rm -e CONTAINER_NAME=${CONTAINER_NAME} -e GITHUB_BRANCH=master -v ${TEMPDIR}:/ansible/jenkins ghcr.io/linuxserver/jenkins-builder:latest  | ||||||
|                 git commit -m 'Bot Updating Templated Files' |                 # Stage 1 - Jenkinsfile update | ||||||
|                 git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git --all |                 if [[ "$(md5sum Jenkinsfile | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile | awk '{ print $1 }')" ]]; then | ||||||
|                 echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER} |                   mkdir -p ${TEMPDIR}/repo | ||||||
|                 echo "Updating Jenkinsfile" |                   git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO} | ||||||
|                 rm -Rf ${TEMPDIR} |                   cd ${TEMPDIR}/repo/${LS_REPO} | ||||||
|                 exit 0 |                   git checkout -f master | ||||||
|               else |                   cp ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile ${TEMPDIR}/repo/${LS_REPO}/ | ||||||
|                 echo "Jenkinsfile is up to date." |                   git add Jenkinsfile | ||||||
|               fi |                   git commit -m 'Bot Updating Templated Files' | ||||||
|               # Stage 2 - Delete old templates |                   git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git master | ||||||
|               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" |                   git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git master | ||||||
|               for i in ${OLD_TEMPLATES}; do |                   echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER} | ||||||
|                 if [[ -f "${i}" ]]; then |                   echo "Updating Jenkinsfile" | ||||||
|                   TEMPLATES_TO_DELETE="${i} ${TEMPLATES_TO_DELETE}" |                   rm -Rf ${TEMPDIR} | ||||||
|                 fi |                   exit 0 | ||||||
|               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 |  | ||||||
|                 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 and deprecated 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}" ]] || ! 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 |  | ||||||
|                 cp --parents ${TEMPLATED_FILES} ${TEMPDIR}/repo/${LS_REPO}/ || : |  | ||||||
|                 cp --parents readme-vars.yml ${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 readme-vars.yml ${TEMPLATED_FILES} |  | ||||||
|                 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} |  | ||||||
|               else |  | ||||||
|                 echo "false" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER} |  | ||||||
|               fi |  | ||||||
|               mkdir -p ${TEMPDIR}/docs |  | ||||||
|               git clone https://github.com/linuxserver/docker-documentation.git ${TEMPDIR}/docs/docker-documentation |  | ||||||
|               if [[ ("${BRANCH_NAME}" == "master") || ("${BRANCH_NAME}" == "main") ]] && [[ (! -f ${TEMPDIR}/docs/docker-documentation/docs/images/docker-${CONTAINER_NAME}.md) || ("$(md5sum ${TEMPDIR}/docs/docker-documentation/docs/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}/docs/docker-documentation/docs/images/ |  | ||||||
|                 cd ${TEMPDIR}/docs/docker-documentation |  | ||||||
|                 git add docs/images/docker-${CONTAINER_NAME}.md |  | ||||||
|                 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 |  | ||||||
|               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}-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 |  | ||||||
|               elif [[ -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 |  | ||||||
|               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, 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 |  | ||||||
|                   git mv unraid/${CONTAINER_NAME}.xml unraid/deprecated/${CONTAINER_NAME}.xml || : |  | ||||||
|                   git commit -m 'Bot Moving Deprecated Unraid Template' || : |  | ||||||
|                 else |                 else | ||||||
|                   cp ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml ${TEMPDIR}/unraid/templates/unraid/ |                   echo "Jenkinsfile is up to date." | ||||||
|                   git add unraid/${CONTAINER_NAME}.xml |  | ||||||
|                   git commit -m 'Bot Updating Unraid Template' |  | ||||||
|                 fi |                 fi | ||||||
|                 git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/templates.git --all |                 # Stage 2 - Delete old templates | ||||||
|               fi |                 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" | ||||||
|               rm -Rf ${TEMPDIR}''' |                 for i in ${OLD_TEMPLATES}; do | ||||||
|         script{ |                   if [[ -f "${i}" ]]; then | ||||||
|           env.FILES_UPDATED = sh( |                     TEMPLATES_TO_DELETE="${i} ${TEMPLATES_TO_DELETE}" | ||||||
|             script: '''cat /tmp/${COMMIT_SHA}-${BUILD_NUMBER}''', |                   fi | ||||||
|             returnStdout: true).trim() |                 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 | ||||||
|  |                   for i in ${TEMPLATES_TO_DELETE}; do | ||||||
|  |                     git rm "${i}" | ||||||
|  |                   done | ||||||
|  |                   git commit -m 'Bot Updating Templated Files' | ||||||
|  |                   git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git master | ||||||
|  |                   git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git master | ||||||
|  |                   echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER} | ||||||
|  |                   echo "Deleting old and deprecated 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}" ]] || ! 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 | ||||||
|  |                   cp --parents ${TEMPLATED_FILES} ${TEMPDIR}/repo/${LS_REPO}/ || : | ||||||
|  |                   cp --parents readme-vars.yml ${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 readme-vars.yml ${TEMPLATED_FILES} | ||||||
|  |                   git commit -m 'Bot Updating Templated Files' | ||||||
|  |                   git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git master | ||||||
|  |                   git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git master | ||||||
|  |                   echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER} | ||||||
|  |                 else | ||||||
|  |                   echo "false" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER} | ||||||
|  |                 fi | ||||||
|  |                 mkdir -p ${TEMPDIR}/docs | ||||||
|  |                 git clone https://github.com/linuxserver/docker-documentation.git ${TEMPDIR}/docs/docker-documentation | ||||||
|  |                 if [[ "${BRANCH_NAME}" == "${GH_DEFAULT_BRANCH}"  ]] && [[ (! -f ${TEMPDIR}/docs/docker-documentation/docs/images/docker-${CONTAINER_NAME}.md) || ("$(md5sum ${TEMPDIR}/docs/docker-documentation/docs/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}/docs/docker-documentation/docs/images/ | ||||||
|  |                   cd ${TEMPDIR}/docs/docker-documentation | ||||||
|  |                   GH_DOCS_DEFAULT_BRANCH=$(git remote show origin | grep "HEAD branch:" | sed 's|.*HEAD branch: ||') | ||||||
|  |                   git add docs/images/docker-${CONTAINER_NAME}.md | ||||||
|  |                   git commit -m 'Bot Updating Documentation' | ||||||
|  |                   git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/docker-documentation.git ${GH_DOCS_DEFAULT_BRANCH} | ||||||
|  |                   git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/docker-documentation.git ${GH_DOCS_DEFAULT_BRANCH} | ||||||
|  |                 fi | ||||||
|  |                 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}-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 | ||||||
|  |                 elif [[ -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 | ||||||
|  |                 fi | ||||||
|  |                 if [[ "${BRANCH_NAME}" == "${GH_DEFAULT_BRANCH}" ]] && [[ (! -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/ | ||||||
|  |                   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 | ||||||
|  |                     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 | ||||||
|  |                     git mv unraid/${CONTAINER_NAME}.xml unraid/deprecated/${CONTAINER_NAME}.xml || : | ||||||
|  |                     git commit -m 'Bot Moving Deprecated Unraid Template' || : | ||||||
|  |                   else | ||||||
|  |                     cp ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml ${TEMPDIR}/unraid/templates/unraid/ | ||||||
|  |                     git add unraid/${CONTAINER_NAME}.xml | ||||||
|  |                     git commit -m 'Bot Updating Unraid Template' | ||||||
|  |                   fi | ||||||
|  |                   git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/templates.git ${GH_TEMPLATES_DEFAULT_BRANCH} | ||||||
|  |                   git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/templates.git ${GH_TEMPLATES_DEFAULT_BRANCH} | ||||||
|  |                 fi | ||||||
|  |                 # Stage 4 - Sync Readme to Docker Hub | ||||||
|  |                 if [[ "${BRANCH_NAME}" == "${GH_DEFAULT_BRANCH}" ]]; then | ||||||
|  |                   if [[ $(cat ${TEMPDIR}/docker-${CONTAINER_NAME}/README.md | wc -m) > 25000 ]]; then | ||||||
|  |                     echo "Readme is longer than 25,000 characters. Syncing the lite version to Docker Hub" | ||||||
|  |                     DH_README_SYNC_PATH="${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/README.lite" | ||||||
|  |                   else | ||||||
|  |                     echo "Syncing readme to Docker Hub" | ||||||
|  |                     DH_README_SYNC_PATH="${TEMPDIR}/docker-${CONTAINER_NAME}/README.md" | ||||||
|  |                   fi | ||||||
|  |                   DH_TOKEN=$(curl -d '{"username":"'${DOCKERUSER}'", "password":"'${DOCKERHUB_TOKEN}'"}' -H "Content-Type: application/json" -X POST https://hub.docker.com/v2/users/login | jq -r '.token') | ||||||
|  |                   curl -s \ | ||||||
|  |                     -H "Authorization: JWT ${DH_TOKEN}" \ | ||||||
|  |                     -H "Content-Type: application/json" \ | ||||||
|  |                     -X PATCH \ | ||||||
|  |                     -d "{\\"full_description\\":$(jq -Rsa . ${DH_README_SYNC_PATH})}" \ | ||||||
|  |                     https://hub.docker.com/v2/repositories/${DOCKERHUB_IMAGE} || : | ||||||
|  |                 else | ||||||
|  |                   echo "Not the default Github branch. Skipping readme sync to Docker Hub." | ||||||
|  |                 fi | ||||||
|  |                 rm -Rf ${TEMPDIR}''' | ||||||
|  |           script{ | ||||||
|  |             env.FILES_UPDATED = sh( | ||||||
|  |               script: '''cat /tmp/${COMMIT_SHA}-${BUILD_NUMBER}''', | ||||||
|  |               returnStdout: true).trim() | ||||||
|  |           } | ||||||
|         } |         } | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
| @@ -568,7 +609,8 @@ pipeline { | |||||||
|                 wait |                 wait | ||||||
|                 git add package_versions.txt |                 git add package_versions.txt | ||||||
|                 git commit -m 'Bot Updating Package Versions' |                 git commit -m 'Bot Updating Package Versions' | ||||||
|                 git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git --all |                 git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git master | ||||||
|  |                 git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git master | ||||||
|                 echo "true" > /tmp/packages-${COMMIT_SHA}-${BUILD_NUMBER} |                 echo "true" > /tmp/packages-${COMMIT_SHA}-${BUILD_NUMBER} | ||||||
|                 echo "Package tag updated, stopping build process" |                 echo "Package tag updated, stopping build process" | ||||||
|               else |               else | ||||||
| @@ -864,39 +906,6 @@ EOF | |||||||
|           ) ''' |           ) ''' | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
|     // Use helper container to sync the current README on master to the dockerhub endpoint |  | ||||||
|     stage('Sync-README') { |  | ||||||
|       when { |  | ||||||
|         environment name: 'CHANGE_ID', value: '' |  | ||||||
|         environment name: 'EXIT_STATUS', value: '' |  | ||||||
|       } |  | ||||||
|       steps { |  | ||||||
|         withCredentials([ |  | ||||||
|           [ |  | ||||||
|             $class: 'UsernamePasswordMultiBinding', |  | ||||||
|             credentialsId: '3f9ba4d5-100d-45b0-a3c4-633fd6061207', |  | ||||||
|             usernameVariable: 'DOCKERUSER', |  | ||||||
|             passwordVariable: 'DOCKERPASS' |  | ||||||
|           ] |  | ||||||
|         ]) { |  | ||||||
|           sh '''#! /bin/bash |  | ||||||
|                 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 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/readme-sync bash -c 'node sync' |  | ||||||
|                 rm -Rf ${TEMPDIR} ''' |  | ||||||
|         } |  | ||||||
|       } |  | ||||||
|     } |  | ||||||
|     // If this is a Pull request send the CI link as a comment on it |     // If this is a Pull request send the CI link as a comment on it | ||||||
|     stage('Pull Request Comment') { |     stage('Pull Request Comment') { | ||||||
|       when { |       when { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user