From f49ad9c9c0bfad197618a30cd08af77e79c54457 Mon Sep 17 00:00:00 2001 From: Basil Crow Date: Mon, 30 Oct 2023 14:02:55 -0700 Subject: [PATCH] Java lifecycle checklist example (incomplete) --- .../3-add-support-for-a-new-java-version.md | 56 +++++++++++++++++++ .../4-recommend-a-new-java-version.md | 38 +++++++++++++ .../5-require-a-new-java-version.md | 53 ++++++++++++++++++ docs/java-lifecycle.md | 38 +++++++++++++ 4 files changed, 185 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/3-add-support-for-a-new-java-version.md create mode 100644 .github/ISSUE_TEMPLATE/4-recommend-a-new-java-version.md create mode 100644 .github/ISSUE_TEMPLATE/5-require-a-new-java-version.md create mode 100644 docs/java-lifecycle.md diff --git a/.github/ISSUE_TEMPLATE/3-add-support-for-a-new-java-version.md b/.github/ISSUE_TEMPLATE/3-add-support-for-a-new-java-version.md new file mode 100644 index 0000000..69cefca --- /dev/null +++ b/.github/ISSUE_TEMPLATE/3-add-support-for-a-new-java-version.md @@ -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 + + + +@ + +## 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 + + + +- [ ] 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. + + + +## 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. diff --git a/.github/ISSUE_TEMPLATE/4-recommend-a-new-java-version.md b/.github/ISSUE_TEMPLATE/4-recommend-a-new-java-version.md new file mode 100644 index 0000000..b49cf96 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/4-recommend-a-new-java-version.md @@ -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 + + + +@ + +## 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 + + + +- [ ] 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. diff --git a/.github/ISSUE_TEMPLATE/5-require-a-new-java-version.md b/.github/ISSUE_TEMPLATE/5-require-a-new-java-version.md new file mode 100644 index 0000000..31871a4 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/5-require-a-new-java-version.md @@ -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 + + + +@ + +## 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 + + + +- [ ] Fix any Jira issues in stage 3. +- [ ] Update the parent POM and plugin POM to require the new version, thereby introducing a flag day. + +- [ ] Remove the Docker images of the old version. +- [ ] Update Jenkins core. + + +## 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. diff --git a/docs/java-lifecycle.md b/docs/java-lifecycle.md new file mode 100644 index 0000000..448d069 --- /dev/null +++ b/docs/java-lifecycle.md @@ -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: + +
+
Add support for a new Java version
+
The first stage enables early adopters to begin using the new Java version.
+
Recommend a new Java version
+
The second stage accelerates adoption of the new Java version.
+
Require a new Java version
+
The third stage forces users to complete the migration.
+
+ +## 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)