Skip to content

Commit 5130657

Browse files
committed
Support for parent 6.x
1 parent ac4e659 commit 5130657

6 files changed

Lines changed: 111 additions & 25 deletions

File tree

plugin-modernizer-core/src/main/java/io/jenkins/tools/pluginmodernizer/core/recipes/UpdateJenkinsfileForJavaVersion.java

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@
55
import io.jenkins.tools.pluginmodernizer.core.model.PlatformConfig;
66
import io.jenkins.tools.pluginmodernizer.core.visitors.UpdateJenkinsFileVisitor;
77
import java.util.ArrayList;
8+
import java.util.HashSet;
89
import java.util.List;
10+
import java.util.Set;
911
import java.util.stream.Collectors;
1012
import org.openrewrite.ExecutionContext;
1113
import org.openrewrite.Option;
@@ -43,6 +45,16 @@ public class UpdateJenkinsfileForJavaVersion extends Recipe {
4345
required = false)
4446
Integer totalJdk;
4547

48+
/**
49+
* The list of JDKs version to remove.
50+
*/
51+
@Option(
52+
displayName = "JDKs to remove",
53+
description = "The list of JDKs version to remove from the Jenkinsfile",
54+
example = "[11, 17]",
55+
required = false)
56+
List<Integer> jdksToRemove;
57+
4658
/**
4759
* Constructor.
4860
* @param javaVersion The java version.
@@ -60,6 +72,16 @@ public UpdateJenkinsfileForJavaVersion(Integer javaVersion, Integer totalJdkVers
6072
this.totalJdk = totalJdkVersions;
6173
}
6274

75+
/**
76+
* Constructor.
77+
* @param jdksToRemove The list of JDKs version to remove.
78+
*/
79+
public UpdateJenkinsfileForJavaVersion(Integer javaVersion, List<Integer> jdksToRemove) {
80+
this.javaVersion = javaVersion;
81+
this.jdksToRemove = jdksToRemove;
82+
this.totalJdk = DEFAULT_TOTAL_JDK;
83+
}
84+
6385
@Override
6486
public String getDisplayName() {
6587
return "Update Jenkinsfile for specefied Java Version";
@@ -99,6 +121,14 @@ public J visitMethodInvocation(J.MethodInvocation method, ExecutionContext ctx)
99121
return method;
100122
}
101123

124+
// Remove JDKs if specified on jdksToRemove
125+
if (jdksToRemove != null && !jdksToRemove.isEmpty()) {
126+
Set<Integer> jdksToRemoveSet = new HashSet<>(jdksToRemove);
127+
model.platformConfigs = model.platformConfigs.stream()
128+
.filter(p -> !jdksToRemoveSet.contains(p.jdk().getMajor()))
129+
.collect(Collectors.toList());
130+
}
131+
102132
// add the java version configuration to the model.
103133
model.platformConfigs.add(PlatformConfig.build(Platform.LINUX, jdkVersion));
104134

