From 3af015bff3a78884d70859e4534d405e8580c8b9 Mon Sep 17 00:00:00 2001 From: Greg Turnquist Date: Wed, 19 Jun 2019 13:19:05 -0500 Subject: [PATCH] DATREDIS-1380 - Configure user.name and user.home for CI jobs. Because the CI server runs in a secured, reduced privilege mode, setting the JDK's user.name and user.home variables via MAVEN_OPTS is required. --- .mvn/wrapper/MavenWrapperDownloader.java | 110 ----------------------- Jenkinsfile | 15 ++-- README.adoc | 2 +- 3 files changed, 10 insertions(+), 117 deletions(-) delete mode 100755 .mvn/wrapper/MavenWrapperDownloader.java diff --git a/.mvn/wrapper/MavenWrapperDownloader.java b/.mvn/wrapper/MavenWrapperDownloader.java deleted file mode 100755 index 2e394d5b3..000000000 --- a/.mvn/wrapper/MavenWrapperDownloader.java +++ /dev/null @@ -1,110 +0,0 @@ -/* -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 - - https://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. -*/ - -import java.net.*; -import java.io.*; -import java.nio.channels.*; -import java.util.Properties; - -public class MavenWrapperDownloader { - - /** - * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided. - */ - private static final String DEFAULT_DOWNLOAD_URL = - "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.4.2/maven-wrapper-0.4.2.jar"; - - /** - * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to - * use instead of the default one. - */ - private static final String MAVEN_WRAPPER_PROPERTIES_PATH = - ".mvn/wrapper/maven-wrapper.properties"; - - /** - * Path where the maven-wrapper.jar will be saved to. - */ - private static final String MAVEN_WRAPPER_JAR_PATH = - ".mvn/wrapper/maven-wrapper.jar"; - - /** - * Name of the property which should be used to override the default download url for the wrapper. - */ - private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl"; - - public static void main(String args[]) { - System.out.println("- Downloader started"); - File baseDirectory = new File(args[0]); - System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath()); - - // If the maven-wrapper.properties exists, read it and check if it contains a custom - // wrapperUrl parameter. - File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH); - String url = DEFAULT_DOWNLOAD_URL; - if(mavenWrapperPropertyFile.exists()) { - FileInputStream mavenWrapperPropertyFileInputStream = null; - try { - mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile); - Properties mavenWrapperProperties = new Properties(); - mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream); - url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url); - } catch (IOException e) { - System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'"); - } finally { - try { - if(mavenWrapperPropertyFileInputStream != null) { - mavenWrapperPropertyFileInputStream.close(); - } - } catch (IOException e) { - // Ignore ... - } - } - } - System.out.println("- Downloading from: : " + url); - - File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH); - if(!outputFile.getParentFile().exists()) { - if(!outputFile.getParentFile().mkdirs()) { - System.out.println( - "- ERROR creating output direcrory '" + outputFile.getParentFile().getAbsolutePath() + "'"); - } - } - System.out.println("- Downloading to: " + outputFile.getAbsolutePath()); - try { - downloadFileFromURL(url, outputFile); - System.out.println("Done"); - System.exit(0); - } catch (Throwable e) { - System.out.println("- Error downloading"); - e.printStackTrace(); - System.exit(1); - } - } - - private static void downloadFileFromURL(String urlString, File destination) throws Exception { - URL website = new URL(urlString); - ReadableByteChannel rbc; - rbc = Channels.newChannel(website.openStream()); - FileOutputStream fos = new FileOutputStream(destination); - fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE); - fos.close(); - rbc.close(); - } - -} diff --git a/Jenkinsfile b/Jenkinsfile index 11ca7be1e..2e62b2875 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -36,10 +36,12 @@ pipeline { agent { docker { image 'springci/spring-data-openjdk8-with-redis-3.2:latest' - args '-v $HOME/.m2:/root/.m2' + args '-v $HOME/.m2:/tmp/spring-data-maven-repository' } } steps { + sh 'rm -rf \\?' + // Create link to directory with Redis binaries sh 'ln -sf /work' @@ -47,7 +49,7 @@ pipeline { sh 'make start' // Execute maven test - sh "./mvnw clean test -DrunLongTests=true -B" + sh 'MAVEN_OPTS="-Duser.name=jenkins -Duser.home=/tmp/spring-data-maven-repository" ./mvnw clean test -DrunLongTests=true -B' // Capture resulting exit code from maven (pass/fail) sh 'RESULT=\$?' @@ -57,6 +59,7 @@ pipeline { // Return maven results sh 'exit \$RESULT' + } } } @@ -69,7 +72,7 @@ pipeline { agent { docker { image 'adoptopenjdk/openjdk8:latest' - args '-v $HOME/.m2:/root/.m2' + args '-v $HOME/.m2:/tmp/spring-data-maven-repository' } } @@ -78,7 +81,7 @@ pipeline { } steps { - sh "./mvnw -Pci,snapshot -Dmaven.test.skip=true clean deploy -B" + sh 'MAVEN_OPTS="-Duser.name=jenkins -Duser.home=/tmp/spring-data-maven-repository" ./mvnw -Pci,snapshot -Dmaven.test.skip=true clean deploy -B' } } @@ -89,7 +92,7 @@ pipeline { agent { docker { image 'adoptopenjdk/openjdk8:latest' - args '-v $HOME/.m2:/root/.m2' + args '-v $HOME/.m2:/tmp/spring-data-maven-repository' } } @@ -98,7 +101,7 @@ pipeline { } steps { - sh "./mvnw -Pci,snapshot -Dmaven.test.skip=true clean deploy -B" + sh 'MAVEN_OPTS="-Duser.name=jenkins -Duser.home=/tmp/spring-data-maven-repository" ./mvnw -Pci,snapshot -Dmaven.test.skip=true clean deploy -B' } } } diff --git a/README.adoc b/README.adoc index cf625cc8f..46fa68d13 100644 --- a/README.adoc +++ b/README.adoc @@ -130,7 +130,7 @@ All of these use cases are great reasons to essentially run what the CI server d IMPORTANT: To do this you must have Docker installed on your machine. -1. `docker run -it --mount type=bind,source="$(pwd)",target=/spring-data-redis-github adoptopenjdk/openjdk8:latest /bin/sh` +1. `docker run -it --mount type=bind,source="$(pwd)",target=/spring-data-redis-github springci/spring-data-openjdk8-with-redis-5.0:latest /bin/bash` + This will launch the Docker image and mount your source code at `spring-data-redis-github`. +