pipeline { parameters { booleanParam 'CLEAN_BUILD' } options { disableConcurrentBuilds() } agent { kubernetes { yamlFile 'ci/podTemplate.yaml' yamlMergeStrategy merge() workspaceVolume persistentVolumeClaimWorkspaceVolume( claimName: 'buildroot-airplaypi' ) defaultContainer 'build' } } environment { BR2_CCACHE_DIR = "${env.JENKINS_AGENT_WORKDIR}/br2-ccache" } stages { stage('Clean') { when { expression { return params.CLEAN_BUILD } } steps { sh 'git clean -fdx' } } stage('Prepare') { steps { container('jnlp') { sh 'git submodule update --remote aimee-os' } } } stage('Build') { steps { sh 'make config && make update-config' sh 'make all' } post { success { dir('_build') { archiveArtifacts('.config') } dir('_build/images') { sh 'zstd -f firmware.img' sh 'zstd -f sdcard.img' archiveArtifacts([ 'firmware.img.zst', 'rootfs.squashfs', 'sdcard.img.zst', ].join(',')) } } } } } }