From aa6b9133833333eee956b70666fa3d6373b12f8c Mon Sep 17 00:00:00 2001 From: Ulli Hafner Date: Thu, 19 Sep 2024 09:18:47 +0200 Subject: [PATCH 1/4] Use latest POM to verify BOM builds. --- plugin/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugin/pom.xml b/plugin/pom.xml index e05b655232..de4159d2c0 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -4,7 +4,7 @@ org.jvnet.hudson.plugins analysis-pom - 8.6.0 + 8.7.0 From bafc7c3d281769762000aacb865e8035b571ed3b Mon Sep 17 00:00:00 2001 From: Ulli Hafner Date: Thu, 19 Sep 2024 10:30:07 +0200 Subject: [PATCH 2/4] Use new Jenkins baseline 2.462 that hides ASM dependency. --- plugin/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugin/pom.xml b/plugin/pom.xml index de4159d2c0..bcbc82bcab 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -4,7 +4,7 @@ org.jvnet.hudson.plugins analysis-pom - 8.7.0 + 9.0.0 From 79219de59e588378004e8fd58681f4844086ee95 Mon Sep 17 00:00:00 2001 From: Ulli Hafner Date: Thu, 19 Sep 2024 17:41:34 +0200 Subject: [PATCH 3/4] Bump version of plugin-util to 5.0.0-rc990.a_c915b_e8801a_. --- plugin/pom.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/plugin/pom.xml b/plugin/pom.xml index bcbc82bcab..1f2c7baa2a 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -95,6 +95,7 @@ io.jenkins.plugins plugin-util-api + 5.0.0-rc990.a_c915b_e8801a_ io.jenkins.plugins @@ -306,6 +307,7 @@ io.jenkins.plugins plugin-util-api + 5.0.0-rc990.a_c915b_e8801a_ test tests From 5db511fda7607c67a4d1b5da74ea7b0021e4b1bf Mon Sep 17 00:00:00 2001 From: Ulli Hafner Date: Thu, 19 Sep 2024 21:03:46 +0200 Subject: [PATCH 4/4] Bump version of plugin-util to 5.0.0-rc990.a_c915b_e8801a_. Update test cases that have compile errors due to changed API. --- plugin/pom.xml | 4 +-- .../steps/WarningChecksPublisherITest.java | 5 ++-- .../integrations/TimeStamperPluginITest.java | 9 +++--- .../integrations/TokenMacroITest.java | 9 +++--- .../warnings/steps/QualityGateITest.java | 5 ++-- .../analysis/warnings/steps/StepsITest.java | 30 +++++++++---------- .../warnings/steps/StepsOnAgentITest.java | 9 +++--- 7 files changed, 33 insertions(+), 38 deletions(-) diff --git a/plugin/pom.xml b/plugin/pom.xml index 1f2c7baa2a..90df6b8953 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -25,8 +25,8 @@ -SNAPSHOT ${project.groupId}.warnings.ng - 12.5.0 - ${analysis-model-api.version} + 12.6.0-rc839.46d92a_4783a_5 + 12.5.0 335.v525cd64ec76b_ 9.2.0 diff --git a/plugin/src/test/java/io/jenkins/plugins/analysis/core/steps/WarningChecksPublisherITest.java b/plugin/src/test/java/io/jenkins/plugins/analysis/core/steps/WarningChecksPublisherITest.java index ecf492d35a..8aaa1a4f74 100644 --- a/plugin/src/test/java/io/jenkins/plugins/analysis/core/steps/WarningChecksPublisherITest.java +++ b/plugin/src/test/java/io/jenkins/plugins/analysis/core/steps/WarningChecksPublisherITest.java @@ -11,7 +11,6 @@ import com.google.errorprone.annotations.CanIgnoreReturnValue; -import org.jenkinsci.plugins.workflow.cps.CpsFlowDefinition; import org.jenkinsci.plugins.workflow.job.WorkflowJob; import hudson.model.AbstractProject; import hudson.model.FreeStyleProject; @@ -100,14 +99,14 @@ void shouldCreateChecksDetailsWithNewIssuesAsAnnotations() { } private void configureScanner(final WorkflowJob job, final String fileName, final String parameters) { - job.setDefinition(new CpsFlowDefinition("node {\n" + job.setDefinition(createPipelineScript("node {\n" + " stage ('Integration Test') {\n" + " discoverReferenceBuild()\n" + " recordIssues tool: checkStyle(pattern: '**/" + fileName + "-*') " + parameters + "\n" + " }\n" - + "}", true)); + + "}")); } /** diff --git a/plugin/src/test/java/io/jenkins/plugins/analysis/warnings/integrations/TimeStamperPluginITest.java b/plugin/src/test/java/io/jenkins/plugins/analysis/warnings/integrations/TimeStamperPluginITest.java index c0b51ba631..8733095591 100644 --- a/plugin/src/test/java/io/jenkins/plugins/analysis/warnings/integrations/TimeStamperPluginITest.java +++ b/plugin/src/test/java/io/jenkins/plugins/analysis/warnings/integrations/TimeStamperPluginITest.java @@ -6,7 +6,6 @@ import edu.hm.hafner.analysis.Severity; import edu.hm.hafner.util.PathUtil; -import org.jenkinsci.plugins.workflow.cps.CpsFlowDefinition; import org.jenkinsci.plugins.workflow.job.WorkflowJob; import io.jenkins.plugins.analysis.core.model.AnalysisResult; @@ -32,12 +31,12 @@ void shouldCorrectlyParseJavacErrors() { createFileInWorkspace(project, "Test.java", "public class Test {}"); - project.setDefinition(new CpsFlowDefinition("node {\n" + project.setDefinition(createPipelineScript("node {\n" + " timestamps {\n" + " echo '[javac] Test.java:39: warning: Test Warning'\n" + " recordIssues tools: [java()], skipBlames: true\n" + " }\n" - + "}", true)); + + "}")); AnalysisResult result = scheduleSuccessfulBuild(project); @@ -71,12 +70,12 @@ void shouldCorrectlyParseClangErrors() { createFileInWorkspace(project, "test.c", "int main(void) { }"); - project.setDefinition(new CpsFlowDefinition("node {\n" + project.setDefinition(createPipelineScript("node {\n" + " timestamps {\n" + " echo 'test.c:1:2: error: This is an error.'\n" + " recordIssues tools: [clang(id: 'clang', name: 'clang')], skipBlames: true\n" + " }\n" - + "}", true)); + + "}")); AnalysisResult result = scheduleSuccessfulBuild(project); diff --git a/plugin/src/test/java/io/jenkins/plugins/analysis/warnings/integrations/TokenMacroITest.java b/plugin/src/test/java/io/jenkins/plugins/analysis/warnings/integrations/TokenMacroITest.java index c89defe613..f854106afc 100644 --- a/plugin/src/test/java/io/jenkins/plugins/analysis/warnings/integrations/TokenMacroITest.java +++ b/plugin/src/test/java/io/jenkins/plugins/analysis/warnings/integrations/TokenMacroITest.java @@ -2,7 +2,6 @@ import org.junit.jupiter.api.Test; -import org.jenkinsci.plugins.workflow.cps.CpsFlowDefinition; import org.jenkinsci.plugins.workflow.job.WorkflowJob; import hudson.model.Result; @@ -44,7 +43,7 @@ void shouldExpandTokenMacro() { void shouldExpandDifferentSeverities() { WorkflowJob job = createPipelineWithWorkspaceFilesWithSuffix("all-severities.xml"); - job.setDefinition(new CpsFlowDefinition("node {\n" + job.setDefinition(createPipelineScript("node {\n" + " stage ('Integration Test') {\n" + " recordIssues tool: checkStyle(pattern: '**/" + "all-severities" + "*')\n" + " def total = tm('${ANALYSIS_ISSUES_COUNT}')\n" @@ -58,7 +57,7 @@ void shouldExpandDifferentSeverities() { + " echo '[normal=' + normal + ']' \n" + " echo '[low=' + low + ']' \n" + " }\n" - + "}", true)); + + "}")); AnalysisResult baseline = scheduleBuildAndAssertStatus(job, Result.SUCCESS); @@ -91,7 +90,7 @@ private void verifyConsoleLog(final AnalysisResult baseline, final int totalSize } private void configureToken(final WorkflowJob job, final String fileName) { - job.setDefinition(new CpsFlowDefinition("node {\n" + job.setDefinition(createPipelineScript("node {\n" + " stage ('Integration Test') {\n" + " discoverReferenceBuild()\n" + " recordIssues tool: checkStyle(pattern: '**/" + fileName + "*')\n" @@ -106,6 +105,6 @@ private void configureToken(final WorkflowJob job, final String fileName) { + " echo '[new=' + additional + ']' \n" + " echo '[fixed=' + fixed + ']' \n" + " }\n" - + "}", true)); + + "}")); } } diff --git a/plugin/src/test/java/io/jenkins/plugins/analysis/warnings/steps/QualityGateITest.java b/plugin/src/test/java/io/jenkins/plugins/analysis/warnings/steps/QualityGateITest.java index e3d2053a6b..196b338c6c 100644 --- a/plugin/src/test/java/io/jenkins/plugins/analysis/warnings/steps/QualityGateITest.java +++ b/plugin/src/test/java/io/jenkins/plugins/analysis/warnings/steps/QualityGateITest.java @@ -10,7 +10,6 @@ import com.google.errorprone.annotations.CanIgnoreReturnValue; -import org.jenkinsci.plugins.workflow.cps.CpsFlowDefinition; import org.jenkinsci.plugins.workflow.job.WorkflowJob; import hudson.model.AbstractProject; import hudson.model.FreeStyleProject; @@ -48,14 +47,14 @@ class QualityGateITest extends IntegrationTestWithJenkinsPerSuite { void shouldUseTwoQualityGates() { WorkflowJob job = createPipelineWithWorkspaceFilesWithSuffix("checkstyle1.xml", "checkstyle2.xml"); - job.setDefinition(new CpsFlowDefinition("node {\n" + job.setDefinition(createPipelineScript("node {\n" + " stage ('Integration Test') {\n" + " recordIssues tools: [checkStyle(pattern: '**/*issues.txt')],\n" + " qualityGates: [\n" + " [threshold: 3, type: 'TOTAL', criticality: 'NOTE'],\n" + " [threshold: 7, type: 'TOTAL', criticality: 'ERROR']]\n" + " }\n" - + "}", true)); + + "}")); AnalysisResult result = scheduleSuccessfulBuild(job); assertThat(result).hasTotalSize(6); diff --git a/plugin/src/test/java/io/jenkins/plugins/analysis/warnings/steps/StepsITest.java b/plugin/src/test/java/io/jenkins/plugins/analysis/warnings/steps/StepsITest.java index 8439fe8e26..8a76d9366d 100644 --- a/plugin/src/test/java/io/jenkins/plugins/analysis/warnings/steps/StepsITest.java +++ b/plugin/src/test/java/io/jenkins/plugins/analysis/warnings/steps/StepsITest.java @@ -71,7 +71,7 @@ class StepsITest extends IntegrationTestWithJenkinsPerSuite { @Test void shouldNotFailWhenJobHasNoWorkspace() { var job = createPipelineWithWorkspaceFilesWithSuffix("eclipse.txt"); - job.setDefinition(new CpsFlowDefinition("def r; node {r = scanForIssues tool: eclipse(pattern: '*issues.txt')}; publishIssues issues: [r]", true)); + job.setDefinition(createPipelineScript("def r; node {r = scanForIssues tool: eclipse(pattern: '*issues.txt')}; publishIssues issues: [r]")); var build = buildSuccessfully(job); assertThat(build.getAction(ResultAction.class).getResult().getIssues()).hasSize(8); @@ -81,12 +81,12 @@ void shouldNotFailWhenJobHasNoWorkspace() { void shouldParseCheckstyleUsingTheParserRegistry() { WorkflowJob job = createPipelineWithWorkspaceFilesWithSuffix("checkstyle1.xml", "checkstyle2.xml"); - job.setDefinition(new CpsFlowDefinition("node {\n" + job.setDefinition(createPipelineScript("node {\n" + " stage ('Integration Test') {\n" + " recordIssues tool: analysisParser(analysisModelId: 'checkstyle', pattern: '**/" + "checkstyle1" + "*')\n" + " }\n" - + "}", true)); + + "}")); AnalysisResult baseline = scheduleSuccessfulBuild(job); assertThat(baseline).hasTotalSize(3); @@ -157,7 +157,7 @@ void shouldWhitelistRecorderApi() { } private void configureRecorder(final WorkflowJob job, final String fileName) { - job.setDefinition(new CpsFlowDefinition("node {\n" + job.setDefinition(createPipelineScript("node {\n" + " stage ('Integration Test') {\n" + " discoverReferenceBuild()\n" + " def reports = recordIssues tool: checkStyle(pattern: '**/" + fileName @@ -173,11 +173,11 @@ private void configureRecorder(final WorkflowJob job, final String fileName) { + " echo issue.toString()\n" + " }" + " }\n" - + "}", true)); + + "}")); } private void configureScanner(final WorkflowJob job, final String fileName) { - job.setDefinition(new CpsFlowDefinition("node {\n" + job.setDefinition(createPipelineScript("node {\n" + " stage ('Integration Test') {\n" + " def report = scanForIssues tool: checkStyle(pattern: '**/" + fileName + "*')\n" + " echo '[total=' + report.size() + ']' \n" @@ -189,7 +189,7 @@ private void configureScanner(final WorkflowJob job, final String fileName) { + " echo issue.getAuthorName()\n" + " }" + " }\n" - + "}", true)); + + "}")); } /** @@ -199,11 +199,11 @@ private void configureScanner(final WorkflowJob job, final String fileName) { void shouldSkipBlaming() { WorkflowJob job = createPipelineWithWorkspaceFilesWithSuffix("checkstyle1.xml"); - job.setDefinition(new CpsFlowDefinition("node {\n" + job.setDefinition(createPipelineScript("node {\n" + " stage ('Integration Test') {\n" + " recordIssues skipBlames: true, tool: checkStyle(pattern: '**/checkstyle1" + "*')\n" + " }\n" - + "}", true)); + + "}")); Run baseline = buildSuccessfully(job); assertThat(getConsoleLog(baseline)).contains("Skipping SCM blames as requested"); } @@ -214,13 +214,13 @@ void shouldSkipBlaming() { void shouldToggleQuietStatusOfLogger(final boolean quiet) { WorkflowJob job = createPipelineWithWorkspaceFilesWithSuffix("checkstyle1.xml"); - job.setDefinition(new CpsFlowDefinition("node {\n" + job.setDefinition(createPipelineScript("node {\n" + " stage ('Integration Test') {\n" + " recordIssues " + " quiet: " + quiet + ", " + " tool: checkStyle(pattern: '**/" + "checkstyle1" + "*')\n" + " }\n" - + "}", true)); + + "}")); Run baseline = buildSuccessfully(job); String consoleLog = getConsoleLog(baseline); String message = "[CheckStyle]"; @@ -272,7 +272,7 @@ private void verifyApiResults(final Run baseline, final int totalSize, fin private void configurePublisher(final WorkflowJob job, final String fileName, final String qualityGate) { String qualityGateParameter = String.format("qualityGates: [%s]", qualityGate); - job.setDefinition(new CpsFlowDefinition("node {\n" + job.setDefinition(createPipelineScript("node {\n" + " stage ('Integration Test') {\n" + " discoverReferenceBuild()\n" + " def issues = scanForIssues tool: checkStyle(pattern: '**/" + fileName + "*')\n" @@ -289,7 +289,7 @@ private void configurePublisher(final WorkflowJob job, final String fileName, fi + " echo '[new=' + totals.getNewSize() + ']' \n" + " echo '[fixed=' + totals.getFixedSize() + ']' \n" + " }\n" - + "}", true)); + + "}")); } /** Verifies that a {@link Tool} defines a {@link Symbol}. */ @@ -307,7 +307,7 @@ void shouldProvideSymbol() { void shouldRunInDeclarativePipeline() { WorkflowJob job = createPipeline(); - job.setDefinition(new CpsFlowDefinition("pipeline {\n" + job.setDefinition(createPipelineScript("pipeline {\n" + " agent 'any'\n" + " stages {\n" + " stage ('Create a fake warning') {\n" @@ -321,7 +321,7 @@ void shouldRunInDeclarativePipeline() { + " recordIssues tool: gcc4(pattern: 'warnings.log')\n" + " }\n" + " }\n" - + "}", true)); + + "}")); AnalysisResult result = scheduleSuccessfulBuild(job); diff --git a/plugin/src/test/java/io/jenkins/plugins/analysis/warnings/steps/StepsOnAgentITest.java b/plugin/src/test/java/io/jenkins/plugins/analysis/warnings/steps/StepsOnAgentITest.java index e4d8606d6d..0fd321747e 100644 --- a/plugin/src/test/java/io/jenkins/plugins/analysis/warnings/steps/StepsOnAgentITest.java +++ b/plugin/src/test/java/io/jenkins/plugins/analysis/warnings/steps/StepsOnAgentITest.java @@ -4,7 +4,6 @@ import org.junit.jupiter.api.Test; -import org.jenkinsci.plugins.workflow.cps.CpsFlowDefinition; import org.jenkinsci.plugins.workflow.job.WorkflowJob; import hudson.model.Run; import hudson.model.Slave; @@ -45,10 +44,10 @@ void shouldCopySourcesIfMasterAgentSecurityIsActive() { createFileInAgentWorkspace(agent, project, "Test.java", JAVA_CONTENT); - project.setDefinition(new CpsFlowDefinition("node('agent') {\n" + project.setDefinition(createPipelineScript("node('agent') {\n" + " echo '[javac] Test.java:39: warning: Test Warning'\n" + " recordIssues tool: java(), skipBlames: true\n" - + "}", true)); + + "}")); AnalysisResult result = scheduleSuccessfulBuild(project); assertThat(result).hasNoErrorMessages(); @@ -112,10 +111,10 @@ void shouldNotCopySourcesWhenSourceCodeRetentionIsNever() { createFileInAgentWorkspace(agent, project, "Test.java", JAVA_CONTENT); - project.setDefinition(new CpsFlowDefinition("node('agent') {\n" + project.setDefinition(createPipelineScript("node('agent') {\n" + " echo '[javac] Test.java:39: warning: Test Warning'\n" + " recordIssues tool: java(), sourceCodeRetention: 'NEVER'\n" - + "}", true)); + + "}")); AnalysisResult result = scheduleSuccessfulBuild(project); assertThat(result).hasNoErrorMessages();