Skip to content

Commit

Permalink
Upgrade most dependencies
Browse files Browse the repository at this point in the history
  • Loading branch information
basil committed Jan 11, 2023
1 parent 8bdba69 commit fe79824
Show file tree
Hide file tree
Showing 13 changed files with 245 additions and 462 deletions.
2 changes: 1 addition & 1 deletion .mvn/extensions.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@
<extension>
<groupId>io.jenkins.tools.incrementals</groupId>
<artifactId>git-changelist-maven-extension</artifactId>
<version>1.2</version>
<version>1.4</version>
</extension>
</extensions>
49 changes: 23 additions & 26 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -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 <o.v.nenashev@gmail.com>"
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
Expand Down
149 changes: 21 additions & 128 deletions Jenkinsfile
Original file line number Diff line number Diff line change
Expand Up @@ -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') {
Expand All @@ -29,7 +30,7 @@ for (int i = 0; i < platforms.size(); ++i) {
if (publishing) {
args += '-Dset.changelist'
}
infra.runMaven(args)
infra.runMaven(args, 11)
}
}

Expand All @@ -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)

Expand All @@ -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/**"
Expand All @@ -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)

Expand All @@ -99,19 +100,19 @@ 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
'''
}

stage("Run known successful case(s)") {
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/**"
Expand All @@ -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

Expand Down
32 changes: 10 additions & 22 deletions Makefile
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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
Expand Down Expand Up @@ -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 \
Expand All @@ -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
10 changes: 5 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down Expand Up @@ -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
Expand Down

0 comments on commit fe79824

Please sign in to comment.