diff --git a/Jenkinsfile b/Jenkinsfile index fde7a8e..3134ded 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,68 +1,46 @@ -def build_docker(name, docker_dir, docker_image, release_dir) { - def image_name = "${name}-shstk" +def build_docker(docker_image, docker_dir, release_dir) { + def image_name = "${docker_image}-shstk" echo "Build image ${image_name}" - def pref = "" + def args = "" if (env.DOCKER_PREFIX) { - pref = "--build-arg DOCKER_PREFIX=${env.DOCKER_PREFIX}/" + args += " --build-arg DOCKER_PREFIX=${env.DOCKER_PREFIX}/" } - def jobs = 4 - if (env.JOBS_COUNT) { - jobs = "${env.JOBS_COUNT}" - } - def args = "${pref}" args += " --build-arg IMAGE_FROM=${docker_image}" args += " --build-arg LIBS_BUILD_NUMBER=${env.BUILD_NUMBER}" - args += " --build-arg JOBS_COUNT=${jobs}" - dir ("docker/${docker_dir}-shstk") { - sh "docker build ${args} --no-cache -t ${image_name} ." - def diargs = "-v " + release_dir + ":/soft/release" - docker.image(image_name).inside(diargs) { - sh 'cp -vf /soft/shstk/release/* /soft/release/ || true' - } - //print "docker build ${args} --no-cache -t ${image_name} ." + args += " --build-arg JOBS_COUNT=${env.JOBS_COUNT}" + def shstk_docker = docker.build(${image_name}, ./docker/${docker_dir}-shstk --no-cache ${args}) + def vol = "-v " + release_dir + ":/soft/release" + shstk_docker.inside(vol) { + 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("checkout") { + 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}" - def _envmap = [:] - def _env = sh(script: "env", returnStdout: true).trim().split("\n") - _env.each{ l -> - def _ind = l.indexOf('='); - def _n = l.substring(0, _ind); - def _v = l.substring(_ind + 1); - _envmap["${_n}"] = "${_v}"; - } - sh "mkdir -p ${rel_dir}" sh "rm -rvf ${rel_dir}" sh "mkdir -p ${rel_dir}" + + def root = readJSON(file: 'platforms/platforms.json') def _msg = "Built images:" - - // individual platforms - def platforms = ['osx', 'android', 'windows', 'windows32', 'pi'] - for (int i = 0; i < platforms.size(); ++i) { - if (_envmap["BUILD_${platforms[i]}"] == "1") { - stage("${platforms[i]}-shstk") { - _msg += build_docker("${platforms[i]}", "${platforms[i]}", "", rel_dir) + root.Platforms.each { key, dist -> + if (dist.enabled) { + stage ("${key}-shstk") { + _msg += build_docker(dist.docker_image, dist.docker_dir, rel_dir) } } } - // desktop linux set - sh 'wget https://shs.tools/files/linux.json' - def root = readJSON(file: 'linux.json') - for (dist in root.Linux) { - if (dist.off) continue - stage ("${dist.system}-shstk") { - _msg += build_docker(dist.docker_image, "linux_desktop", dist.docker_image, rel_dir) - } - } - sh "docker system prune -f" archiveArtifacts 'release/*' echo "${_msg}" diff --git a/qad b/qad index 0497a52..6b4bafd 160000 --- a/qad +++ b/qad @@ -1 +1 @@ -Subproject commit 0497a527047ac8e1e977485647219e257a18d919 +Subproject commit 6b4bafd9cd95711d105d8131a1f1a5ef1fe6d929