plugin-modernizer-core/src/main/resources/META-INF/rewrite/recipes.yml

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -172,13 +172,13 @@ recipeList:
172172
- org.openrewrite.maven.UpgradeParentVersion:
173173
groupId: org.jenkins-ci.plugins
174174
artifactId: plugin
175-
newVersion: 5.X
175+
newVersion: 6.X
176176
versionPattern: "\\.v[a-f0-9_]+"
177177
- io.jenkins.tools.pluginmodernizer.core.recipes.EnsureRelativePath
178178
- io.jenkins.tools.pluginmodernizer.SetupJenkinsfile
179179
- io.jenkins.tools.pluginmodernizer.core.recipes.UpdateJenkinsfileForJavaVersion:
180180
javaVersion: 25
181-
totalJdk: 2
181+
jdksToRemove: [11, 17]
182182
---
183183
type: specs.openrewrite.org/v1beta/recipe
184184
name: io.jenkins.tools.pluginmodernizer.MigrateCommonsLang2ToLang3AndCommonText
@@ -259,19 +259,32 @@ recipeList:
259259
- io.jenkins.tools.pluginmodernizer.RemoveDependencyVersionOverride
260260
---
261261
type: specs.openrewrite.org/v1beta/recipe
262+
name: io.jenkins.tools.pluginmodernizer.UpgradeParent6Version
263+
displayName: Upgrade parent version to latest available in the 6.x line
264+
description: Upgrade the parent version to latest available in the 6.x line.
265+
tags: ['dependencies']
266+
recipeList:
267+
- org.openrewrite.maven.UpgradeParentVersion:
268+
groupId: org.jenkins-ci.plugins
269+
artifactId: plugin
270+
newVersion: 6.X
271+
versionPattern: "\\.v[a-f0-9_]+"
272+
- io.jenkins.tools.pluginmodernizer.RemoveDependencyVersionOverride
273+
---
274+
type: specs.openrewrite.org/v1beta/recipe
262275
name: io.jenkins.tools.pluginmodernizer.UpgradeNextMajorParentVersion
263-
displayName: Upgrade to the next major parent version (5.X) requiring Jenkins 2.504 and Java 17
264-
description: Upgrade to the next major parent version (5.X) requiring Jenkins 2.504 and Java 17.
276+
displayName: Upgrade to the next major parent version (6.X) requiring Jenkins 2.516 and Java 21
277+
description: Upgrade to the next major parent version (6.X) requiring Jenkins 2.516 and Java 21.
265278
tags: ['dependencies']
266279
recipeList:
267280
- io.jenkins.tools.pluginmodernizer.core.recipes.EnsureRelativePath
268281
- io.jenkins.tools.pluginmodernizer.EnsureIndexJelly
269282
- io.jenkins.tools.pluginmodernizer.core.recipes.UpdateScmUrl
270-
- io.jenkins.tools.pluginmodernizer.UpgradeParent5Version
283+
- io.jenkins.tools.pluginmodernizer.UpgradeParent6Version
271284
- io.jenkins.tools.pluginmodernizer.core.recipes.UpgradeJenkinsVersion:
272-
minimumVersion: 2.504.3
285+
minimumVersion: 2.516.3
273286
- io.jenkins.tools.pluginmodernizer.core.recipes.UpgradeJenkinsTestHarnessVersion:
274-
jenkinsVersion: 2.504.3
287+
jenkinsVersion: 2.516.3
275288
- org.openrewrite.java.ChangePackage: #deprecating
276289
oldPackageName: com.gargoylesoftware.htmlunit
277290
newPackageName: org.htmlunit
@@ -551,7 +564,7 @@ recipeList:
551564
- io.jenkins.tools.pluginmodernizer.core.recipes.EnsureRelativePath
552565
- io.jenkins.tools.pluginmodernizer.EnsureIndexJelly
553566
- io.jenkins.tools.pluginmodernizer.core.recipes.UpdateScmUrl
554-
- io.jenkins.tools.pluginmodernizer.UpgradeParent5Version
567+
- io.jenkins.tools.pluginmodernizer.UpgradeParent6Version
555568
- io.jenkins.tools.pluginmodernizer.AddPluginsBom
556569
- io.jenkins.tools.pluginmodernizer.core.recipes.UpgradeJenkinsVersion:
557570
minimumVersion: ${jenkins.core.minimum.version}

plugin-modernizer-core/src/main/resources/versions.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
openrewrite.maven.plugin.version = ${openrewrite.maven.plugin.version}
2-
jenkins.parent.version = 5.2102.v5f5fe09fccf1
2+
jenkins.parent.version = 6.2105.v7d6ddb_2da_0d2
33
bom.version = 5857.vb_f3dd0731f44
44
bom.recommended.version = 5857.vb_f3dd0731f44
55
remediation.jenkins.plugin.parent.version = 2.37

plugin-modernizer-core/src/test/java/io/jenkins/tools/pluginmodernizer/core/recipes/DeclarativeRecipesTest.java

