This is an automated email from the ASF dual-hosted git repository.

tbouron pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/brooklyn-ui.git


The following commit(s) were added to refs/heads/master by this push:
     new 8865c00  Add jenkinsfile for multibranch job on Jenkins
     new eccc1f3  Merge pull request #149 from tbouron/master
8865c00 is described below

commit 8865c00c66d0983d13a8bfc8371b97ee23ee3896
Author: Thomas Bouron <thomas.bou...@cloudsoftcorp.com>
AuthorDate: Tue Dec 3 11:30:56 2019 +0000

    Add jenkinsfile for multibranch job on Jenkins
---
 Dockerfile  |  5 +++-
 Jenkinsfile | 82 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 86 insertions(+), 1 deletion(-)

diff --git a/Dockerfile b/Dockerfile
index ff26a35..49faea2 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -28,4 +28,7 @@ RUN apt-get update && apt-get install -y git-core \
     dpkg \
     pkg-config \
     nasm \
-    gcc \
\ No newline at end of file
+    gcc \
+
+RUN mkdir -p /var/maven/.m2/ && chmod -R 777 /var/maven/
+ENV MAVEN_CONFIG=/var/maven/.m2
\ No newline at end of file
diff --git a/Jenkinsfile b/Jenkinsfile
new file mode 100644
index 0000000..05aca28
--- /dev/null
+++ b/Jenkinsfile
@@ -0,0 +1,82 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+node(label: 'ubuntu') {
+    catchError {
+        def environmentDockerImage
+
+        def dockerTag = env.BUILD_TAG.replace('%2F', '-')
+
+        withEnv(["DOCKER_TAG=${dockerTag}"]) {
+            stage('Clone repository') {
+                checkout scm
+            }
+
+            stage('Prepare environment') {
+                echo 'Creating maven cache ...'
+                sh 'mkdir -p ${WORKSPACE}/.m2'
+                echo 'Building docker image for test environment ...'
+                environmentDockerImage = docker.build('brooklyn:${DOCKER_TAG}')
+            }
+
+            stage('Run tests') {
+                environmentDockerImage.inside('-i --name 
brooklyn-${DOCKER_TAG} --mount 
type=bind,source="${HOME}/.m2/settings.xml",target=/var/maven/.m2/settings.xml,readonly
 -v ${WORKSPACE}:/usr/build -w /usr/build') {
+                    sh 'mvn clean install -Duser.home=/var/maven 
-Duser.name=jenkins'
+                }
+            }
+
+            // Conditional stage to deploy artifacts, when not building a PR
+            if (env.CHANGE_ID == null) {
+                stage('Deploy artifacts') {
+                    environmentDockerImage.inside('-i --name 
brooklyn-${DOCKER_TAG} --mount 
type=bind,source="${HOME}/.m2/settings.xml",target=/var/maven/.m2/settings.xml,readonly
 -v ${WORKSPACE}:/usr/build -w /usr/build') {
+                        sh 'mvn deploy -DskipTests -Duser.home=/var/maven 
-Duser.name=jenkins'
+                    }
+                }
+
+                // TODO: Publish docker image to 
https://hub.docker.com/r/apache/brooklyn/ ?
+            }
+        }
+    }
+
+    // ---- Post actions steps, to always perform ----
+
+    stage('Publish test results') {
+        // Publish JUnit results
+        junit allowEmptyResults: true, testResults: 
'**/target/surefire-reports/junitreports/*.xml'
+
+        // Publish TestNG results
+        step([
+            $class: 'Publisher',
+            reportFilenamePattern: '**/testng-results.xml'
+        ])
+    }
+
+    // Conditional stage, when not building a PR
+    if (env.CHANGE_ID == null) {
+        stage('Send notifications') {
+            // Send email notifications
+            step([
+                $class: 'Mailer',
+                notifyEveryUnstableBuild: true,
+                recipients: 'd...@brooklyn.apache.org',
+                sendToIndividuals: false
+            ])
+        }
+    }
+}

Reply via email to