def build_docker(docker_image, docker_dir, release_dir) { def image_name = "${docker_image}-shstk" echo "Build image ${image_name}" def args = "" if (env.DOCKER_PREFIX) { args += " --build-arg DOCKER_PREFIX=${env.DOCKER_PREFIX}/" } args += " --build-arg IMAGE_FROM=${docker_image}" 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/${docker_dir}-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([[$class: 'BuildDiscarderProperty', strategy: [$class: 'LogRotator', artifactDaysToKeepStr: '', artifactNumToKeepStr: '10', daysToKeepStr: '', numToKeepStr: '20']], copyArtifactPermission('*')]); node { stage("Download SRC") { checkout scm } stage("Download platforms.json") { sh "rm -rf platforms" sh "git clone --depth 1 ${env.PLATFORMS_GIT} platforms" } def rel_dir = sh(script: "pwd", returnStdout: true).trim() + '/release' echo "Release to ${rel_dir}" sh "rm -rvf ${rel_dir}" sh "mkdir -p ${rel_dir}" def root = readJSON(file: 'platforms/platforms.json') def _msg = "Built images:" root.Platforms.each { key, dist -> if (dist.enabled) { stage ("${key}-shstk") { _msg += build_docker(dist.docker_image, dist.docker_dir, rel_dir) } } } sh "docker system prune -f" archiveArtifacts 'release/*' echo "${_msg}" }