Lines changed: 28 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2052,7 +2052,7 @@ void upgradeNextMajorParentVersionTest() {
20522052
</scm>
20532053
<properties>
20542054
<jenkins-test-harness.version>%s</jenkins-test-harness.version>
2055-
<jenkins.version>2.504.3</jenkins.version>
2055+
<jenkins.version>%s</jenkins.version>
20562056
</properties>
20572057
<dependencies>
20582058
<dependency>
@@ -2078,6 +2078,7 @@ void upgradeNextMajorParentVersionTest() {
20782078
""".formatted(
20792079
Settings.getJenkinsParentVersion(),
20802080
Settings.getJenkinsTestHarnessVersion(),
2081+
Settings.getJenkinsMinimumVersion(),
20812082
Settings.getWiremockVersion())),
20822083
srcMainResources(
20832084
// language=java
@@ -2305,7 +2306,7 @@ void upgradeNextMajorParentVersionTestWithBom() {
23052306
<properties>
23062307
<jenkins-test-harness.version>%s</jenkins-test-harness.version>
23072308
<!-- https://www.jenkins.io/doc/developer/plugin-development/choosing-jenkins-baseline/ -->
2308-
<jenkins.baseline>2.504</jenkins.baseline>
2309+
<jenkins.baseline>2.516</jenkins.baseline>
23092310
<jenkins.version>${jenkins.baseline}.3</jenkins.version>
23102311
</properties>
23112312
<dependencyManagement>
@@ -2519,7 +2520,7 @@ void upgradeNextMajorParentVersionTestWithBaseline() {
25192520
<properties>
25202521
<jenkins-test-harness.version>%s</jenkins-test-harness.version>
25212522
<!-- https://www.jenkins.io/doc/developer/plugin-development/choosing-jenkins-baseline/ -->
2522-
<jenkins.baseline>2.504</jenkins.baseline>
2523+
<jenkins.baseline>2.516</jenkins.baseline>
25232524
<jenkins.version>${jenkins.baseline}.3</jenkins.version>
25242525
</properties>
25252526
<dependencyManagement>
@@ -2841,7 +2842,7 @@ void replaceLibrariesByApiPluginsSimple() throws IOException {
28412842
<parent>
28422843
<groupId>org.jenkins-ci.plugins</groupId>
28432844
<artifactId>plugin</artifactId>
2844-
<version>5.1</version>
2845+
<version>6.2105.v7d6ddb_2da_0d2</version>
28452846
<relativePath />
28462847
</parent>
28472848
<groupId>io.jenkins.plugins</groupId>
@@ -2850,7 +2851,7 @@ void replaceLibrariesByApiPluginsSimple() throws IOException {
28502851
<packaging>hpi</packaging>
28512852
<name>Empty Plugin</name>
28522853
<properties>
2853-
<jenkins.version>2.504.3</jenkins.version>
2854+
<jenkins.version>2.516.3</jenkins.version>
28542855
</properties>
28552856
<dependencies>
28562857
<dependency>
@@ -2924,7 +2925,7 @@ void replaceLibrariesByApiPluginsSimple() throws IOException {
29242925
<parent>
29252926
<groupId>org.jenkins-ci.plugins</groupId>
29262927
<artifactId>plugin</artifactId>
2927-
<version>5.1</version>
2928+
<version>6.2105.v7d6ddb_2da_0d2</version>
29282929
<relativePath />
29292930
</parent>
29302931
<groupId>io.jenkins.plugins</groupId>
@@ -2933,7 +2934,7 @@ void replaceLibrariesByApiPluginsSimple() throws IOException {
29332934
<packaging>hpi</packaging>
29342935
<name>Empty Plugin</name>
29352936
<properties>
2936-
<jenkins.version>2.504.3</jenkins.version>
2937+
<jenkins.version>2.516.3</jenkins.version>
29372938
</properties>
29382939
<dependencies>
29392940
<dependency>
@@ -3035,22 +3036,22 @@ void replaceLibrariesByApiPluginWithBom() {
30353036
<packaging>hpi</packaging>
30363037
<properties>
30373038
<!-- https://www.jenkins.io/doc/developer/plugin-development/choosing-jenkins-baseline/ -->
3038-
<jenkins.baseline>2.504</jenkins.baseline>
3039+
<jenkins.baseline>2.516</jenkins.baseline>
30393040
<jenkins.version>${jenkins.baseline}.3</jenkins.version>
30403041
</properties>
30413042
<dependencyManagement>
30423043
<dependencies>
30433044
<dependency>
30443045
<groupId>io.jenkins.tools.bom</groupId>
30453046
<artifactId>bom-${jenkins.baseline}.x</artifactId>
3046-
<version>4969.v6ffa_18d90c9f</version>
3047+
<version>5857.vb_f3dd0731f44</version>
30473048
<scope>import</scope>
30483049
<type>pom</type>
30493050
</dependency>
30503051
<dependency>
30513052
<groupId>org.jenkins-ci.tools</groupId>
30523053
<artifactId>maven-hpi-plugin</artifactId>
3053-
<version>3.61</version>
3054+
<version>3.1787.vd08d76c755ef</version>
30543055
</dependency>
30553056
</dependencies>
30563057
</dependencyManagement>
@@ -3092,22 +3093,22 @@ void replaceLibrariesByApiPluginWithBom() {
30923093
<packaging>hpi</packaging>
30933094
<properties>
30943095
<!-- https://www.jenkins.io/doc/developer/plugin-development/choosing-jenkins-baseline/ -->
3095-
<jenkins.baseline>2.504</jenkins.baseline>
3096+
<jenkins.baseline>2.516</jenkins.baseline>
30963097
<jenkins.version>${jenkins.baseline}.3</jenkins.version>
30973098
</properties>
30983099
<dependencyManagement>
30993100
<dependencies>
31003101
<dependency>
31013102
<groupId>io.jenkins.tools.bom</groupId>
31023103
<artifactId>bom-${jenkins.baseline}.x</artifactId>
3103-
<version>4969.v6ffa_18d90c9f</version>
3104+
<version>5857.vb_f3dd0731f44</version>
31043105
<scope>import</scope>
31053106
<type>pom</type>
31063107
</dependency>
31073108
<dependency>
31083109
<groupId>org.jenkins-ci.tools</groupId>
31093110
<artifactId>maven-hpi-plugin</artifactId>
3110-
<version>3.61</version>
3111+
<version>3.1787.vd08d76c755ef</version>
31113112
</dependency>
31123113
</dependencies>
31133114
</dependencyManagement>
@@ -3116,6 +3117,18 @@ void replaceLibrariesByApiPluginWithBom() {
31163117
<groupId>io.jenkins.plugins</groupId>
31173118
<artifactId>asm-api</artifactId>
31183119
</dependency>
3120+
<dependency>
3121+
<groupId>io.jenkins.plugins</groupId>
3122+
<artifactId>commons-compress-api</artifactId>
3123+
</dependency>
3124+
<dependency>
3125+
<groupId>io.jenkins.plugins</groupId>
3126+
<artifactId>commons-lang3-api</artifactId>
3127+
</dependency>
3128+
<dependency>
3129+
<groupId>io.jenkins.plugins</groupId>
3130+
<artifactId>commons-text-api</artifactId>
3131+
</dependency>
31193132
<dependency>
31203133
<groupId>io.jenkins.plugins</groupId>
31213134
<artifactId>json-path-api</artifactId>
@@ -3603,7 +3616,7 @@ public void myTestMethodChild(JenkinsRule j) {
36033616
<parent>
36043617
<groupId>org.jenkins-ci.plugins</groupId>
36053618
<artifactId>plugin</artifactId>
3606-
<version>%s</version>
3619+
<version>5.2102.v5f5fe09fccf1</version>
36073620
<relativePath />
36083621
</parent>
36093622
<groupId>io.jenkins.plugins</groupId>
@@ -3639,7 +3652,7 @@ public void myTestMethodChild(JenkinsRule j) {
36393652
</pluginRepository>
36403653
</pluginRepositories>
36413654
</project>
3642-
""".formatted(Settings.getJenkinsParentVersion())));
3655+
"""));
36433656
}
36443657

36453658
@Test

plugin-modernizer-core/src/test/java/io/jenkins/tools/pluginmodernizer/core/recipes/UpdateJenkinsfileForJavaVersionTest.java

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import static org.openrewrite.groovy.Assertions.groovy;
44

55
import io.jenkins.tools.pluginmodernizer.core.extractor.ArchetypeCommonFile;
6+
import java.util.List;
67
import org.junit.jupiter.api.Test;
78
import org.junit.jupiter.api.parallel.Execution;
89
import org.junit.jupiter.api.parallel.ExecutionMode;
@@ -131,6 +132,35 @@ void shouldAddJava21ToModernConfigurations() {
131132
""", sourceSpecs -> sourceSpecs.path(ArchetypeCommonFile.JENKINSFILE.getPath())));
132133
}
133134

