From d066aa32ebfe2ead4f9a99879845602fde6b32be Mon Sep 17 00:00:00 2001 From: Martin Stockhammer Date: Fri, 4 May 2018 19:30:47 +0200 Subject: [PATCH] Adding Jenkinsfile for webui tests --- Jenkinsfile-itest | 194 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 194 insertions(+) create mode 100644 Jenkinsfile-itest diff --git a/Jenkinsfile-itest b/Jenkinsfile-itest new file mode 100644 index 000000000..f8ecb26e7 --- /dev/null +++ b/Jenkinsfile-itest @@ -0,0 +1,194 @@ +/* + * 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. + */ + +/** + * UI-Test Build file for Jenkins Multibranch pipeline. + * + * The pipeline runs only the UI tests. + * + */ + +LABEL = 'ubuntu' +buildJdk = 'JDK 1.8 (latest)' +buildMvn = 'Maven 3.5.2' +deploySettings = 'DefaultMavenSettingsProvider.1331204114925' + +pipeline { + agent { + label "${LABEL}" + } + + stages { + + + stage('Checkout') { + steps { + script { + echo "Info: Job-Name=${JOB_NAME}, Branch=${BRANCH_NAME}, Workspace=${PWD}" + } + checkout scm + } + post { + failure { + notifyBuild("Checkout failure (${currentBuild.currentResult})") + } + } + } + + stage('Test htmlunit') { + steps { + timeout(120) { + withMaven(maven: buildMvn, jdk: buildJdk, + mavenSettingsConfig: deploySettings, + mavenLocalRepo: ".repository", + options: [concordionPublisher(disabled: true), dependenciesFingerprintPublisher(disabled: true), + findbugsPublisher(disabled: true), artifactsPublisher(disabled: true), + invokerPublisher(disabled: true), jgivenPublisher(disabled: true), + junitPublisher(disabled: true, ignoreAttachments: false), + openTasksPublisher(disabled: true), pipelineGraphPublisher(disabled: true)] + ) + { + sh "chmod 755 ./src/ci/scripts/prepareWorkspace.sh" + sh "./src/ci/scripts/prepareWorkspace.sh" + // Needs a lot of time to reload the repository files, try without cleanup + // Not sure, but maybe + // sh "rm -rf .repository" + + // Run test phase / ignore test failures + // -B: Batch mode + // -U: Force snapshot update + // -e: Produce execution error messages + // -fae: Fail at the end + // -Dmaven.compiler.fork=true: Compile in a separate forked process + // -Pci-server: Profile for CI-Server + // -Pit-js: Run the selenium testsh + sh "mvn clean install -B -V -U -e -fae -Dmaven.compiler.fork=true -DmaxWaitTimeInMs=2000 -Pci-server -Pit-js -DtrimStackTrace=false -pl :archiva-webapp-test" + + } + } + } + post { + always { + junit testResults: '**/target/surefire-reports/TEST-*.xml' + } + success { + script { + def previousResult = currentBuild.previousBuild?.result + if (previousResult && !currentBuild.isWorseOrEqual(previousResult)) { + notifyBuild("Fixed: ${currentBuild.currentResult}") + } + } + } + failure { + notifyBuild("Build / Test failure (${currentBuild.currentResult})") + } + } + } + + // Uses a docker container that is started by script. Maybe we could use the docker functionality + // of the jenkins pipeline in the future. + stage('Test chrome') { + steps { + timeout(120) { + withMaven(maven: buildMvn, jdk: buildJdk, + mavenSettingsConfig: deploySettings, + mavenLocalRepo: ".repository", + options: [concordionPublisher(disabled: true), dependenciesFingerprintPublisher(disabled: true), + findbugsPublisher(disabled: true), artifactsPublisher(disabled: true), + invokerPublisher(disabled: true), jgivenPublisher(disabled: true), + junitPublisher(disabled: true, ignoreAttachments: false), + openTasksPublisher(disabled: true), pipelineGraphPublisher(disabled: true)] + ) + { + sh "chmod 755 ./src/ci/scripts/prepareWorkspace.sh" + sh "./src/ci/scripts/prepareWorkspace.sh" + sh "chmod 755 src/ci/scripts/container_webtest.sh" + sh "src/ci/scripts/container_webtest.sh start" + // Needs a lot of time to reload the repository files, try without cleanup + // Not sure, but maybe + // sh "rm -rf .repository" + + // Run test phase / ignore test failures + // -B: Batch mode + // -U: Force snapshot update + // -e: Produce execution error messages + // -fae: Fail at the end + // -Pci-server: Profile for CI Server + // -Pit-js: Runs the Selenium tests + // -Pchrome: Activates the Selenium Chrome Test Agent + sh "mvn clean install -B -V -U -e -fae -Dmaven.compiler.fork=true -DmaxWaitTimeInMs=2000 -DseleniumRemote=true -Pci-server -Pit-js -Pchrome -pl :archiva-webapp-test -DtrimStackTrace=false" + + } + } + } + post { + always { + sh "src/ci/scripts/container_webtest.sh stop" + junit testResults: '**/target/surefire-reports/TEST-*.xml' + } + success { + script { + def previousResult = currentBuild.previousBuild?.result + if (previousResult && !currentBuild.isWorseOrEqual(previousResult)) { + notifyBuild("Fixed: ${currentBuild.currentResult}") + } + } + } + failure { + notifyBuild("Build / Test failure (${currentBuild.currentResult})") + } + } + } + + } + post { + unstable { + notifyBuild("Unstable Build (${currentBuild.currentResult})") + } + always { + cleanWs deleteDirs: true, notFailBuild: true, patterns: [[pattern: '.repository', type: 'EXCLUDE']] + } + } +} + +// Send a notification about the build status +def notifyBuild(String buildStatus) { + // default the value + buildStatus = buildStatus ?: "UNKNOWN" + + def email = "notifications@archiva.apache.org" + def summary = "${env.JOB_NAME}#${env.BUILD_NUMBER} - ${buildStatus} - ${currentBuild?.currentStatus}" + def detail = """

Job: ${env.JOB_NAME} [#${env.BUILD_NUMBER}]

+

${buildStatus}

+ + + + +
Build${env.BUILD_URL}
Console${env.BUILD_URL}console
Test Report${env.BUILD_URL}testReport/
+ """ + + emailext( + to: email, + subject: summary, + body: detail, + mimeType: 'text/html' + ) +} + +// vim: et:ts=2:sw=2:ft=groovy -- 2.39.5