Bug 574667 - Use Jenkins multibranch pipeline based on Jenkinsfile+Gerrit Change-Id: I8f04ca9518b65bdf2e3c03fcc28f7f59586d938f
diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000..11bbb06 --- /dev/null +++ b/Jenkinsfile
@@ -0,0 +1,150 @@ +pipeline { + options { + timeout(time: 90, unit: 'MINUTES') + buildDiscarder(logRotator(numToKeepStr:'5')) + } + agent { + kubernetes { + label 'swtbuild-pod' + defaultContainer 'container' + yaml """ +apiVersion: v1 +kind: Pod +spec: + containers: + - name: jnlp + resources: + requests: + memory: "512Mi" + cpu: "100m" + limits: + memory: "512Mi" + cpu: "500m" + - name: container + image: akurtakov/swtbuild@sha256:2cd3dfdea1f250597c9e3797512953c03e2182344e86976c1b60117c5dd36a9e + tty: true + command: [ "uid_entrypoint", "cat" ] + resources: + requests: + memory: "4Gi" + cpu: "1" + limits: + memory: "4Gi" + cpu: "1" + volumeMounts: + - name: "settings-xml" + mountPath: "/home/jenkins/.m2/settings.xml" + subPath: "settings.xml" + readOnly: true + - name: "toolchains-xml" + mountPath: "/home/jenkins/.m2/toolchains.xml" + subPath: "toolchains.xml" + readOnly: true + - name: "settings-security-xml" + mountPath: "/home/jenkins/.m2/settings-security.xml" + subPath: "settings-security.xml" + readOnly: true + - name: m2-repo + mountPath: /home/jenkins/.m2/repository + - name: "tools" + mountPath: "/opt/tools" + volumes: + - name: settings-xml + secret: + secretName: m2-secret-dir + items: + - key: settings.xml + path: settings.xml + - name: toolchains-xml + configMap: + name: m2-dir + items: + - key: toolchains.xml + path: toolchains.xml + - name: settings-security-xml + secret: + secretName: m2-secret-dir + items: + - key: settings-security.xml + path: settings-security.xml + - name: m2-repo + emptyDir: {} + - name: tools + persistentVolumeClaim: + claimName: tools-claim-jiro-platform +""" + } + } + environment { + MAVEN_OPTS = "-Xmx4G" + } + stages { + stage('Prepare-environment') { + steps { + container('container') { + sh 'mutter --replace --sm-disable &' + dir ('eclipse.platform.swt') { + checkout([$class: 'GitSCM', branches: [[name: 'FETCH_HEAD']], doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'CloneOption', timeout: 120]], submoduleCfg: [], userRemoteConfigs: [[refspec: '${GERRIT_REFSPEC}', url: 'https://git.eclipse.org/r/platform/eclipse.platform.swt.git']]]) + } + dir ('eclipse.platform.swt.binaries') { + checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'CloneOption', timeout: 120]], submoduleCfg: [], userRemoteConfigs: [[url: 'https://git.eclipse.org/r/platform/eclipse.platform.swt.binaries.git']]]) + } + } + } + } + stage('Build') { + steps { + container('container') { + wrap([$class: 'Xvnc', useXauthority: true]) { + withEnv(["JAVA_HOME=${ tool 'openjdk-jdk11-latest' }"]) { + dir ('eclipse.platform.swt.binaries') { + sh '/opt/tools/apache-maven/latest/bin/mvn --batch-mode -Pbuild-individual-bundles -DforceContextQualifier=zzz -Dnative=gtk.linux.x86_64 -DskipJni -DskipRust -Dcompare-version-with-baselines.skip=true -Dmaven.compiler.failOnWarning=true install ' + } + dir ('eclipse.platform.swt') { + sh '/opt/tools/apache-maven/latest/bin/mvn --batch-mode -Pbuild-individual-bundles -DcheckAllWS=true -DforkCount=0 -Dcompare-version-with-baselines.skip=false -Dmaven.compiler.failOnWarning=true clean verify ' + } + } + } + } + } + post { + always { + junit '**/*.test*/target/surefire-reports/*.xml' + archiveArtifacts artifacts: '**/*.log,**/*.html,**/target/*.jar,**/target/*.zip' + publishIssues issues:[scanForIssues(tool: java()), scanForIssues(tool: mavenConsole())] + } + unstable { + gerritReview labels: [Verified: -1], message: "Build UNSTABLE (test failures) $BUILD_URL" + } + failure { + gerritReview labels: [Verified: -1], message: "Build FAILED $BUILD_URL" + } + } + } + stage('Check freeze period') { + when { + not { + branch 'master' + } + } + steps { + sh "wget https://git.eclipse.org/c/platform/eclipse.platform.releng.aggregator.git/plain/scripts/verifyFreezePeriod.sh" + sh "chmod +x verifyFreezePeriod.sh" + withCredentials([string(credentialsId: 'google-api-key', variable: 'GOOGLE_API_KEY')]) { + sh './verifyFreezePeriod.sh' + } + } + post { + failure { + gerritReview labels: [Verified: -1], message: "Build and test are OK, but Eclipse project is currently in a code freeze period.\nPlease wait for end of code freeze period before merging.\n $BUILD_URL" + } + } + } + } + post { + success { + gerritReview labels: [Verified: 1], message: "Build Succcess $BUILD_URL" + } + } + } +} \ No newline at end of file