135+
@Test
136+
void shouldAddJava21ToModernConfigurationsAndRemoveOldJDK() {
137+
rewriteRun(
138+
spec -> spec.recipe(new UpdateJenkinsfileForJavaVersion(21, List.of(17))),
139+
// language=groovy
140+
groovy("""
141+
buildPlugin(
142+
useContainerAgent: true,
143+
configurations: [
144+
[platform: 'linux', jdk: 11],
145+
[platform: 'linux', jdk: 17],
146+
[platform: 'windows', jdk: 17]
147+
]
148+
)
149+
""", """
150+
/*
151+
See the documentation for more options:
152+
https://github.com/jenkins-infra/pipeline-library/
153+
*/
154+
buildPlugin(
155+
useContainerAgent: true,
156+
forkCount: '1C', // Set to `false` if you need to use Docker for containerized tests
157+
configurations: [
158+
[platform: 'linux', jdk: 11],
159+
[platform: 'linux', jdk: 21],
160+
])
161+
""", sourceSpecs -> sourceSpecs.path(ArchetypeCommonFile.JENKINSFILE.getPath())));
162+
}
163+
134164
@Test
135165
void shouldReplaceJava17To25InModernConfigurations() {
136166
rewriteRun(

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646
<spotless.check.skip>false</spotless.check.skip>
4747

4848
<!-- Version -->
49-
<jenkins.core.minimum.version>2.504.3</jenkins.core.minimum.version>
49+
<jenkins.core.minimum.version>2.516.3</jenkins.core.minimum.version>
5050
<openrewrite.bom.version>3.21.0</openrewrite.bom.version>
5151
<openrewrite.maven.plugin.version>6.26.0</openrewrite.maven.plugin.version>
5252
<micrometer.version>1.16.1</micrometer.version>

0 commit comments

Comments
 (0)