Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
a75360d
Update README.md
Pnkcaht Oct 2, 2025
84bcf99
Update README.md
Pnkcaht Oct 3, 2025
c3a4966
Update README.md
Pnkcaht Oct 3, 2025
61ac74c
Remove link to non-existent newsletter
MarkEWaite Oct 3, 2025
fcc70cd
Merge branch 'master' into master
Pnkcaht Oct 3, 2025
2858eb4
Update README.md
Pnkcaht Oct 3, 2025
f518623
Merge branch 'master' into master
MarkEWaite Oct 4, 2025
74ce300
Merge branch 'master' into master
Pnkcaht Oct 5, 2025
e6a4130
Merge branch 'master' into master
krisstern Oct 10, 2025
1d9d563
Merge branch 'master' into master
Pnkcaht Oct 11, 2025
2fc30d0
Merge branch 'master' into master
MarkEWaite Nov 12, 2025
2c37311
Update good first issues query
MarkEWaite Nov 30, 2025
709f36e
Merge branch 'master' into master
MarkEWaite Nov 30, 2025
ddeba97
Bump minimum supported remoting version
strangelookingnerd Jan 2, 2026
0334170
Fix race condition during initial admin account creation
Pnkcaht Jan 3, 2026
0b558ff
Merge branch 'master' into master
Pnkcaht Jan 3, 2026
85caf66
Reinstantiate telemetry for Java properties
NotMyFault Jan 3, 2026
57f5c2b
Update dependency com.puppycrawl.tools:checkstyle to v12.3.1
renovate[bot] Jan 3, 2026
59cd6a8
Update dependency io.jenkins.plugins:jakarta-xml-bind-api to v4.0.6-1…
renovate[bot] Jan 3, 2026
45263d0
Update dependency io.jenkins.plugins:jaxb to v2.3.9-143.v5979df3304e6
renovate[bot] Jan 3, 2026
a750c52
Update dependency io.jenkins.plugins:checks-api to v402
renovate[bot] Jan 3, 2026
7edbf6d
Update dependency org.jenkins-ci.plugins:credentials to v1460
renovate[bot] Jan 3, 2026
bba5171
Update dependency io.jenkins.lib:support-log-formatter to v121
renovate[bot] Jan 3, 2026
ab260a0
Update stapler.version to v2065
renovate[bot] Jan 3, 2026
96eb2d8
Update core/src/main/java/hudson/security/HudsonPrivateSecurityRealm.…
Pnkcaht Jan 3, 2026
3c115e7
Merge branches 'renovate/org.jenkins-ci.plugins-credentials-1460.x', …
MarkEWaite Jan 3, 2026
13a6522
Fast incremental build
MarkEWaite Jan 3, 2026
6abc303
Revert "Require Java 21 or newer (#26018)"
MarkEWaite Jan 4, 2026
5ad2fcc
Revert "Update stapler.version to v2065"
MarkEWaite Jan 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 1 addition & 36 deletions Jenkinsfile
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ properties([
])

def axes = [
platforms: ['linux', 'windows'],
platforms: ['linux'],
jdks: [21, 25],
]

Expand Down Expand Up @@ -216,41 +216,6 @@ axes.values().combinations {
}
}

def athAxes = [
platforms: ['linux'],
jdks: [21],
browsers: ['firefox'],
]
athAxes.values().combinations {
def (platform, jdk, browser) = it
builds["ath-${platform}-jdk${jdk}-${browser}"] = {
retry(conditions: [agent(), nonresumable()], count: 2) {
node('docker-highmem') {
// Just to be safe
deleteDir()
checkout scm

withChecks(name: 'Tests', includeStage: true) {
infra.withArtifactCachingProxy {
sh "bash ath.sh ${jdk} ${browser}"
}
junit testResults: 'target/ath-reports/TEST-*.xml', testDataPublishers: [[$class: 'AttachmentPublisher']]
}
/*
* Currently disabled, as the fact that this is a manually created subset will confuse Launchable,
* which expects this to be a full build. When we implement subsetting, this can be re-enabled using
* Launchable's subset rather than our own.
*/
/*
withCredentials([string(credentialsId: 'launchable-jenkins-acceptance-test-harness', variable: 'LAUNCHABLE_TOKEN')]) {
sh "launchable verify && launchable record tests --no-build --flavor platform=${platform} --flavor jdk=${jdk} --flavor browser=${browser} maven './target/ath-reports'"
}
*/
}
}
}
}

builds.failFast = failFast
parallel builds
infra.maybePublishIncrementals()
2 changes: 1 addition & 1 deletion core/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ THE SOFTWARE.

