Bug 574667 - Use Jenkins multibranch pipeline based on
Jenkinsfile+Gerrit

Change-Id: I820f5aa382630a3516e6b3597921cb3ad483da12
Reviewed-on: https://git.eclipse.org/r/c/platform/eclipse.platform.swt.binaries/+/182801
Tested-by: Platform Bot <platform-bot@eclipse.org>
Reviewed-by: Mickael Istria <mistria@redhat.com>
diff --git a/Jenkinsfile b/Jenkinsfile
new file mode 100644
index 0000000..066de97
--- /dev/null
+++ b/Jenkinsfile
@@ -0,0 +1,151 @@
+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: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'CloneOption', timeout: 120]], submoduleCfg: [], userRemoteConfigs: [[url: 'https://git.eclipse.org/r/platform/eclipse.platform.swt.git']]])
+					}
+					dir ('eclipse.platform.swt.binaries') {
+						checkout scm
+					}
+				}
+			}
+		}
+		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 {
+				container('jnlp') {
+					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"
+		}
+	}
+}