Files
shstk/Jenkinsfile
2022-04-22 21:19:31 +03:00

52 lines
1.5 KiB
Groovy

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}"
}