def build_docker(name, release_dir) { def image_name = "${name}-shstk" echo "Build image ${image_name}" def pref = "" if (env.DOCKER_PREFIX) { pref = "--build-arg DOCKER_PREFIX=${env.DOCKER_PREFIX}/" } def jobs = 4 if (env.JOBS_COUNT) { jobs = "${env.JOBS_COUNT}" } def args = "${pref} --build-arg LIBS_BUILD_NUMBER=${env.BUILD_NUMBER} --build-arg JOBS_COUNT=${jobs}" dir ("docker/${image_name}") { 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' } } return "\n - ${image_name}" } node { stage("checkout") { checkout scm } 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 _msg = "Built images:" def platforms = ['debian', 'debian11', 'osx', 'windows', 'windows32', 'android', 'pi', 'ubuntu'] for (int i = 0; i < platforms.size(); ++i) { if (_envmap["BUILD_${platforms[i]}"] == "1") { stage("${platforms[i]}-shstk") { _msg += build_docker("${platforms[i]}", rel_dir) } } } sh "docker system prune -f" archiveArtifacts 'release/*' echo "${_msg}" } pipeline { agent { label 'master' } options { copyArtifactPermission('*'); buildDiscarder(logRotator(numToKeepStr: "20", artifactNumToKeepStr: "10")) } stages { stage("PIP doc") { steps { checkout scm sh "rm -rf share" sh "rm -vf *.zip" sh "mkdir -p build" sh "cd build && cmake -DLOCAL=1 -DCMAKE_INSTALL_PREFIX=`pwd` -DDOC_LANG=English -DDOC_DIR=en ../ && make doc" sh "cd build && cmake -DLOCAL=1 -DCMAKE_INSTALL_PREFIX=`pwd` -DDOC_LANG=Russian -DDOC_DIR=ru ../ && make doc" sh "cd share/doc && zip -r ../../pip_doc.zip pip" sh "cp share/doc/pip/html/en/pip_en.qch ./" sh "cp share/doc/pip/html/ru/pip_ru.qch ./" archiveArtifacts 'pip_doc.zip' archiveArtifacts 'pip_en.qch' archiveArtifacts 'pip_ru.qch' } } } }