pipeline { agent { label 'docker-lehrer' } options { buildDiscarder(logRotator(artifactNumToKeepStr: '0')) skipDefaultCheckout(true) } parameters { string( name: 'REPOSITORY', defaultValue: 'itsp.htl-leoben.at/git/Hg/HTLLE-DA-Vorlage.git', description: 'URL git-Repository DA//' ) string( name: 'GIT_PATH', defaultValue: './', description: "Pfad zur DA in git (z.B.: dipl/)" ) } stages { stage('Checkout DA') { steps { cleanWs() script { // add https to the url if not present env.REPOSITORY = params.REPOSITORY if(!env.REPOSITORY.startsWith("https://")) { env.REPOSITORY = "https://" + env.REPOSITORY } // sanitize git dir path env.GIT_PATH = params.GIT_PATH if(!env.GIT_PATH.endsWith("/")) { env.GIT_PATH += "/" } if(env.GIT_PATH.startsWith("/")) { env.GIT_PATH = env.GIT_PATH.substring(1) } if(env.GIT_PATH.startsWith("~/")) { env.GIT_PATH = env.GIT_PATH.substring(2, (env.GIT_PATH.length() - 1)) } } // checkout out the repository including submodules // builduser acc used in git checkout([ $class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [[ $class: 'SubmoduleOption', disableSubmodules: false, parentCredentials: true, recursiveSubmodules: true, shallow: false, reference: '', trackingSubmodules: false ]], submoduleCfg: [], userRemoteConfigs: [[ credentialsId: 'd65d903b-21ee-4055-98aa-ef82a903e287', url: "${env.REPOSITORY}" ]] ]) } } stage('Build DA') { when { expression { 'https://itsp.htl-leoben.at/git/Hg/HTLLE-DA-Vorlage.git' != env.REPOSITORY } } steps { dir(env.GIT_PATH) { sh 'make pdf -C HTLLE-DA-Vorlage SOURCEDIR=$(pwd)' } } } stage('Build only template') { when { expression { 'https://itsp.htl-leoben.at/git/Hg/HTLLE-DA-Vorlage.git' == env.REPOSITORY } } steps { // build the template with the examples from DA point of view sh '''#!/bin/bash mkdir HTLLE-DA-Vorlage ls | grep -v HTLLE-DA-Vorlage | xargs mv -t HTLLE-DA-Vorlage cp -rv HTLLE-DA-Vorlage/example/. . make pdf -C HTLLE-DA-Vorlage SOURCEDIR=$(pwd) ''' } } stage('Test if diplomarbeit.pdf exists') { steps { dir(env.GIT_PATH) { sh "test -f diplomarbeit.pdf" } } } } post { always { script { env.RECIPIENTS = "" // get mail addresses metadata = readFile(file: "${env.GIT_PATH}metadata.yaml").split('\n').each { line -> if(line.contains("- build-notification:")) { def mailMatch = line =~ /[_A-Za-z0-9-]+(.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(.[A-Za-z0-9]+)*(.[A-Za-z]{2,})/ env.RECIPIENTS += (mailMatch[0][0] + ";") } } } dir(env.GIT_PATH) { emailext attachmentsPattern: "diplomarbeit.pdf*", to: "${env.RECIPIENTS}", subject: "[${currentBuild.currentResult}] Diplomarbeit Build #${env.BUILD_NUMBER}", body: "Job ${env.JOB_NAME}: ${env.JOB_URL}" } } } }