From 057257b12afc402146bcaa0c70ab4196d816d9ee Mon Sep 17 00:00:00 2001 From: Basil Crow Date: Thu, 16 Jan 2025 14:39:08 -0800 Subject: [PATCH] Migrate from EE 8 to EE 9 --- Jenkinsfile | 1 - .../pipeline/modeldefinition/ASTSchema.java | 8 +++---- .../RestartDeclarativePipelineAction.java | 8 +++---- .../endpoints/ModelConverterAction.java | 24 +++++++++---------- .../generator/DirectiveGenerator.java | 4 ++-- .../AbstractDeclarativeTest.java | 16 ------------- .../BuildConditionResponderTest.java | 4 +++- .../modeldefinition/DurabilityTest.java | 6 +++-- .../modeldefinition/PostStageTest.java | 5 +++- .../RestartDeclarativePipelineActionTest.java | 3 ++- .../ModelConverterActionStepsTest.java | 6 ++--- .../generator/DirectiveGeneratorTest.java | 3 ++- pom.xml | 8 +++---- 13 files changed, 44 insertions(+), 52 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 20d69c85f..aeaca7e5a 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -8,5 +8,4 @@ buildPlugin( configurations: [ [platform: 'linux', jdk: 21], [platform: 'windows', jdk: 17], - [platform: 'linux', jdk: 11], ]) diff --git a/pipeline-model-api/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/ASTSchema.java b/pipeline-model-api/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/ASTSchema.java index 0b06bfa9c..191e1d351 100644 --- a/pipeline-model-api/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/ASTSchema.java +++ b/pipeline-model-api/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/ASTSchema.java @@ -29,10 +29,10 @@ import com.github.fge.jsonschema.main.JsonSchemaFactory; import hudson.Extension; import hudson.model.RootAction; -import org.kohsuke.stapler.StaplerRequest; -import org.kohsuke.stapler.StaplerResponse; +import org.kohsuke.stapler.StaplerRequest2; +import org.kohsuke.stapler.StaplerResponse2; -import javax.servlet.ServletException; +import jakarta.servlet.ServletException; import java.io.IOException; /** @@ -60,7 +60,7 @@ public String getDisplayName() { } @SuppressWarnings("unused") - public void doJson(StaplerRequest req, StaplerResponse rsp) throws IOException, ServletException { + public void doJson(StaplerRequest2 req, StaplerResponse2 rsp) throws IOException, ServletException { rsp.serveFile(req, getClass().getResource("/ast-schema.json")); } diff --git a/pipeline-model-definition/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/actions/RestartDeclarativePipelineAction.java b/pipeline-model-definition/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/actions/RestartDeclarativePipelineAction.java index 3204fed2b..89b5e79e1 100644 --- a/pipeline-model-definition/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/actions/RestartDeclarativePipelineAction.java +++ b/pipeline-model-definition/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/actions/RestartDeclarativePipelineAction.java @@ -50,15 +50,15 @@ import org.kohsuke.accmod.restrictions.NoExternalUse; import org.kohsuke.stapler.HttpResponse; import org.kohsuke.stapler.QueryParameter; -import org.kohsuke.stapler.StaplerRequest; -import org.kohsuke.stapler.StaplerResponse; +import org.kohsuke.stapler.StaplerRequest2; +import org.kohsuke.stapler.StaplerResponse2; import org.kohsuke.stapler.export.Exported; import org.kohsuke.stapler.export.ExportedBean; import org.kohsuke.stapler.interceptor.RequirePOST; import edu.umd.cs.findbugs.annotations.CheckForNull; import edu.umd.cs.findbugs.annotations.NonNull; -import javax.servlet.ServletException; +import jakarta.servlet.ServletException; import java.io.IOException; import java.util.*; @@ -137,7 +137,7 @@ public HttpResponse doRestartPipeline(@QueryParameter String stageName) { @Restricted(DoNotUse.class) @RequirePOST - public void doRestart(StaplerRequest req, StaplerResponse rsp) throws ServletException, IOException { + public void doRestart(StaplerRequest2 req, StaplerResponse2 rsp) throws ServletException, IOException { if (!isRestartEnabled()) { throw new AccessDeniedException("not allowed to restart"); // AccessDeniedException2 requires us to look up the specific Permission } diff --git a/pipeline-model-definition/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/endpoints/ModelConverterAction.java b/pipeline-model-definition/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/endpoints/ModelConverterAction.java index 605dccf26..dfdb4b36f 100644 --- a/pipeline-model-definition/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/endpoints/ModelConverterAction.java +++ b/pipeline-model-definition/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/endpoints/ModelConverterAction.java @@ -43,13 +43,13 @@ import org.jenkinsci.plugins.pipeline.modeldefinition.parser.JSONParser; import org.jenkinsci.plugins.pipeline.modeldefinition.validator.ErrorCollector; import org.kohsuke.stapler.HttpResponse; -import org.kohsuke.stapler.StaplerRequest; +import org.kohsuke.stapler.StaplerRequest2; import org.kohsuke.stapler.interceptor.RequirePOST; -import javax.servlet.FilterChain; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.FilterChain; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; import java.io.StringWriter; @@ -82,7 +82,7 @@ public String getDisplayName() { @SuppressWarnings("unused") @RequirePOST - public HttpResponse doToJenkinsfile(StaplerRequest req) { + public HttpResponse doToJenkinsfile(StaplerRequest2 req) { Jenkins.get().checkPermission(Jenkins.READ); JSONObject result = new JSONObject(); @@ -122,7 +122,7 @@ public HttpResponse doToJenkinsfile(StaplerRequest req) { @SuppressWarnings("unused") @RequirePOST - public HttpResponse doToJson(StaplerRequest req) { + public HttpResponse doToJson(StaplerRequest2 req) { Jenkins.get().checkPermission(Jenkins.READ); JSONObject result = new JSONObject(); @@ -150,7 +150,7 @@ public HttpResponse doToJson(StaplerRequest req) { @SuppressWarnings("unused") @RequirePOST - public HttpResponse doStepsToJson(StaplerRequest req) { + public HttpResponse doStepsToJson(StaplerRequest2 req) { Jenkins.get().checkPermission(Jenkins.READ); JSONObject result = new JSONObject(); @@ -178,7 +178,7 @@ public HttpResponse doStepsToJson(StaplerRequest req) { @SuppressWarnings("unused") @RequirePOST - public HttpResponse doStepsToJenkinsfile(StaplerRequest req) { + public HttpResponse doStepsToJenkinsfile(StaplerRequest2 req) { Jenkins.get().checkPermission(Jenkins.READ); JSONObject result = new JSONObject(); @@ -234,7 +234,7 @@ public HttpResponse doStepsToJenkinsfile(StaplerRequest req) { @SuppressWarnings("unused") @RequirePOST - public HttpResponse doValidateJenkinsfile(StaplerRequest req) { + public HttpResponse doValidateJenkinsfile(StaplerRequest2 req) { Jenkins.get().checkPermission(Jenkins.READ); JSONObject result = new JSONObject(); @@ -262,7 +262,7 @@ public HttpResponse doValidateJenkinsfile(StaplerRequest req) { @SuppressWarnings("unused") @RequirePOST - public HttpResponse doValidateJson(StaplerRequest req) { + public HttpResponse doValidateJson(StaplerRequest2 req) { Jenkins.get().checkPermission(Jenkins.READ); JSONObject result = new JSONObject(); @@ -304,7 +304,7 @@ public HttpResponse doValidateJson(StaplerRequest req) { @SuppressWarnings("unused") @RequirePOST - public HttpResponse doValidate(StaplerRequest req) { + public HttpResponse doValidate(StaplerRequest2 req) { Jenkins.get().checkPermission(Jenkins.READ); List output = new ArrayList<>(); diff --git a/pipeline-model-definition/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/generator/DirectiveGenerator.java b/pipeline-model-definition/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/generator/DirectiveGenerator.java index 4f48e53f3..78ad9783e 100644 --- a/pipeline-model-definition/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/generator/DirectiveGenerator.java +++ b/pipeline-model-definition/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/generator/DirectiveGenerator.java @@ -48,7 +48,7 @@ import org.kohsuke.stapler.HttpResponse; import org.kohsuke.stapler.HttpResponses; import org.kohsuke.stapler.QueryParameter; -import org.kohsuke.stapler.StaplerRequest; +import org.kohsuke.stapler.StaplerRequest2; import edu.umd.cs.findbugs.annotations.NonNull; import java.util.*; @@ -75,7 +75,7 @@ public List getDirectives() { } @Restricted(DoNotUse.class) // accessed via REST API - public HttpResponse doGenerateDirective(StaplerRequest req, @QueryParameter String json) throws Exception { + public HttpResponse doGenerateDirective(StaplerRequest2 req, @QueryParameter String json) throws Exception { // TODO is there not an easier way to do this? Maybe Descriptor.newInstancesFromHeteroList on a one-element JSONArray? JSONObject jsonO = JSONObject.fromObject(json); Jenkins j = Jenkins.get(); diff --git a/pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/AbstractDeclarativeTest.java b/pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/AbstractDeclarativeTest.java index bd9abe8fb..6d1d2c94c 100644 --- a/pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/AbstractDeclarativeTest.java +++ b/pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/AbstractDeclarativeTest.java @@ -23,9 +23,7 @@ */ package org.jenkinsci.plugins.pipeline.modeldefinition; -import hudson.Launcher; import hudson.model.ParameterDefinition; -import hudson.util.StreamTaskListener; import jenkins.plugins.git.GitSampleRepoRule; import net.sf.json.JSONArray; import net.sf.json.JSONObject; @@ -40,7 +38,6 @@ import java.util.List; import java.util.Map; -import static org.hamcrest.Matchers.is; import static org.junit.Assert.assertNotNull; import static org.junit.Assume.assumeTrue; @@ -165,19 +162,6 @@ protected void prepRepoWithJenkinsfileFromString(String jf) throws Exception { sampleRepo.git("commit", "--message=files"); } - protected void assumeSh() throws Exception { - Launcher.LocalLauncher localLauncher = new Launcher.LocalLauncher(StreamTaskListener.NULL); - - if (!localLauncher.isUnix()) { - try { - Assume.assumeThat("Running sh command succeeds", localLauncher.launch().cmds("sh", "--version").join(), is(0)); - } catch (IOException x) { - Assume.assumeNoException("Have have a shell variant (sh, bash, etc)", x); - } - } - } - - protected T getParameterOfType(List params, Class c) { for (ParameterDefinition p : params) { if (c.isInstance(p)) { diff --git a/pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/BuildConditionResponderTest.java b/pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/BuildConditionResponderTest.java index 8b60b28a2..85c62063e 100644 --- a/pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/BuildConditionResponderTest.java +++ b/pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/BuildConditionResponderTest.java @@ -24,6 +24,7 @@ package org.jenkinsci.plugins.pipeline.modeldefinition; import org.htmlunit.html.HtmlPage; +import hudson.Functions; import hudson.model.Result; import hudson.model.queue.QueueTaskFuture; import jenkins.model.Jenkins; @@ -41,6 +42,7 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; +import static org.junit.Assume.assumeFalse; /** * @author Andrew Bayer @@ -273,7 +275,7 @@ public void changedAndNotSuccess() throws Exception { @Issue("JENKINS-50652") @Test public void abortedShouldNotTriggerFailure() throws Exception { - assumeSh(); + assumeFalse("requires sh/sleep", Functions.isWindows()); WorkflowJob job = j.jenkins.createProject(WorkflowJob.class, "abort"); job.setDefinition(new CpsFlowDefinition("" + "pipeline {\n" + diff --git a/pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/DurabilityTest.java b/pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/DurabilityTest.java index 99fa3e8fe..a62dd8008 100644 --- a/pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/DurabilityTest.java +++ b/pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/DurabilityTest.java @@ -24,6 +24,7 @@ package org.jenkinsci.plugins.pipeline.modeldefinition; +import hudson.Functions; import hudson.model.Result; import hudson.model.labels.LabelAtom; import hudson.slaves.DumbSlave; @@ -52,6 +53,7 @@ import java.util.logging.Level; import static org.junit.Assert.*; +import static org.junit.Assume.assumeFalse; public class DurabilityTest extends AbstractDeclarativeTest { @ClassRule @@ -70,7 +72,7 @@ public static void resetSplitting() { @Test public void survivesRestart() throws Exception { - assumeSh(); + assumeFalse("requires sh/sleep", Functions.isWindows()); story.addStep(new Statement() { @Override public void evaluate() throws Throwable { @@ -156,7 +158,7 @@ public void survivesRestart() throws Exception { @Test public void restartDeserializingErrorWhenSplitChanges() throws Exception { - assumeSh(); + assumeFalse("requires sh/sleep", Functions.isWindows()); // If script splitting was on and it is turned off, // pipelines that are running during restart will fail to deserialize and continue after restart diff --git a/pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/PostStageTest.java b/pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/PostStageTest.java index 78555ee4a..461b9ab9b 100644 --- a/pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/PostStageTest.java +++ b/pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/PostStageTest.java @@ -23,6 +23,7 @@ */ package org.jenkinsci.plugins.pipeline.modeldefinition; +import hudson.Functions; import hudson.model.Result; import hudson.model.Slave; import org.jenkinsci.plugins.pipeline.modeldefinition.parser.RuntimeASTTransformer; @@ -34,6 +35,8 @@ import org.junit.Test; import org.jvnet.hudson.test.Issue; +import static org.junit.Assume.assumeFalse; + /** * Tests for {@link org.jenkinsci.plugins.pipeline.modeldefinition.model.Stage#post} */ @@ -239,7 +242,7 @@ public void postFailureSuccessInParallel() throws Exception { @Issue("JENKINS-52114") @Test public void abortedShouldNotTriggerFailure() throws Exception { - assumeSh(); + assumeFalse("requires sh/sleep", Functions.isWindows()); WorkflowJob job = j.jenkins.createProject(WorkflowJob.class, "abort"); job.setDefinition(new CpsFlowDefinition("" + "pipeline {\n" + diff --git a/pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/actions/RestartDeclarativePipelineActionTest.java b/pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/actions/RestartDeclarativePipelineActionTest.java index 37427942e..8d5e48fe2 100644 --- a/pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/actions/RestartDeclarativePipelineActionTest.java +++ b/pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/actions/RestartDeclarativePipelineActionTest.java @@ -41,6 +41,7 @@ import hudson.security.SecurityRealm; import hudson.security.csrf.CrumbIssuer; import hudson.util.RunList; +import jakarta.servlet.ServletRequest; import jenkins.branch.BranchSource; import jenkins.model.Jenkins; import jenkins.plugins.git.GitSCMSource; @@ -788,7 +789,7 @@ public void testDoRestartPipeline() throws Exception { CrumbIssuer crumbIssuer = j.jenkins.getCrumbIssuer(); if(crumbIssuer != null) { - params.add(new NameValuePair(crumbIssuer.getDescriptor().getCrumbRequestField(), crumbIssuer.getCrumb(null))); + params.add(new NameValuePair(crumbIssuer.getDescriptor().getCrumbRequestField(), crumbIssuer.getCrumb((ServletRequest) null))); } request.setRequestParameters(params); diff --git a/pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/endpoints/ModelConverterActionStepsTest.java b/pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/endpoints/ModelConverterActionStepsTest.java index 43df86aa3..368aecdd8 100644 --- a/pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/endpoints/ModelConverterActionStepsTest.java +++ b/pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/endpoints/ModelConverterActionStepsTest.java @@ -31,7 +31,7 @@ import org.jenkinsci.plugins.pipeline.modeldefinition.AbstractModelDefTest; import org.junit.Test; import org.jvnet.hudson.test.JenkinsRule; -import org.kohsuke.stapler.StaplerRequest; +import org.kohsuke.stapler.StaplerRequest2; import java.io.IOException; import java.net.URL; @@ -50,8 +50,8 @@ * Tests steps conversion in {@link ModelConverterAction} * * @author Robert Sandell <rsandell@cloudbees.com>. - * @see ModelConverterAction#doStepsToJenkinsfile(StaplerRequest) - * @see ModelConverterAction#doStepsToJson(StaplerRequest) + * @see ModelConverterAction#doStepsToJenkinsfile(StaplerRequest2) + * @see ModelConverterAction#doStepsToJson(StaplerRequest2) */ public class ModelConverterActionStepsTest extends AbstractModelDefTest { diff --git a/pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/generator/DirectiveGeneratorTest.java b/pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/generator/DirectiveGeneratorTest.java index 1bec26b2b..35a23253a 100644 --- a/pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/generator/DirectiveGeneratorTest.java +++ b/pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/generator/DirectiveGeneratorTest.java @@ -39,6 +39,7 @@ import hudson.triggers.SCMTrigger; import hudson.triggers.TimerTrigger; import hudson.triggers.Trigger; +import jakarta.servlet.ServletRequest; import jenkins.model.BuildDiscarderProperty; import jenkins.model.OptionalJobProperty; import net.sf.json.JSONArray; @@ -650,7 +651,7 @@ private void assertGenerateDirective(@NonNull AbstractDirective desc, @NonNull S List params = new ArrayList(); params.add(new NameValuePair("json", staplerJsonForDescr(desc).toString())); // WebClient.addCrumb *replaces* rather than *adds*: - params.add(new NameValuePair(r.jenkins.getCrumbIssuer().getDescriptor().getCrumbRequestField(), r.jenkins.getCrumbIssuer().getCrumb(null))); + params.add(new NameValuePair(r.jenkins.getCrumbIssuer().getDescriptor().getCrumbRequestField(), r.jenkins.getCrumbIssuer().getCrumb((ServletRequest) null))); wrs.setRequestParameters(params); WebResponse response = wc.getPage(wrs).getWebResponse(); assertEquals("text/plain", response.getContentType()); diff --git a/pom.xml b/pom.xml index e4d7baaed..45a07680b 100644 --- a/pom.xml +++ b/pom.xml @@ -27,7 +27,7 @@ org.jenkins-ci.plugins plugin - 4.88 + 5.5 @@ -75,7 +75,7 @@ io.jenkins.tools.bom bom-${jenkins.baseline}.x - 3358.vea_fa_1f41504d + 3850.vb_c5319efa_e29 import pom @@ -133,8 +133,8 @@ 999999-SNAPSHOT jenkinsci/pipeline-model-definition-plugin - 2.440 - ${jenkins.baseline}.3 + 2.479 + ${jenkins.baseline}.1