mirror of
				https://github.com/linuxserver/docker-swag.git
				synced 2025-11-04 15:02:38 +09:00 
			
		
		
		
	Bot Updating Templated Files
This commit is contained in:
		
							
								
								
									
										294
									
								
								Jenkinsfile
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										294
									
								
								Jenkinsfile
									
									
									
									
										vendored
									
									
								
							@@ -59,11 +59,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 ./root/donate.txt'
 | 
					          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 ./root/donate.txt'
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        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' ''',
 | 
				
			||||||
@@ -120,7 +125,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+)/
 | 
				
			||||||
@@ -138,7 +143,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}")
 | 
				
			||||||
@@ -256,115 +261,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}/README.md"
 | 
				
			||||||
 | 
					                  else
 | 
				
			||||||
 | 
					                    echo "Syncing readme to Docker Hub"
 | 
				
			||||||
 | 
					                    DH_README_SYNC_PATH="${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/README.lite"
 | 
				
			||||||
 | 
					                  fi
 | 
				
			||||||
 | 
					                  DH_TOKEN=$(curl -d '{"username":"'${DOCKERUSER}'", "password":"'${DOCKERPASS}'"}' -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()
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -558,7 +598,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
 | 
				
			||||||
@@ -854,39 +895,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