80 lines
2.1 KiB
Groovy
80 lines
2.1 KiB
Groovy
@Library('SHS.Platforms') _
|
|
def build_docker(dist, release_dir, is_testing, is_debug) {
|
|
def image_from = "${dist.docker_image}"
|
|
def image_name = "${dist.docker_image}-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_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: '2000']],
|
|
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}"
|
|
}
|
|
|