pipeline { agent any stages { stage('Tests and compiling binaries') { when { expression { env.CHANGE_BRANCH?.startsWith('feature/') || env.CHANGE_BRANCH?.startsWith('rc') } } steps { script { echo "Building and running tests in Docker for feature branch..." try { def targetDirAmd = "${env.WORKSPACE}/${env.CHANGE_BRANCH}/amd64" def targetDirRisc = "${env.WORKSPACE}/${env.CHANGE_BRANCH}/riscv64" sh "mkdir -p ${targetDirAmd}" sh "mkdir -p ${targetDirRisc}" sh """ docker build --network=host -t e-monitor . docker run --name e-monitor --dns 8.8.8.8 --network=host e-monitor:latest """ sh "cp noxis-rs/settings.json ${targetDirAmd}" sh "cp noxis-rs/settings.json ${targetDirRisc}" sh "docker cp e-monitor:/usr/src/kii/target/x86_64-unknown-linux-gnu/release/noxis-cli ${targetDirAmd}" sh "docker cp e-monitor:/usr/src/kii/target/x86_64-unknown-linux-gnu/release/noxis-rs ${targetDirAmd}" sh "docker cp e-monitor:/usr/src/kii/target/riscv64gc-unknown-linux-gnu/release/noxis-cli ${targetDirRisc}" sh "docker cp e-monitor:/usr/src/kii/target/riscv64gc-unknown-linux-gnu/release/noxis-rs ${targetDirRisc}" sh "docker stop e-monitor && docker rm e-monitor" echo "Tests passed successfully and binaries were extracted!" } catch (Exception e) { echo "Tests failed during Docker run." error "Build failed at 'CI for feature' stage." } } } } stage('Calculate Install Size') { when { expression { env.CHANGE_BRANCH?.startsWith('rc') } } steps { script { echo "Calculating installation size for rc branch..." def targetDirAmd = "${env.WORKSPACE}/${env.CHANGE_BRANCH}/amd64" def targetDirRisc = "${env.WORKSPACE}/${env.CHANGE_BRANCH}/riscv64" def installSizeAmd = sh(script: "du -s --block-size=1024 ${targetDirAmd} | awk '{print \$1}'", returnStdout: true).trim() def installSizeRisc = sh(script: "du -s --block-size=1024 ${targetDirRisc} | awk '{print \$1}'", returnStdout: true).trim() env.INSTALL_SIZE_AMD = installSizeAmd env.INSTALL_SIZE_RISC = installSizeRisc echo "Installation size for amd64: ${env.INSTALL_SIZE_AMD} kB" echo "Installation size for riscv64: ${env.INSTALL_SIZE_RISC} kB" } } } stage('Create Deb Packages') { when { expression { env.CHANGE_BRANCH?.startsWith('rc') } } steps { script { echo "Creating deb packages for rc branch..." def targetDirAmd = "${env.WORKSPACE}/${env.CHANGE_BRANCH}/amd64" def targetDirRisc = "${env.WORKSPACE}/${env.CHANGE_BRANCH}/riscv64" def packageName = "noxis" def version = sh(script: "git describe --tags --always", returnStdout: true).trim() def createDebPackage = { arch, binDir, targetDir, installSize -> echo "Creating deb package for ${arch}..." sh """ mkdir -p ${targetDir}/package/DEBIAN mkdir -p ${targetDir}/package/usr/local/enode/${packageName} mkdir -p ${targetDir}/package/usr/bin mkdir -p ${targetDir}/package/etc/enode mkdir -p ${targetDir}/package/lib/systemd/system cp ${binDir}/noxis-cli ${targetDir}/package/usr/local/enode/${packageName}/ cp ${binDir}/noxis-rs ${targetDir}/package/usr/local/enode/${packageName}/ cp ${binDir}/settings.json ${targetDir}/package/etc/enode/ cat > ${targetDir}/package/DEBIAN/control < Description: Noxis Agent Linux Installed-Size: ${installSize} EOF chmod +x ${targetDir}/package/usr/local/enode/${packageName}/noxis-cli chmod +x ${targetDir}/package/usr/local/enode/${packageName}/noxis-rs cat > ${targetDir}/package/DEBIAN/postinst < ${targetDir}/package/lib/systemd/system/${packageName}.service <