pipeline { parameters { booleanParam 'CLEAN_BUILD' string 'CUSTOM_TARGET' } options { disableConcurrentBuilds() } agent { kubernetes { yamlFile 'ci/podTemplate.yaml' yamlMergeStrategy merge() workspaceVolume persistentVolumeClaimWorkspaceVolume( claimName: 'buildroot-aimeeos' ) 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 'if [ ! -d buildroot ]; then git clone https://gitlab.com/buildroot.org/buildroot.git -b 2025.05.x --depth 1; else git -C buildroot pull; fi' } } } stage('Build') { steps { sh 'make -C buildroot O="${PWD}"/_build BR2_EXTERNAL="${PWD}" aimeeos_qemu_aarch64_defconfig' script { if (params.CUSTOM_TARGET) { sh "make -C _build '${CUSTOM_TARGET}'" } } sh 'make -C _build' } 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(',')) } } } } } }