@Library('SHS.Platforms') _ def build_docker(dist, release_dir, is_testing, is_debug) { def image_from = "${dist.docker.image_basename}" def image_name = "${dist.docker.image_basename}-shstk" if (is_testing) { image_name += "-test" } if (is_debug) { image_from += "-debug" image_name += "-debug" } echo "Build image ${image_name}" def args = "" for (arg in dist.docker.build_options) { args += " --build-arg ${arg.key}=\"${arg.value}\"" } if (env.DOCKER_PREFIX) { args += " --build-arg DOCKER_PREFIX=${env.DOCKER_PREFIX}/" } if (env.BRANCH_NAME) { if ("${env.BRANCH_NAME}" != "shstk") { args += " --build-arg BRANCH=${env.BRANCH_NAME}" } } args += " --build-arg IMAGE_FROM=${image_from}" args += " --build-arg LIBS_BUILD_NUMBER=${env.BUILD_NUMBER}" args += " --build-arg JOBS_COUNT=${env.JOBS_COUNT}" def shstk_docker = docker.build("${image_name}", "./docker/${dist.docker.directory}-shstk --no-cache ${args}") shstk_docker.inside("-v " + release_dir + ":/soft/release") { sh 'cp -vf /soft/shstk/release/* /soft/release/ || true' } return "\n - ${image_name}" } properties([ buildDiscarder(logRotator(numToKeepStr: "2000", artifactNumToKeepStr: "10")), parameters([ booleanParam(name: 'Debug', defaultValue: false, description: 'Build debug version') ]), copyArtifactPermission('*') ]); node { stage("Download SRC") { checkout scm } def currentBranch = "${env.BRANCH_NAME}" def is_testing = currentBranch.toLowerCase().contains("test") def is_debug = Boolean.valueOf(Debug) def pl = new org.SHS.Platforms(this) pl.get() def local_release_dir = 'release' if (is_testing) { local_release_dir += '-test' } def rel_dir = sh(script: "pwd", returnStdout: true).trim() + '/' + local_release_dir echo "Release to ${rel_dir}" sh "rm -rvf ${rel_dir}" sh "mkdir -p ${rel_dir}" def _msg = "Built images:" pl.forEach ({ dist -> _msg += build_docker(dist, rel_dir, is_testing, is_debug) }, stageSuffix: "-shstk", ondemand: true ) stage("Clean") { sh "docker system prune -f" } archiveArtifacts "${local_release_dir}/*" echo "${_msg}" }