Skip to content

Commit

Permalink
Java lifecycle checklist example (incomplete)
Browse files Browse the repository at this point in the history
  • Loading branch information
basil committed Oct 30, 2023
1 parent 3f1ba33 commit f49ad9c
Show file tree
Hide file tree
Showing 4 changed files with 185 additions and 0 deletions.
56 changes: 56 additions & 0 deletions .github/ISSUE_TEMPLATE/3-add-support-for-a-new-java-version.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
---
name: "🚀 Add support for a new Java version checklist"
labels: java-lifecycle-checklist
about: Track work required to add support for a new Java version
---

# Stage 1: Add support for a new Java version

More information is available in the [Java lifecycle guide](https://github.com/jenkins-infra/release/blob/master/docs/releases.md).

## Stage Lead

<!--
The stage lead is expected to perform or delegate the work.
-->

@<github-username of stage lead>

## Preparatory work

- [ ] Create three GitHub issues in this repository, one for each stage.
- [ ] Create three Jira epics, one for each stage.
- [ ] Request that the infrastructure team provide the new Java version on [ci.jenkins.io](https://ci.jenkins.io) and other controllers.

## Primary work

<!--
TODO: link to example PRs
TODO: provide more details about each step
-->

- [ ] Update core and core components.
- [ ] (Core only) Update `jenkins.monitor.JavaVersionRecommendationAdminMonitor#SUPPORTED_JAVA_VERSIONS`.
- [ ] (Core only) Update `executable.Main#SUPPORTED_JAVA_VERSIONS`.
- [ ] Run a local build with the new version; find and fix compilation errors and test failures.
- [ ] If any new warnings are introduced, file Jira issues in the stage 2 epic.
- [ ] Update the `Jenkinsfile` to test on the new version.
- [ ] Update the `Jenkinsfile` for PCT.
- [ ] Run a build with the new Java version.
- [ ] For any failures, file Jira issues in the stage 1 epic (possibly adding a temporary workaround to keep running those plugin builds on the old Java version).
- [ ] Update the `Jenkinsfile` for ATH.
- [ ] Run a build with the new Java version.
- [ ] For any failures, file Jira issues in the stage 1 epic.
- [ ] Update the archetype and the `Jenkinsfile` for critical plugins.
- [ ] Add support for the new Java version in the Windows installer.
- [ ] Fix the stage 1 issues identified previously, if any.
- [ ] Write a blog post announcing the beginning of a new Java lifecycle.

<!--
TODO: what needs to be done to docs?
-->

## Subsequent work

- [ ] Monitor Jira for issues in the stage 1 epic.
- [ ] Confirm early adopters are visible in JVM usage statistics in the next few months.
38 changes: 38 additions & 0 deletions .github/ISSUE_TEMPLATE/4-recommend-a-new-java-version.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
---
name: "🎉 Recommend a new Java version checklist"
labels: java-lifecycle-checklist
about: Track work required to recommend a new Java version
---

# Stage 2: Recommend a new Java version

More information is available in the [Java lifecycle guide](https://github.com/jenkins-infra/release/blob/master/docs/releases.md).

## Stage Lead

<!--
The stage lead is expected to perform or delegate the work.
-->

@<github-username of stage lead>

## Preparatory work

- [ ] Ensure all outstanding Jira issues from stage 1 have been addressed.
- [ ] Confirm adoption has been increasing steadily in JVM usage statistics.

## Primary work

<!--
TODO: link to example PRs
TODO: provide more details about each step
-->

- [ ] Fix any Jira issues in stage 2.
- [ ] Update the default Docker image to use the new version of Java.
- [ ] Update the Windows installer to use the new version of Java by default.

## Subsequent work

- [ ] Monitor Jira for issues in the stage 2 epic.
- [ ] Confirm a spike is visible in JVM usage statistics in the next few months.
53 changes: 53 additions & 0 deletions .github/ISSUE_TEMPLATE/5-require-a-new-java-version.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
---
name: "🚨 Require a new Java version checklist"
labels: java-lifecycle-checklist
about: Track work required to require a new Java version
---

# Stage 3: Require a new Java version

More information is available in the [Java lifecycle guide](https://github.com/jenkins-infra/release/blob/master/docs/releases.md).

## Stage Lead

<!--
The stage lead is expected to perform or delegate the work.
-->

@<github-username of stage lead>

## Preparatory work

- [ ] Ensure all outstanding Jira issues from stage 2 have been addressed.
- [ ] Confirm adoption has been increasing steadily in JVM usage statistics.

## Primary work

<!--
TODO: link to example PRs
TODO: provide more details about each step
-->

- [ ] Fix any Jira issues in stage 3.
- [ ] Update the parent POM and plugin POM to require the new version, thereby introducing a flag day.
<!--
TODO: Or instead allow the same parent POM to continue to be used with older Java versions,
provided the consumers customize the maven.compiler.release and maven.compiler.testRelease to the
older Java version? This could be more flexible, but also more confusing, depending on one's
perspective. This ought to be discussed.
-->
- [ ] Remove the Docker images of the old version.
- [ ] Update Jenkins core.
<!--
TODO: what needs to be done to Jenkins core and core components?
TODO: what needs to be done to the Windows installer?
TODO: what needs to be done to docs?
TODO: what needs to be done to PCT?
TODO: what needs to be done to ATH?
TODO: what else needs to be done?
-->

## Subsequent work

- [ ] Monitor Jira for issues in the stage 3 epic.
- [ ] Confirm a decrease is visible in JVM usage statistics in the next few months.
38 changes: 38 additions & 0 deletions docs/java-lifecycle.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# Java lifecycle

This document describes the implementation of the Java lifecycle described in JEP-400.

## Overview

The Java lifecycle consists of three stages:

<dl>
<dt>Add support for a new Java version</dt>
<dd>The first stage enables early adopters to begin using the new Java version.</dd>
<dt>Recommend a new Java version</dt>
<dd>The second stage accelerates adoption of the new Java version.</dd>
<dt>Require a new Java version</dt>
<dd>The third stage forces users to complete the migration.</dd>
</dl>

## Procedure

### Choosing dates

During the implementation of the first stage, the date of the third stage must be decided.
The administrative monitor warns users 12 months before the date of the third stage, implying the date for the second stage as well.
In other words, the implementation of the first stage also defines the dates for the second and third stages.
The date of the third stage for a given Java LTS release is typically two years after the date of the third stage for the previous Java LTS release,
and it must be before the date the Eclipse Temurin project drops support for the given Java version.

### Checklists

The implementation of these tasks is managed through three checklists, one for each stage.
At the beginning of the first stage, create three GitHub issues, one for each stage.
As each stage is completed, the corresponding issue can be closed.
Each issue need not be assigned to the same person,
though it may be desirable to do so for purposes of continuity.

- [Add support for a new Java version](https://github.com/jenkins-infra/release/blob/master/.github/ISSUE_TEMPLATE/3-add-support-for-a-new-java-version.md)
- [Recommend a new Java version](https://github.com/jenkins-infra/release/blob/master/.github/ISSUE_TEMPLATE/4-recommend-a-new-java-version.md)
- [Require a new Java version](https://github.com/jenkins-infra/release/blob/master/.github/ISSUE_TEMPLATE/5-require-a-new-java-version.md)

0 comments on commit f49ad9c

Please sign in to comment.