Files
HomeServerCTs/CT-Build/Debian.Jenkinsfile
2022-03-11 17:59:46 +01:00

75 lines
3.5 KiB
Plaintext

String[] ImgVariantList = ['minimal', 'default', 'jenkinsbuilder', 'imgbuilder', 'jenkins', 'mysql' , 'pihole' , 'collabora' , 'jellyfin' , 'domoticz' , 'omadaV3' , 'docker' , 'smb' , 'tvheadend' , 'x2go' , 'aptcacherng' , 'nfs' ]
pipeline {
agent { label 'LXCBuilder' }
parameters {
booleanParam 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'
booleanParam description: 'Only build specified variant', name: 'OneRun'
string defaultValue: 'VariantName', description: 'Variant for OneBuild', name: 'OneRunVariant'
}
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
bash Scripts/GetExternalResources.sh
'''
}
}
stage('Image Configs'){
steps{
script{
//Set Variantlist to one if single build if requested
if (env.OneRun == 'true') {
ImgVariantList = [env.OneRunVariant]
}
//Run build for requested variants
for(ImgVariant in ImgVariantList){
env.ZX_Multicore = ZX_Multicore
env.ZX_Cores = ZX_Cores
env.ImgVariant = ImgVariant
stage("Build ${ImgVariant}") {
catchError(buildResult: 'UNSTABLE', stageResult: 'FAILURE') {
sh '''echo "$(date) Do Build for $ImgVariant"
if $ZX_Multicore; then
export XZ_DEFAULTS="-T $ZX_Cores"
fi
sudo $WORKSPACE/distrobuilder build-lxc CT-Build/Debian.yaml $WORKSPACE/REL/$ImgVariant/ -o image.variant=$ImgVariant
sudo chown jenkins:jenkins -R $WORKSPACE/REL
mv $WORKSPACE/REL/$ImgVariant/rootfs.tar.xz Debian-$ImgVariant.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
}
}
}
}