From 909ccc1b11b04e5c375adeb1f8b05759ba8d7a13 Mon Sep 17 00:00:00 2001 From: Andrea Cavalli Date: Thu, 8 Oct 2020 01:06:36 +0200 Subject: [PATCH] Update Jenkinsfile --- Jenkinsfile | 148 +++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 106 insertions(+), 42 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index c9e6deb..fa9c307 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -2,48 +2,112 @@ // see https://jenkins.io/doc/book/pipeline/syntax/ pipeline { - environment { - MVN_SET = credentials('maven_settings') - } - agent { docker { image 'maven:3.6.3' } } - triggers { - pollSCM "* * * * *" - } - options { - timestamps() - ansiColor("xterm") - } - parameters { - booleanParam(name: "RELEASE", - description: "Build a release from current commit.", - defaultValue: false) - } - stages { + environment { + MVN_SET = credentials('maven_settings') + JAVA_TOOL_OPTIONS = '-Duser.home=/var/maven' + } + agent any + options { + timestamps() + ansiColor("xterm") + } + parameters { + booleanParam(name: "RELEASE", + description: "Build a release from current commit.", + defaultValue: false) + } + stages { + stage("Setup workspace") { + agent none + steps { + sh "mkdir -p \"/var/jenkins_cache/.m2\"" + sh "chown 1000:1000 -R \"/var/jenkins_cache/.m2\"" + sh "mkdir -p \"/var/jenkins_cache/.ccache\"" + sh "chown 1000:1000 -R \"/var/jenkins_cache/.ccache\"" + sh "mkdir -p \"/var/jenkins_cache/.ccache_arm64\"" + sh "chown 1000:1000 -R \"/var/jenkins_cache/.ccache_arm64\"" + //sh "mkdir -p \"${workspace}/tdlight-java/src/main\"" + //sh "chown 1000:1000 -R \"${workspace}\"" + //sh "chmod 771 -R \"${workspace}\"" + } + } + stage("Prepare native C++") { + agent { + dockerfile { + dir 'jenkins/docker/native' + filename 'dockerfile' + additionalBuildArgs '--build-arg version=1.0.0 --build-arg UID=1000 --build-arg GID=1000 --build-arg UNAME=jenkins' + args "-v \"${workspace}/src/main:/home/jenkins/output:rw\" -v \"/var/jenkins_cache/.m2:/home/jenkins/.m2:rw\" -v \"/var/jenkins_cache/.ccache:/home/jenkins/.ccache:rw\" -v \"${workspace}:/home/jenkins/work:rw\"" + reuseNode true + } + } + steps { + sh "./jenkins/scripts/prepare_cross.sh" + } + } + + stage("Cross compile C++") { + agent { + dockerfile { + dir 'jenkins/docker/win64' + filename 'dockerfile' + additionalBuildArgs '--build-arg version=1.0.0 --build-arg UID=1000 --build-arg GID=1000 --build-arg UNAME=jenkins' + args "-v \"${workspace}/src/main:/home/jenkins/output:rw\" -v \"/var/jenkins_cache/.m2:/home/jenkins/.m2:rw\" -v \"/var/jenkins_cache/.ccache_arm64:/home/jenkins/.ccache:rw\" -v \"${workspace}:/home/jenkins/work:rw\"" + reuseNode true + } + } + steps { + sh "./jenkins/scripts/cross_compile.sh" + } + } - stage("Build & Deploy SNAPSHOT") { - steps { - sh "mvn -s $MVN_SET -B deploy" - } - } + stage("Build & Deploy SNAPSHOT") { + agent { + docker { + image 'maven:3.6.3-openjdk-11' + args '-v $HOME:/var/maven' + reuseNode true + } + } + steps { + sh "mvn -s $MVN_SET -B deploy" + } + } - stage("Release") { - when { - expression { params.RELEASE } - } - steps { - sh "mvn -s $MVN_SET -B release:prepare" - sh "mvn -s $MVN_SET -B release:perform" - } - } - stage('Deliver') { - steps { - sh './jenkins/scripts/deliver.sh' - } - } - } - post { - always { - deleteDir() - } - } + stage("Release") { + agent { + docker { + image 'maven:3.6.3-openjdk-11' + args '-v $HOME:/var/maven' + reuseNode true + } + } + when { + expression { params.RELEASE } + } + steps { + sh "git config user.email \"jenkins@mchv.eu\"" + sh "git config user.name \"Jenkins\"" + sh "git add --all; git commit -m \"Add generated files\"" + sh "mvn -s $MVN_SET -DpushChanges=false -DlocalCheckout=true -DpreparationGoals=initialize release:prepare release:perform -B" + } + } + stage('Deliver') { + agent { + docker { + image 'maven:3.6.3-openjdk-11' + args '-v $HOME:/var/maven' + reuseNode true + } + } + steps { + sh './jenkins/scripts/deliver.sh' + } + } + } + post { + always { + deleteDir() + } + } }