String[] ImgReleaseList = ['3.13', 'edge'] String[] ImgVariantList = ['Default-default', 'Extra-extended'] pipeline { agent { label 'LXCBuilder' } parameters { booleanParam defaultValue: true, description: 'Builds Default images', name: 'BuildDefault' booleanParam defaultValue: false, description: 'Builds Extra images', name: 'BuildExtra' } options { skipDefaultCheckout() buildDiscarder(logRotator(numToKeepStr: '2', artifactNumToKeepStr: '1')) } stages { stage('Prepare') { steps { // Cleanup before starting cleanWs() // Checkout the repository checkout scm // Get distrobuilder copyArtifacts filter: 'bin/distrobuilder', fingerprintArtifacts: true, flatten: true, projectName: '/Public/DistroBuilder/BuildConfig=BrampCustom', selector: lastSuccessful() // Setup Env sh '''mkdir $WORKSPACE/REL''' } } stage('Image Configs'){ steps{ script{ for(ImgRelease in ImgReleaseList){ for(ImgVariant in ImgVariantList){ if (env.BuildDefault == 'true' && (ImgVariant).startsWith('Default-')) { echo 'Building Default' BuildThis = true } else if (env.BuildExtra == 'true' && (ImgVariant).startsWith('Extra-')) { BuildThis = true echo 'Building Extra' } else { BuildThis = false echo 'not building' } echo BuildThis if (BuildThis == true) { stage('Build image') { steps { // Build script catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') { sh '''echo "$(date) Do Build for $ImgRelease - $ImgVariant" ImgVariantName${ImgVariant#Default-} && ImgVariantName${ImgVariantName#Extra-} sudo $WORKSPACE/distrobuilder build-lxc Alpine.yaml $WORKSPACE/REL/$ImgRelease-$ImgVariant/ -o image.release=$ImgRelease -o image.variant=$ImgVariantName sudo chown jenkins:jenkins -R $WORKSPACE/REL mv $WORKSPACE/REL/$ImgRelease-$ImgVariant/rootfs.tar.xz $ImgVariant-$ImgRelease.tar.xz ''' } } } } } } } } } stage('Finish') { steps { // Save generated files archiveArtifacts artifacts: 'REL/**', followSymlinks: false // Cleaning WorkSpace //cleanWs() } } } }