From fe79824b19bd9780d733278c84fc7a630f305eb1 Mon Sep 17 00:00:00 2001 From: Basil Crow Date: Tue, 10 Jan 2023 17:56:03 -0800 Subject: [PATCH] Upgrade most dependencies --- .mvn/extensions.xml | 2 +- Dockerfile | 49 ++- Jenkinsfile | 149 ++------- Makefile | 32 +- README.md | 10 +- pom.xml | 300 ++++++++++-------- src/it/war-with-plugins-test/Makefile | 36 --- src/it/war-with-plugins-test/README.md | 13 - .../war-with-plugins-test/packager-config.yml | 59 ---- src/it/war-with-plugins-test/pom.xml | 41 --- src/main/docker/run-pct.sh | 7 +- .../model/hook/PluginCompatTesterHooks.java | 9 +- .../{excludeFilter.xml => excludesFilter.xml} | 0 13 files changed, 245 insertions(+), 462 deletions(-) delete mode 100644 src/it/war-with-plugins-test/Makefile delete mode 100644 src/it/war-with-plugins-test/README.md delete mode 100644 src/it/war-with-plugins-test/packager-config.yml delete mode 100644 src/it/war-with-plugins-test/pom.xml rename src/spotbugs/{excludeFilter.xml => excludesFilter.xml} (100%) diff --git a/.mvn/extensions.xml b/.mvn/extensions.xml index 43d628161..9ac2968bc 100644 --- a/.mvn/extensions.xml +++ b/.mvn/extensions.xml @@ -2,6 +2,6 @@ io.jenkins.tools.incrementals git-changelist-maven-extension - 1.2 + 1.4 diff --git a/Dockerfile b/Dockerfile index 5d20f6379..c7e5d89a0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -20,46 +20,43 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. -FROM maven:3.8.1-jdk-8 as builder +FROM eclipse-temurin:11-jdk AS jdk11-build +FROM groovy:4.0-jdk17 AS groovy-build +FROM maven:3.8.7-eclipse-temurin-17 -# Warmup to avoid downloading the world each time -RUN git clone https://github.com/jenkinsci/plugin-compat-tester &&\ - cd plugin-compat-tester && \ - mvn clean package -Dmaven.test.skip=true dependency:go-offline && \ - mvn clean - -COPY src/ /pct/src/src/ -COPY *.xml /pct/src/ -COPY LICENSE.txt /pct/src/LICENSE.txt - -WORKDIR /pct/src/ -RUN mvn clean package -Dmaven.test.skip=true - -FROM maven:3.8.1-jdk-8 -LABEL Maintainer="Oleg Nenashev " LABEL Description="Base image for running Jenkins Plugin Compat Tester (PCT) against custom plugins and Jenkins cores" Vendor="Jenkins project" ENV JENKINS_WAR_PATH=/pct/jenkins.war ENV PCT_OUTPUT_DIR=/pct/out ENV PCT_TMP=/pct/tmp ENV INSTALL_BUNDLED_SNAPSHOTS=true -RUN apt-get -y update && apt-get install -y groovy apt-transport-https ca-certificates gnupg2 software-properties-common && rm -rf /var/lib/apt/lists/* +RUN apt-get update \ + && apt-get install -y --no-install-recommends unzip \ + && rm -rf /var/lib/apt/lists/* -RUN curl -L --show-error https://download.java.net/java/GA/jdk11/13/GPL/openjdk-11.0.1_linux-x64_bin.tar.gz --output openjdk.tar.gz && \ - echo "7a6bb980b9c91c478421f865087ad2d69086a0583aeeb9e69204785e8e97dcfd openjdk.tar.gz" | sha256sum -c && \ - tar xvzf openjdk.tar.gz && \ - mv jdk-11.0.1/ /usr/local/openjdk-11 && \ - rm openjdk.tar.gz +COPY --from=jdk11-build /opt/java/openjdk /opt/java/openjdk-11 -RUN curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add - -RUN add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable" -RUN apt-get -y update && apt-get install -y docker-ce docker-ce-cli containerd.io +ENV GROOVY_HOME /opt/groovy +COPY --from=groovy-build /opt/groovy $GROOVY_HOME +RUN ln -s "${GROOVY_HOME}/bin/grape" /usr/bin/grape \ + && ln -s "${GROOVY_HOME}/bin/groovy" /usr/bin/groovy \ + && ln -s "${GROOVY_HOME}/bin/groovyc" /usr/bin/groovyc \ + && ln -s "${GROOVY_HOME}/bin/groovyConsole" /usr/bin/groovyConsole \ + && ln -s "${GROOVY_HOME}/bin/groovydoc" /usr/bin/groovydoc \ + && ln -s "${GROOVY_HOME}/bin/groovysh" /usr/bin/groovysh \ + && ln -s "${GROOVY_HOME}/bin/java2groovy" /usr/bin/java2groovy +COPY src/ /pct/src/src/ +COPY *.xml /pct/src/ +COPY LICENSE.txt /pct/src/LICENSE.txt COPY src/main/docker/*.groovy /pct/scripts/ -COPY --from=builder /pct/src/target/plugins-compat-tester-cli.jar /pct/pct-cli.jar COPY src/main/docker/run-pct.sh /usr/local/bin/run-pct COPY src/main/docker/pct-default-settings.xml /pct/default-m2-settings.xml +RUN cd /pct/src \ + && mvn -B -V -ntp clean package -DskipTests \ + && cp target/plugins-compat-tester-cli.jar /pct/pct-cli.jar + # TODO: remove .git addition and generate a commit.txt file once we don't use Docker Hub anymore ADD .git /tmp/repo RUN cd /tmp/repo && git rev-parse HEAD > /commit.txt && rm -rf /tmp/repo diff --git a/Jenkinsfile b/Jenkinsfile index 81b8d7141..1cd5e65ea 100755 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -14,13 +14,14 @@ Map branches = [failFast: true] for (int i = 0; i < platforms.size(); ++i) { String label = platforms[i] boolean publishing = (label == 'linux') + def agentContainerLabel = 'maven-11' + if (label == 'windows') { + agentContainerLabel += '-windows' + } branches[label] = { - node(label) { + node(agentContainerLabel) { stage('Checkout') { - if (isUnix()) { // have to clean the workspace as root - sh 'docker run --rm -v $(pwd):/src -w /src maven:3.6.0-jdk-8 sh -c "rm -rf * .[a-zA-Z]*" || :' - } - checkout scm + infra.checkoutSCM() } stage('Build') { @@ -29,7 +30,7 @@ for (int i = 0; i < platforms.size(); ++i) { if (publishing) { args += '-Dset.changelist' } - infra.runMaven(args) + infra.runMaven(args, 11) } } @@ -53,9 +54,9 @@ parallel(branches) // Integration testing, using a locally built Docker image def itBranches = [:] -itBranches['buildtriggerbadge:2.11 tests success on JDK11'] = { +itBranches['text-finder:1.22 tests success on JDK17'] = { node('docker') { - checkout scm + infra.checkoutSCM() def settingsXML="mvn-settings.xml" infra.retrieveMavenSettingsFile(settingsXML) @@ -65,19 +66,19 @@ itBranches['buildtriggerbadge:2.11 tests success on JDK11'] = { sh 'make docker' } - stage('Download Jenkins 2.164.1') { + stage('Download Jenkins 2.375.1') { sh ''' - curl --silent --show-error --location https://get.jenkins.io/war-stable/2.164.1/jenkins.war --output jenkins.war - echo "65543f5632ee54344f3351b34b305702df12393b3196a95c3771ddb3819b220b jenkins.war" | sha256sum --check + curl -sSL https://get.jenkins.io/war-stable/2.375.1/jenkins.war -o jenkins.war + echo "e96ae7f59d8a009bdbf3551d5e9facd97ff8a6d404c7ea2438ef267988d53427 jenkins.war" | sha256sum --check ''' } stage("Run known successful case(s)") { sh '''docker run --rm \ -v $(pwd)/jenkins.war:/pct/jenkins.war:ro \ - -v $(pwd)/out:/pct/out -e JDK_VERSION=11 \ + -v $(pwd)/out:/pct/out -e JDK_VERSION=17 \ -v $(pwd)/mvn-settings.xml:/pct/m2-settings.xml \ - -e ARTIFACT_ID=buildtriggerbadge -e VERSION=buildtriggerbadge-2.11 \ + -e ARTIFACT_ID=text-finder -e VERSION=text-finder-1.22 \ jenkins/pct ''' archiveArtifacts artifacts: "out/**" @@ -87,9 +88,9 @@ itBranches['buildtriggerbadge:2.11 tests success on JDK11'] = { } } -itBranches['buildtriggerbadge:2.11 tests success on JDK8'] = { +itBranches['text-finder:1.22 tests success on JDK11'] = { node('docker') { - checkout scm + infra.checkoutSCM() def settingsXML="mvn-settings.xml" infra.retrieveMavenSettingsFile(settingsXML) @@ -99,10 +100,10 @@ itBranches['buildtriggerbadge:2.11 tests success on JDK8'] = { sh 'make docker' } - stage('Download Jenkins 2.164.1') { + stage('Download Jenkins 2.375.1') { sh ''' - curl -sL http://mirrors.jenkins.io/war-stable/2.164.1/jenkins.war --output jenkins.war - echo "65543f5632ee54344f3351b34b305702df12393b3196a95c3771ddb3819b220b jenkins.war" | sha256sum --check + curl -sSL https://get.jenkins.io/war-stable/2.375.1/jenkins.war -o jenkins.war + echo "e96ae7f59d8a009bdbf3551d5e9facd97ff8a6d404c7ea2438ef267988d53427 jenkins.war" | sha256sum --check ''' } @@ -110,8 +111,8 @@ itBranches['buildtriggerbadge:2.11 tests success on JDK8'] = { sh '''docker run --rm \ -v $(pwd)/jenkins.war:/pct/jenkins.war:ro \ -v $(pwd)/mvn-settings.xml:/pct/m2-settings.xml \ - -v $(pwd)/out:/pct/out -e JDK_VERSION=8 \ - -e ARTIFACT_ID=buildtriggerbadge -e VERSION=buildtriggerbadge-2.11 \ + -v $(pwd)/out:/pct/out -e JDK_VERSION=11 \ + -e ARTIFACT_ID=text-finder -e VERSION=text-finder-1.22 \ jenkins/pct ''' archiveArtifacts artifacts: "out/**" @@ -121,114 +122,6 @@ itBranches['buildtriggerbadge:2.11 tests success on JDK8'] = { } } -itBranches['google-compute-engine:4.3.3 tests on retrieving the test report'] = { - node('docker') { - checkout scm - def settingsXML="mvn-settings.xml" - infra.retrieveMavenSettingsFile(settingsXML) - - stage('Build Docker Image') { - sh 'make docker' - } - - stage('Download Jenkins 2.263.3') { - sh ''' - curl -sL http://mirrors.jenkins.io/war-stable/2.263.3/jenkins.war --output jenkins.war - echo "a355f58c26afaf2ed08cedeacdbc0de85c821bb7a15edac8255f7a74c6aedf53 jenkins.war" | sha256sum --check - ''' - } - - stage("Execute PCT and evaluate test report") { - sh '''docker run --rm \ - -v $(pwd)/jenkins.war:/pct/jenkins.war:ro \ - -v $(pwd)/mvn-settings.xml:/pct/m2-settings.xml \ - -v $(pwd)/out:/pct/out -e JDK_VERSION=8 \ - -e ARTIFACT_ID=google-compute-engine -e VERSION=google-compute-engine-4.3.3 -e FAIL_ON_ERROR=false\ - jenkins/pct - ''' - archiveArtifacts artifacts: "out/**" - sh 'cat out/pct-report.xml | grep "TEST_FAILURES"' - } - } -} - - -itBranches['WAR with non-default groupId plugins - smoke test'] = { - node('docker') { - checkout scm - - stage('Build Docker Image') { - sh 'make docker' - } - - dir("src/it/war-with-plugins-test") { - def settingsXML="mvn-settings.xml" - infra.retrieveMavenSettingsFile(settingsXML) - - stage('Build the custom WAR file') { - infra.runMaven(["clean", "package"]) - } - - stage('Run the integration test') { - sh '''docker run --rm \ - -v $(pwd)/tmp/output/target/war-with-plugins-test-1.0.war:/pct/jenkins.war:ro \ - -v $(pwd)/mvn-settings.xml:/pct/m2-settings.xml \ - -v $(pwd)/out:/pct/out -e JDK_VERSION=8 \ - -e ARTIFACT_ID=artifact-manager-s3 -e VERSION=artifact-manager-s3-1.6 \ - jenkins/pct \ - -overridenPlugins 'io.jenkins:configuration-as-code=1.20' - ''' - archiveArtifacts artifacts: "out/**" - - sh 'cat out/pct-report.html | grep "Tests : Success"' - } - } - } -} - -//TODO (oleg-nenashev): This step is unstable at the moment, see JENKINS-60583 -Map disabled_itBranches = [:] -disabled_itBranches['CasC tests success'] = { - node('linux') { - checkout scm - - stage('Build PCT CLI') { - withEnv([ - "JAVA_HOME=${tool 'jdk8'}", - "PATH+MVN=${tool 'mvn'}/bin", - 'PATH+JDK=$JAVA_HOME/bin', - ]) { - sh 'make allNoDocker' - } - } - - stage("Run known successful case(s)") { - withEnv([ - "JAVA_HOME=${tool 'jdk8'}", - "MVN_PATH=${tool 'mvn'}/bin", - "PATH+MVN=${tool 'mvn'}/bin", - 'PATH+JDK=$JAVA_HOME/bin', - ]) { - def settingsXML="mvn-settings.xml" - infra.retrieveMavenSettingsFile(settingsXML) - - sh '''java -jar target/plugins-compat-tester-cli.jar \ - -reportFile $(pwd)/out/pct-report.xml \ - -workDirectory $(pwd)/out/work \ - -skipTestCache true \ - -mvn "$MVN_PATH/mvn" \ - -m2SettingsFile $(pwd)/mvn-settings.xml \ - -includePlugins configuration-as-code - ''' - - archiveArtifacts artifacts: "out/**" - - sh 'cat out/pct-report.html | grep "Tests : Success"' - } - } - } -} - itBranches.failFast = false parallel itBranches diff --git a/Makefile b/Makefile index d3ac91376..1b576dfb9 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,7 @@ #Makefile TEST_JDK_HOME?=$(JAVA_HOME) PLUGIN_NAME?=mailer +JDK_VERSION?=17 # Relative path to the WAR file to be used for tests WAR_PATH?=tmp/jenkins-war-$(JENKINS_VERSION).war # Extra options to pass to PCT, works only in the local steps @@ -9,7 +10,7 @@ EXTRA_OPTS?= MVN_EXECUTABLE?=$(shell which mvn) -JENKINS_VERSION=2.164.3 +JENKINS_VERSION=2.375.1 .PHONY: all all: clean package docker @@ -42,8 +43,8 @@ tmp/jenkins-war-$(JENKINS_VERSION).war: tmp print-java-home: echo "Using JAVA_HOME for tests $(TEST_JDK_HOME)" -.PHONY: demo-jdk8 -demo-jdk8: target/plugins-compat-tester-cli.jar $(WAR_PATH) print-java-home +.PHONY: demo +demo: target/plugins-compat-tester-cli.jar $(WAR_PATH) print-java-home java -jar target/plugins-compat-tester-cli.jar \ -reportFile $(CURDIR)/out/pct-report.xml \ -failOnError \ @@ -55,35 +56,22 @@ demo-jdk8: target/plugins-compat-tester-cli.jar $(WAR_PATH) print-java-home -includePlugins $(PLUGIN_NAME) \ $(EXTRA_OPTS) -.PHONY: demo-jdk11 -demo-jdk11: target/plugins-compat-tester-cli.jar $(WAR_PATH) print-java-home - java -jar target/plugins-compat-tester-cli.jar \ - -reportFile $(CURDIR)/out/pct-report.xml \ - -failOnError \ - -workDirectory $(CURDIR)/work \ - -skipTestCache true \ - -mvn $(MVN_EXECUTABLE) \ - -war $(CURDIR)/$(WAR_PATH) \ - -testJDKHome "$(TEST_JDK_HOME)" \ - -includePlugins $(PLUGIN_NAME) \ - $(EXTRA_OPTS) - # We do not automatically rebuild Docker here -.PHONY: demo-jdk11-docker -demo-jdk11-docker: tmp/jenkins-war-$(JENKINS_VERSION).war +.PHONY: demo-docker +demo-docker: tmp/jenkins-war-$(JENKINS_VERSION).war docker run --rm -v maven-repo:/root/.m2 \ -v $(CURDIR)/out:/pct/out \ -v $(CURDIR)/$(WAR_PATH):/pct/jenkins.war:ro \ -e ARTIFACT_ID=$(PLUGIN_NAME) \ - -e JDK_VERSION=11 \ + -e JDK_VERSION=$(JDK_VERSION) \ jenkins/pct -.PHONY: demo-jdk11-docker-src -demo-jdk11-docker-src: $(WAR_PATH) +.PHONY: demo-docker-src +demo-docker-src: $(WAR_PATH) docker run --rm -v maven-repo:/root/.m2 \ -v $(CURDIR)/out:/pct/out \ -v $(CURDIR)/work/$(PLUGIN_NAME):/pct/plugin-src:ro \ -v $(CURDIR)/$(WAR_PATH):/pct/jenkins.war:ro \ -e ARTIFACT_ID=$(PLUGIN_NAME) \ - -e JDK_VERSION=11 \ + -e JDK_VERSION=$(JDK_VERSION) \ jenkins/pct diff --git a/README.md b/README.md index a0cf32d7c..fd7d98c04 100644 --- a/README.md +++ b/README.md @@ -139,15 +139,15 @@ Two options can be passed to PCT CLI for such purpose: You can run the example by running the following command: - make demo-jdk11 -e TEST_JDK_HOME=${YOUR_JDK11_HOME} -e PLUGIN_NAME=git + make demo TEST_JDK_HOME=${YOUR_JDK_HOME} PLUGIN_NAME=git When using the Docker image, it is possible to use `JDK_VERSION` variable to select the version to use. The version needs to be bundled in the docker image. -Currently Java 8 and Java 11 are bundled (JDK_VERSION= {8, 11}). +Currently Java 17 and Java 11 are bundled (JDK_VERSION= {17, 11}). - make demo-jdk11-docker -e JDK_VERSION=11 PLUGIN_NAME=git + make demo-docker JDK_VERSION=17 PLUGIN_NAME=git -Full list of options for JDK11 can be found [here](./Makefile). +Full list of options be found [here](./Makefile). ### Running PCT with different version of dependencies @@ -217,7 +217,7 @@ and then to properly setup the environment. ```batch set JAVA_HOME=... - make demo-jdk8 -e PLUGIN_NAME=artifact-manager-s3 -e WAR_PATH=test-wars/mywar.war -e MVN_EXECUTABLE="C:\ProgramData\chocolatey\bin\mvn.exe" -e EXTRA_OPTS="-overridenPlugins 'io.jenkins:configuration-as-code=1.20'" + make demo PLUGIN_NAME=artifact-manager-s3 WAR_PATH=test-wars/mywar.war MVN_EXECUTABLE="C:\ProgramData\chocolatey\bin\mvn.exe" EXTRA_OPTS="-overridenPlugins 'io.jenkins:configuration-as-code=1.20'" ``` ## Useful links diff --git a/pom.xml b/pom.xml index 16d22fcc2..b1d872bab 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.jenkins-ci jenkins - 1.67 + 1.93 @@ -26,124 +26,51 @@ 999999-SNAPSHOT jenkinsci/plugin-compat-tester - UTF-8 - 1.2.3 - 1.5 - false - 8 - - - - - 1.6.1 + 1.4.5 + 1.6 Max - ${basedir}/src/spotbugs/excludeFilter.xml - org.jenkins-ci.main - jenkins-core - 1.625.3 - - - - org.jenkins-ci - version-number - 1.6 - - - - com.google.code.findbugs - annotations - 3.0.1u2 - - - - com.google.guava - guava - 15.0 - - - - javax.servlet - javax.servlet-api - 4.0.1 - - - - org.jvnet.hudson - xstream - 1.4.7-jenkins-1 + commons-io + commons-io + 2.11.0 - - - org.slf4j - slf4j-api - 1.7.25 - - net.java.dev.jna jna - 4.1.0 + 5.12.1 - - ch.qos.logback - logback-core - ${logbackVersion} - - - - ch.qos.logback - logback-classic - ${logbackVersion} - - - - ch.qos.logback - logback-access - ${logbackVersion} - - - - - org.powermock - powermock-module-junit4 - ${powermock.version} - - - org.powermock - powermock-api-mockito - ${powermock.version} + org.slf4j + slf4j-api + 2.0.6 - - antlr - antlr - 2.7.7 - ch.qos.logback logback-access + ${logbackVersion} ch.qos.logback logback-classic + ${logbackVersion} ch.qos.logback logback-core + ${logbackVersion} com.beust jcommander - 1.78 + 1.82 com.google.code.maven-scm-provider-svnjava @@ -151,13 +78,14 @@ 1.12 - javax.servlet - javax.servlet-api + jakarta.servlet + jakarta.servlet-api + 4.0.4 org.apache.maven maven-model - 3.0.2 + 3.8.7 org.apache.maven.scm @@ -229,21 +157,10 @@ maven-scm-provider-vss ${maven.scm.providers.version} - - org.codehaus.plexus - plexus-classworlds - 2.6.0 - org.codehaus.plexus plexus-container-default - 2.1.0 - - - com.google.collections - google-collections - - + 2.1.1 org.codehaus.plexus @@ -253,28 +170,163 @@ org.codehaus.plexus plexus-utils - 3.4.1 - - - org.jenkins-ci - version-number + 3.5.0 org.jenkins-ci.main jenkins-core - - - org.jvnet.hudson - xstream + 2.386 + + + args4j + args4j + + + com.google.inject + guice + + + com.infradna.tool + bridge-method-annotation + + + com.sun.solaris + embedded_su4j + + + com.sun.xml.txw2 + txw2 + + + commons-jelly + commons-jelly-tags-fmt + + + commons-jelly + commons-jelly-tags-xml + + + io.jenkins.stapler + jenkins-stapler-support + + + jakarta.servlet.jsp.jstl + jakarta.servlet.jsp.jstl-api + + + jaxen + jaxen + + + jline + jline + + + net.java.sezpoz + sezpoz + + + net.sf.kxml + kxml2 + + + org.antlr + antlr4-runtime + + + org.apache.commons + commons-compress + + + org.codehaus.groovy + groovy-all + + + org.connectbot.jbcrypt + jbcrypt + + + org.fusesource.jansi + jansi + + + org.jenkins-ci + annotation-indexer + + + org.jenkins-ci + crypto-util + + + org.jenkins-ci + memory-monitor + + + org.jenkins-ci.main + cli + + + org.jenkins-ci.main + websocket-spi + + + org.jfree + jfreechart + + + org.jvnet.hudson + commons-jelly-tags-define + + + org.jvnet.robust-http-client + robust-http-client + + + org.jvnet.winp + winp + + + org.kohsuke + windows-package-checker + + + org.kohsuke.jinterop + j-interop + + + org.kohsuke.stapler + stapler-adjunct-codemirror + + + org.kohsuke.stapler + stapler-adjunct-timeline + + + org.ow2.asm + asm + + + org.ow2.asm + asm-analysis + + + org.ow2.asm + asm-commons + + + org.ow2.asm + asm-tree + + + org.ow2.asm + asm-util + + org.reflections reflections - 0.9.12 - - - org.slf4j - slf4j-api + 0.10.2 junit @@ -286,16 +338,6 @@ test-annotations test - - org.powermock - powermock-api-mockito - test - - - org.powermock - powermock-module-junit4 - test - @@ -318,11 +360,11 @@ org.apache.maven.plugins maven-jar-plugin - 3.2.2 + 3.3.0 - java.base/java.lang.reflect java.base/java.text java.base/java.util java.desktop/java.awt.font + java.base/java.util @@ -330,7 +372,7 @@ org.apache.maven.plugins maven-shade-plugin - 3.2.2 + 3.4.1 diff --git a/src/it/war-with-plugins-test/Makefile b/src/it/war-with-plugins-test/Makefile deleted file mode 100644 index 54b57502b..000000000 --- a/src/it/war-with-plugins-test/Makefile +++ /dev/null @@ -1,36 +0,0 @@ -#Makefile -TEST_NAME=war-with-plugins-test -TEST_VERSION=1.0 -CUSTOM_JENKINS_WAR=tmp/output/target/$(TEST_NAME)-$(TEST_VERSION).war - -.PRECIOUS: $(CUSTOM_JENKINS_WAR) -$(CUSTOM_JENKINS_WAR): tmp - mvn clean package - touch $(CUSTOM_JENKINS_WAR).war - -tmp: - mkdir tmp - -out: - mkdir out - -.PHONY: build -build: $(CUSTOM_JENKINS_WAR) - -.PHONY: run -run: - JENKINS_HOME=$(CURDIR)/work java -jar tmp/output/target/war-with-plugins-test-1.0.war - -.PHONY: test -test: out $(CUSTOM_JENKINS_WAR) - docker run -ti --rm -v maven-repo:/root/.m2 \ - -v $(CURDIR)/out:/pct/out \ - -v $(CURDIR)/$(CUSTOM_JENKINS_WAR):/pct/jenkins.war:ro \ - -e ARTIFACT_ID=artifact-manager-s3 \ - -e VERSION=artifact-manager-s3-1.6 \ - jenkins/pct \ - -overridenPlugins 'io.jenkins:configuration-as-code=1.20' - -clean: - rm -rf out - rm -rf tmp diff --git a/src/it/war-with-plugins-test/README.md b/src/it/war-with-plugins-test/README.md deleted file mode 100644 index 0a45011c4..000000000 --- a/src/it/war-with-plugins-test/README.md +++ /dev/null @@ -1,13 +0,0 @@ -Integration test for Jenkins WAR with bundled plugins -===================================================== - -The test uses [Custom WAR Packager](https://github.com/jenkinsci/custom-war-packager) as a tool to build a custom WAR. -It basically implements a smoke test for the [JENKINS-57935](https://issues.jenkins-ci.org/browse/JENKINS-57935) fix -which is related to improper `groupId` resolution for optional dependencies. - -Running locally: - -``` - make test -``` - diff --git a/src/it/war-with-plugins-test/packager-config.yml b/src/it/war-with-plugins-test/packager-config.yml deleted file mode 100644 index b4db16fff..000000000 --- a/src/it/war-with-plugins-test/packager-config.yml +++ /dev/null @@ -1,59 +0,0 @@ -bundle: - groupId: "io.jenkins.tools.war-packager.demo" - artifactId: "war-with-plugins-test" - vendor: "Jenkins project" -war: - groupId: "org.jenkins-ci.main" - artifactId: "jenkins-war" - source: - version: 2.164.3 -plugins: - - groupId: "io.jenkins.plugins" - artifactId: "artifact-manager-s3" - source: - version: 1.6 - - groupId: "org.jenkins-ci.plugins.workflow" - artifactId: "workflow-step-api" - source: - version: 2.19 - - groupId: "org.jenkins-ci.plugins" - artifactId: "scm-api" - source: - version: 2.3.0 - # Resolved upper bounds conflict for artifact-manager-s3 - - groupId: "org.jenkins-ci.plugins" - artifactId: "ssh-credentials" - source: - version: 1.17 - - groupId: "org.jenkins-ci.plugins" - artifactId: "git" - source: - version: 4.0.0-rc - - groupId: "org.jenkins-ci.plugins.workflow" - artifactId: "workflow-cps" - source: - version: 2.65 - - groupId: "org.jenkins-ci.plugins.workflow" - artifactId: "workflow-job" - source: - version: 2.32 - - groupId: "org.jenkins-ci.plugins" - artifactId: "junit" - source: - version: 1.20 - - groupId: "org.jenkins-ci.plugins" - artifactId: "script-security" - source: - version: 1.56 - - groupId: "org.jenkins-ci.plugins" - artifactId: "structs" - source: - version: 1.18 - - groupId: "org.jenkins-ci.plugins" - artifactId: "swarm" - source: - version: 3.17 - - groupId: "org.jenkins-ci.plugins" - artifactId: "matrix-project" - source: - version: 1.12 \ No newline at end of file diff --git a/src/it/war-with-plugins-test/pom.xml b/src/it/war-with-plugins-test/pom.xml deleted file mode 100644 index ce8656ae8..000000000 --- a/src/it/war-with-plugins-test/pom.xml +++ /dev/null @@ -1,41 +0,0 @@ - - - 4.0.0 - - io.jenkins.tools.pct.it - war-with-plugins-test - 1.0-SNAPSHOT - - pom - - - - - io.jenkins.tools.custom-war-packager - custom-war-packager-maven-plugin - 1.5 - - - package - - custom-war - - - packager-config.yml - 1.0 - - - - - - - - - - repo.jenkins-ci.org - https://repo.jenkins-ci.org/public/ - - - - diff --git a/src/main/docker/run-pct.sh b/src/main/docker/run-pct.sh index 792b60398..4172c9a3b 100755 --- a/src/main/docker/run-pct.sh +++ b/src/main/docker/run-pct.sh @@ -157,7 +157,12 @@ mkdir -p "${PCT_OUTPUT_DIR}" ### # Determine if we test the plugin against another JDK ### -TEST_JDK_HOME=${TEST_JAVA_ARGS:-"/usr/local/openjdk-${JDK_VERSION:-8}"} +TEST_JDK_HOME=${TEST_JDK_HOME:-"/opt/java/openjdk"} +if [[ "${TEST_JDK_HOME}" == "/opt/java/openjdk" ]] && [[ -n "${JDK_VERSION}" ]] && [[ "${JDK_VERSION}" != 17 ]]; then + TEST_JDK_HOME+="-${JDK_VERSION}" + export JAVA_HOME="${TEST_JDK_HOME}" + export PATH="${JAVA_HOME}/bin:${PATH}" +fi TEST_JAVA_ARGS="'${TEST_JAVA_ARGS:-} -Xmx768M -Djava.awt.headless=true -Djdk.net.URLClassPath.disableClassPathURLCheck=true'" pctExitCode=0 diff --git a/src/main/java/org/jenkins/tools/test/model/hook/PluginCompatTesterHooks.java b/src/main/java/org/jenkins/tools/test/model/hook/PluginCompatTesterHooks.java index 34758b319..2ab5efad7 100644 --- a/src/main/java/org/jenkins/tools/test/model/hook/PluginCompatTesterHooks.java +++ b/src/main/java/org/jenkins/tools/test/model/hook/PluginCompatTesterHooks.java @@ -18,6 +18,7 @@ import java.util.Set; import java.util.stream.Collectors; import org.reflections.Reflections; +import org.reflections.util.ConfigurationBuilder; /** * Loads and executes hooks for modifying the state of Plugin Compatibility Tester at different @@ -141,7 +142,13 @@ private Map> findHooks(String stage) { Map> sortedHooks = new HashMap<>(); // Search for all hooks defined within the given classpath prefix - Reflections reflections = new Reflections(hookPrefixes.toArray(new String[0]), classLoaders.toArray(new ClassLoader[classLoaders.size()])); + ConfigurationBuilder configurationBuilder = new ConfigurationBuilder(); + ClassLoader[] loaders = classLoaders.toArray(new ClassLoader[classLoaders.size()]); + configurationBuilder.addClassLoaders(loaders); + for (String hookPrefix : hookPrefixes) { + configurationBuilder.forPackage(hookPrefix, loaders); + } + Reflections reflections = new Reflections(configurationBuilder); Set> subTypes; // Find all steps for a given stage. Long due to casting diff --git a/src/spotbugs/excludeFilter.xml b/src/spotbugs/excludesFilter.xml similarity index 100% rename from src/spotbugs/excludeFilter.xml rename to src/spotbugs/excludesFilter.xml