String[] ImgReleaseList = ['buster'] String[] ImgVariantList = ['Default-minmal', 'Default-default', 'Extra-imgbuilder'] pipeline { agent { label 'LXCBuilder' } triggers { cron '@monthly' } 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){ //ImgTypeTest if (env.BuildDefault == 'true' && (ImgVariant).startsWith('Default-')) { BuildThis = true } else if (env.BuildExtra == 'true' && (ImgVariant).startsWith('Extra-')) { BuildThis = true } else { BuildThis = false } //Exclude unwanted conbinatinations // if (ImgRelease == 'buster' && ImgVariant == 'Default-default' ){ // BuildThis = false // } //Check if this combinations shoud be build if (BuildThis == true) { env.ImgRelease = ImgRelease env.ImgVariant = ImgVariant stage('Build image') { catchError(buildResult: 'UNSTABLE', stageResult: 'FAILURE') { sh '''echo "$(date) Do Build for $ImgRelease - $ImgVariant" ImgVariantName=${ImgVariant#Default-} && ImgVariantName=${ImgVariantName#Extra-} sudo $WORKSPACE/distrobuilder build-lxc Debian.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 Debian-$ImgRelease-$ImgVariant.tar.xz ''' } } } } } } } } stage('Finish') { steps { // Save generated files archiveArtifacts artifacts: '*.tar.xz', followSymlinks: false // Cleaning WorkSpace //cleanWs() } } } }