pipeline { agent { label 'LXCBuilder' } parameters { booleanParam description: 'Will only update Jenkins piplinefile (jenkinsfile)', name: 'OnlyUpdatePipeline' booleanParam defaultValue: true, description: 'Enable muticore support for ZX compression', name: 'ZX_Multicore' string defaultValue: '0', description: 'Set amount of core\'s ZX is allowed when compressing (use 0 for all cores)', name: 'ZX_Cores' string defaultValue: '192.168.200.11', description: 'Proxy server for packages, when enabled', name: 'ProxyServer' booleanParam description: 'will disable use of proxy server', name: 'DisProxy' checkboxParameter(name: 'ImgVersionList', format: 'JSON', displayNodePath: "//Versions/Version", valueNodePath: "//Versions/Version", description: 'Select the vesions(s) that should be build', pipelineSubmitContent: '{"Versions": [{"Version": "bookworm"},{"Version": "bullseye"}]}') } 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: 'distrobuilder-BrampCustom', fingerprintArtifacts: true, flatten: true, projectName: 'LXC-ImgBuilder/DistroBuilder', selector: lastSuccessful() // Setup Env sh '''mkdir $WORKSPACE/REL mv distrobuilder-* distrobuilder ''' //Check if Proxy is disabled script{ if (env.DisProxy == 'true') { sh '''bash Scripts/UpdateIMGBuildFile-CacheAndRepo.sh -d''' } else { env.ProxyServer = ProxyServer sh '''bash Scripts/UpdateIMGBuildFile-CacheAndRepo.sh -e $ProxyServer''' } if (env.OnlyUpdatePipeline == 'true') { error 'Build ended early, only updated jenkins file' } } } } stage('Image Configs'){ steps{ script{ //Run build for requested Versions for(ImgVersion in ImgVersionList.split(',')){ env.ZX_Multicore = ZX_Multicore env.ZX_Cores = ZX_Cores env.ImgVersion = ImgVersion stage("Build ${ImgVersion}") { catchError(buildResult: 'UNSTABLE', stageResult: 'FAILURE') { sh '''echo "$(date) Do Build for $ImgVersion" if $ZX_Multicore; then export XZ_DEFAULTS="-T $ZX_Cores" fi sudo $WORKSPACE/distrobuilder build-lxc CT-Build/Debian.yaml $WORKSPACE/REL/$ImgVersion/ -o image.Version=$ImgVersion sudo chown jenkins:jenkins -R $WORKSPACE/REL mv $WORKSPACE/REL/$ImgVersion/rootfs.tar.xz Debian-$ImgVersion.tar.xz ''' } } } } } } stage('Finish') { steps { // Save generated files archiveArtifacts artifacts: '*.tar.xz', followSymlinks: false // Copy artifacts to /LXCBuild folder sh ''' mkdir -p /LXCBuild/template/cache cp -f *.tar.xz /LXCBuild/template/cache ''' // Cleaning WorkSpace when build successfully cleanWs cleanWhenAborted: false, cleanWhenFailure: false, cleanWhenNotBuilt: false, cleanWhenUnstable: false } } } }