<properties>
<!-- Minimum Remoting version, which is tested for API compatibility, duplicated so that renovate only updates the latest remoting version property -->
<remoting.minimum.supported.version>3107.v665000b_51092</remoting.minimum.supported.version>
<remoting.minimum.supported.version>3176.v207ec082a_8c0</remoting.minimum.supported.version>
<!-- Filled in by jacoco-maven-plugin -->
<jacocoSurefireArgs />
</properties>
Expand Down
26 changes: 17 additions & 9 deletions core/src/main/java/hudson/security/HudsonPrivateSecurityRealm.java
Original file line number Diff line number Diff line change
Expand Up @@ -356,24 +356,32 @@
return messages.toString();
}

/**
* Lock used to make initial admin account creation atomic.
*/
private static final Object CREATE_FIRST_ACCOUNT_LOCK = new Object();

/**
* Creates a first admin user account.
*
* <p>
* This can be run by anyone, but only to create the very first user account.
*/
@RequirePOST
public void doCreateFirstAccount(StaplerRequest2 req, StaplerResponse2 rsp) throws IOException, ServletException {
if (hasSomeUser()) {
rsp.sendError(SC_UNAUTHORIZED, "First user was already created");
return;
}
User u = createAccount(req, rsp, false, "firstUser.jelly");
if (u != null) {
tryToMakeAdmin(u);
loginAndTakeBack(req, rsp, u);
public void doCreateFirstAccount(StaplerRequest2 req, StaplerResponse2 rsp)
throws IOException, ServletException {
synchronized (CREATE_FIRST_ACCOUNT_LOCK) {
if (hasSomeUser()) {
rsp.sendError(SC_UNAUTHORIZED, "First user was already created");
return;
}
User u = createAccount(req, rsp, false, "firstUser.jelly");
if (u != null) {
tryToMakeAdmin(u);
loginAndTakeBack(req, rsp, u);
}
}
}

Check warning on line 384 in core/src/main/java/hudson/security/HudsonPrivateSecurityRealm.java

View check run for this annotation

ci.jenkins.io / Code Coverage

Not covered lines

Lines 373-384 are not covered by tests

/**
* Try to make this user a super-user
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@ public class JavaVersionRecommendationAdminMonitor extends AdministrativeMonitor

static {
NavigableMap<Integer, LocalDate> supportedVersions = new TreeMap<>();
supportedVersions.put(17, LocalDate.of(2026, 3, 31)); // Temurin: 2027-10-31
supportedVersions.put(21, LocalDate.of(2027, 9, 30)); // Temurin: 2029-09-30
supportedVersions.put(25, LocalDate.of(2029, 9, 30)); // Temurin: 2031-09-30
SUPPORTED_JAVA_VERSIONS = Collections.unmodifiableNavigableMap(supportedVersions);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -311,6 +311,7 @@ private void loadWhitelist(@NonNull List<String> whitelistLines) {
}
}

@SuppressFBWarnings(value = "SIC_INNER_SHOULD_BE_STATIC", justification = "TODO needs triage")
private class Validator {
// lazy load parents to avoid trying to load potentially unavailable classes
private final Supplier<Collection<Validator>> parentsSupplier;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,13 +70,13 @@
@NonNull
@Override
public LocalDate getStart() {
return LocalDate.of(2023, 12, 17);
return LocalDate.of(2026, 1, 4);
}

@NonNull
@Override
public LocalDate getEnd() {
return LocalDate.of(2024, 4, 1);
return LocalDate.of(2026, 4, 1);

Check warning on line 79 in core/src/main/java/jenkins/telemetry/impl/JavaSystemProperties.java

View check run for this annotation

ci.jenkins.io / Code Coverage

Not covered lines

Lines 73-79 are not covered by tests
}

@Override
Expand Down
4 changes: 2 additions & 2 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ THE SOFTWARE.
<parent>
<groupId>org.jenkins-ci</groupId>
<artifactId>jenkins</artifactId>
<version>2.1326.v00b_e26755312</version>
<version>1.142</version>
<relativePath />
</parent>

Expand Down Expand Up @@ -281,7 +281,7 @@ THE SOFTWARE.
<dependency>
<groupId>com.puppycrawl.tools</groupId>
<artifactId>checkstyle</artifactId>
<version>12.3.0</version>
<version>12.3.1</version>
</dependency>
</dependencies>
<executions>
Expand Down
6 changes: 4 additions & 2 deletions test/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ THE SOFTWARE.
<properties>
<mavenDebug>false</mavenDebug>
<!-- Minimum Remoting version, which is tested for API compatibility, duplicated so that renovate only updates the latest remoting version property -->
<remoting.minimum.supported.version>3107.v665000b_51092</remoting.minimum.supported.version>
<remoting.minimum.supported.version>3176.v207ec082a_8c0</remoting.minimum.supported.version>
<!-- Filled in by jacoco-maven-plugin -->
<jacocoSurefireArgs />
<!--
Expand All @@ -52,6 +52,8 @@ THE SOFTWARE.

<!-- Filled in by maven-hpi-plugin with "-javaagent:/path/to/mockito-core-<version>.jar" -->
<jenkins.javaAgent />

<test>hudson.AboutJenkinsTest</test>
</properties>

<dependencyManagement>
Expand Down Expand Up @@ -238,7 +240,7 @@ THE SOFTWARE.
<dependency>
<groupId>org.jenkins-ci.plugins</groupId>
<artifactId>credentials</artifactId>
<version>1453.v9b_a_29777a_b_fd</version>
<version>1460.v48765a_c7d849</version>
<scope>test</scope>
</dependency>
<dependency>
Expand Down
10 changes: 5 additions & 5 deletions war/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ THE SOFTWARE.
<port>8080</port>
<mina-sshd-api.version>2.16.0-167.va_269f38cc024</mina-sshd-api.version>
<!-- Minimum Remoting version, which is tested for API compatibility, duplicated so that renovate only updates the latest remoting version property -->
<remoting.minimum.supported.version>3107.v665000b_51092</remoting.minimum.supported.version>
<remoting.minimum.supported.version>3176.v207ec082a_8c0</remoting.minimum.supported.version>

</properties>

Expand Down Expand Up @@ -346,7 +346,7 @@ THE SOFTWARE.
<!-- dependency of junit -->
<groupId>io.jenkins.plugins</groupId>
<artifactId>checks-api</artifactId>
<version>373.vfe7645102093</version>
<version>402.vca_263b_f200e3</version>
<type>hpi</type>
</artifactItem>
<artifactItem>
Expand Down Expand Up @@ -397,7 +397,7 @@ THE SOFTWARE.
<!-- dependency of jackson2-api -->
<groupId>io.jenkins.plugins</groupId>
<artifactId>jakarta-xml-bind-api</artifactId>
<version>4.0.6-10.v9b_7e1d1fc40b_</version>
<version>4.0.6-12.vb_1833c1231d3</version>
<type>hpi</type>
</artifactItem>

Expand Down Expand Up @@ -471,7 +471,7 @@ THE SOFTWARE.
<!-- detached after 2.163 -->
<groupId>io.jenkins.plugins</groupId>
<artifactId>jaxb</artifactId>
<version>2.3.9-133.vb_ec76a_73f706</version>
<version>2.3.9-143.v5979df3304e6</version>
<type>hpi</type>
</artifactItem>
<artifactItem>
Expand Down Expand Up @@ -606,7 +606,7 @@ THE SOFTWARE.
<artifactItem>
<groupId>io.jenkins.lib</groupId>
<artifactId>support-log-formatter</artifactId>
<version>118.v18c3eb_f88f07</version>
<version>121.v4db_e40a_98359</version>
</artifactItem>
</artifactItems>
<outputDirectory>${project.build.directory}</outputDirectory>
Expand Down
2 changes: 1 addition & 1 deletion war/src/main/java/executable/Main.java
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ public class Main {
* This list must remain synchronized with the one in {@code
* JavaVersionRecommendationAdminMonitor}.
*/
private static final NavigableSet<Integer> SUPPORTED_JAVA_VERSIONS = new TreeSet<>(List.of(21, 25));
private static final NavigableSet<Integer> SUPPORTED_JAVA_VERSIONS = new TreeSet<>(List.of(17, 21, 25));

/**
* Sets custom session cookie name.
Expand Down
16 changes: 8 additions & 8 deletions war/src/test/java/executable/MainTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,26 +13,26 @@ void unsupported() {
assertJavaCheckFails(8, true);
assertJavaCheckFails(11, false);
assertJavaCheckFails(11, true);
assertJavaCheckFails(17, false);
assertJavaCheckFails(17, true);
}

@Test
void supported() {
assertJavaCheckPasses(17, false);
assertJavaCheckPasses(17, true);
assertJavaCheckPasses(21, false);
assertJavaCheckPasses(21, true);
assertJavaCheckPasses(25, false);
assertJavaCheckPasses(25, true);
}

@Test
void future() {
assertJavaCheckFails(18, false);
assertJavaCheckFails(19, false);
assertJavaCheckFails(20, false);
assertJavaCheckFails(22, false);
assertJavaCheckFails(23, false);
assertJavaCheckFails(24, false);
assertJavaCheckPasses(18, true);
assertJavaCheckPasses(19, true);
assertJavaCheckPasses(20, true);
assertJavaCheckPasses(22, true);
assertJavaCheckPasses(23, true);
assertJavaCheckPasses(24, true);
}

private static void assertJavaCheckFails(int releaseVersion, boolean enableFutureJava) {
Expand Down
Loading