Skip to content

Commit d81a192

Browse files
sxaAdam Farley
andauthored
June 2023 releasing guide updates to aid simplicity (#3410)
* June 2023 releasing guide updates to aid simplicity * Formatting updates Signed-off-by: Stewart X Addison <[email protected]> * Update RELEASING.md Co-authored-by: Adam Farley <[email protected]> * Update RELEASING.md Co-authored-by: Adam Farley <[email protected]> --------- Signed-off-by: Stewart X Addison <[email protected]> Co-authored-by: Adam Farley <[email protected]>
1 parent bceb92c commit d81a192

File tree

1 file changed

+50
-37
lines changed

1 file changed

+50
-37
lines changed

RELEASING.md

Lines changed: 50 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,7 @@ Don't be scared off by this document! If you already understand the stuff in th
2828
- Wait for Red Hat/Oracle to push the GA code to GitHub and announce availability:
2929
- jdk8u : <https://github.com/openjdk/jdk8u>
3030
- Announce: <https://mail.openjdk.java.net/pipermail/jdk8u-dev/>
31-
- jdk11u:  <https://github.com/openjdk/jdk11u>
32-
- Announce: <https://mail.openjdk.java.net/pipermail/jdk-updates-dev/>
33-
- jdk17u: <https://github.com/openjdk/jdk17u>
31+
- jdk11u and later:
3432
- Announce: <https://mail.openjdk.java.net/pipermail/jdk-updates-dev/>
3533
- jdkXX: <https://github.com/openjdk/jdkXX/>
3634
- Announce: <https://mail.openjdk.java.net/pipermail/jdk-dev/>
@@ -50,6 +48,8 @@ Post the below message to the #build & #release channels in Slack:
5048

5149
#### Create release branch on below repositories:
5250

51+
Create release branch in the format `vYYYY.MM.NN` on each of the following repositories:
52+
5353
- temurin-build <https://github.com/adoptium/temurin-build>
5454
- ci-jenkins-pipelines <https://github.com/adoptium/ci-jenkins-pipelines>
5555
- jenkins-helper <https://github.com/adoptium/jenkins-helper>
@@ -105,6 +105,9 @@ Affected repositories:
105105
2. `DEFAULTS_JSON.repository.build_branch`, `ADOPT_DEFAULTS_JSON.repository.build_branch`, `DEFAULTS_JSON.repository.pipeline_branch` and `ADOPT_DEFAULTS_JSON.repository.pipeline_branch` should get correct release branch name as `releaseTag`
106106
3. `DEFAULTS_JSON.repository.helper_ref` and `ADOPT_DEFAULTS_JSON.repository.helpe_ref` should get correct release branch name as `helperTag`
107107

108+
<details>
109+
<summary>FLOW CHART OF THE PIPELINE GENERATOR PROCESS</summary>
110+
108111
```mermaid
109112
110113
flowchart TD
@@ -138,17 +141,19 @@ flowchart TD
138141
139142
```
140143

144+
</details>
145+
141146
Disable nightly testing so the release builds aren't delayed by any nightly test runs (set `enableTests : false` in [defaults.json](https://github.com/adoptium/ci-jenkins-pipelines/blob/master/pipelines/defaults.json)). Ensure the build pipeline generator job runs successfully (<https://ci.adoptium.net/job/build-scripts/job/utils/job/build-pipeline-generator/>), and the flag is disabled by bringing up the Build pipeline job and check the `enableTests` checkbox is unticked.
142147

143148
Add a banner to the website to indicate that the releases are coming in the near future ([Example Changes](https://github.com/adoptium/adoptium.net/blob/main/src/components/Banner.tsx)).
144149

145150
### Steps for every version
146151

147-
### Auto Way
152+
### Automatic trigger of GA pipeline jobs
148153

149-
We are in the process of automation release build. Here are the new steps (Switch 19 for your version number):
154+
In order to reduce time to GA, we have automated triggers to ensure that the GA build pipelines are triggered as soon as the GA tags come out so it does not rely on one of the Adoptium team members watching it and kicking them off manually. These examples use JDK17 - adjust for the version you're interested in.
150155

151-
1. Jenkins "release trigger" job (e.g <https://ci.adoptium.net/job/build-scripts/job/utils/job/releaseTrigger_jdk19u/>) runs every hour in the release week to check if new GA tag has been detected in the adoptium's source code repo (e.g <https://github.com/adoptium/jdk19u> This excludes https://github.com/adoptium/aarch32-jdk8u)
156+
1. Jenkins "release trigger" job (e.g <https://ci.adoptium.net/job/build-scripts/job/utils/job/releaseTrigger_jdk17u/>) runs every hour in the release week to check if new GA tag has been detected in the adoptium's source code repo - the script run from the checks for the new release every 10 minutes five times (e.g <https://github.com/adoptium/jdk17u>) This excludes https://github.com/adoptium/aarch32-jdk8u
152157
2. If it finds new GA tag matches expected tag set in mirror-script repo, job triggers release-openjdk19-pipeline (e.g https://ci.adoptium.net/job/build-scripts/job/release-openjdk19-pipeline/) with parameters: `scmReference`.
153158
3. If it couldn't find the correct "_adopt" tag but GA tag has been applied in the upstream Skara source code repo. Several things can check:
154159

@@ -164,6 +169,9 @@ We are in the process of automation release build. Here are the new steps (Switc
164169
- customized `targetConfigurations` value: should only contain one target
165170
- customized `overridePublishName` value
166171

172+
<details>
173+
<summary>FLOW CHART OF THE RELEASE TRIGGER PROCESS</summary>
174+
167175
```mermaid
168176
169177
flowchart TD
@@ -175,30 +183,33 @@ jdk8armStep1["ReleaseChampion check once GA tag on jdk8 aarch32Linux is ready"]
175183
176184
```
177185

178-
### Auto Way - Before release week dry-run release test
186+
### Dry run tests: Do this at least 2 weeks before release in the same calendar month
179187

180-
In the 2 weeks prior to the release week an auto trigger test will be performed on a chosen version (suggest jdk8 and one other) to validate the trigger and build processes and the release pipeline. jdk-17 example:
188+
It is recommended that we perform an auto trigger test on a chosen version (suggest jdk8 and one other) to validate the trigger and build processes and the release pipeline. jdk-17 example:
181189

182-
1. Ensure the expected release tag configuration is as expected for the upcoming release: https://github.com/adoptium/mirror-scripts/blob/master/releasePlan.cfg
183-
2. Determine adoptium/jdkNNu mirror openjdk tag to be built for the trial release pipeline (eg.jdk-17.0.6+8), note the openjdk tag NOT the _adopt tag. Choose the 2nd latest build tag commit (ensure latest tags are not on the same commit). So for example if the latest tag is jdk-17.0.6+9, choose jdk-17.0.6+8 (unless it is the same commit in which case keep going backwards..)
184-
3. Update JDKnn_BRANCH property in the aqa-tests testenv.properties for the **aqa release** branch, eg: https://github.com/adoptium/aqa-tests/blob/v0.9.6-release/testenv/testenv.properties
185-
4. Get an Adoptium Admin to tag the trial tag to build in the adoptium mirror, as in the following example:
190+
1. Update [releasePlan.cfg](https://github.com/adoptium/mirror-scripts/blob/master/releasePlan.cfg) with the correct version numbers for the new release.
191+
2. Choose the second latest openjdk tag without the `_adopt` suffix (unless it is the same as the latest in which case keep going backwards..) in the adoptium/jdkNNu repository that you are using for the dry run.
192+
3. Ensure that the branch of aqa_tests has been created for this release.
193+
4. Update [testenv/testenv.properties](https://github.com/adoptium/aqa-tests/blob/master/testenv/testenv.properties) in the branch of aqa-tests to point to the tag as the JDKnn_BRANCH e.g. `jdk-17.0.x+y` (i.e. not `dev`)
194+
5. Get an Adoptium administrator to create the `-dryrun` tag to build in the adoptium mirror, as in the following example:
186195

187196
<!-- markdownlint-disable-next-line MD036 -->
188-
**IMPORTANT: trial tag MUST be "-dryruntest-ga"**
197+
**IMPORTANT: trial tag MUST be something that is sorted before `-ga`. Recommended format: "-dryrun-ga"**
189198

190199
`git clone [email protected]:adoptium/jdk17u.git`
191200

192201
`cd jdk17u`
193202

194-
`git tag -a "jdk-17.0.6-dryruntest-ga" jdk-17.0.6+8^{} -m"Before YYYY.MM release dry-run test"`
203+
`git tag -a "jdk-17.0.6-dryrun-ga" jdk-17.0.6+8^{} -m"YYYY.MM release dry run test"`
195204

196205
`git push --tags origin master`
197206

198-
6. Wait release trigger job to detect the tag (wait up to 10mins), eg: https://ci.adoptium.net/job/build-scripts/job/utils/job/releaseTrigger_jdk17u/ (if before the 13th day of the month then you will need to manually run the job as it will be outside its cron schedule)
207+
6. Wait for the release trigger job to detect the tag (wait up to 10mins), e.g. [releaseTrigger_jdk17u](https://ci.adoptium.net/job/build-scripts/job/utils/job/releaseTrigger_jdk17u) (Note that the schedule for that job is only run on the release months, so may not work if you are keen and try to do this in the month before)
199208
7. The trial release pipeline job should now be running, eg: https://ci.adoptium.net/job/build-scripts/job/release-openjdk17-pipeline/
209+
8. Once you have verified that everything looks good, testenv.properties should be adjusted to have the expected GA tag before the final release appears.
200210

201-
### Manual Way
211+
<details>
212+
<summary>Manual execution of the build pipelines (without using trigger jobs - now mostly obsolete other than jdk8u/arm32)</summary>
202213

203214
Here are the old manual steps:
204215

@@ -225,20 +236,22 @@ Here are the old manual steps:
225236
- `enableTests`: tick
226237
- Click "Build" button !!!
227238

239+
</details>
240+
228241
### After build pipeline finished
229242

230243
Once the openjdk pipeline has completed:
231244

232245
1. Triage TRSS result:
233246

234-
- Follow [triage the results](https://github.com/adoptium/aqa-tests/blob/master/doc/Triage.md). Go to [TRSS](https://trss.adoptopenjdk.net/tests/Test)
247+
- Follow [triage the results](https://github.com/adoptium/aqa-tests/blob/master/doc/Triage.md). Go to [TRSS](https://trss.adoptopenjdk.net/tests/Test) which will guide you through creating an aqa test triage issue for the release
235248
- Find the section of each jdk build, e.g `openjdk8-pipeline in server https://ci.adoptium.net/job/build-scripts` for JDK8
236249
- Click "Grid" link on the correct Build row
237250
- Check if not all are "Green", create new "release triage" issue in `aqa-tests` repository, set description to "Release Summary Report" content and follow the Jenkins link to triage error and failure.
238251
- Raise issues either at:
239-
- [temurin-build](https://github.com/adoptium/temurin-build) (for Adoptium build script)
240-
- [aqa-tests](https://github.com/adoptium/aqa-tests) ( for test issues)
241-
- [ci-jenkins-pipelines](https://github.com/adoptium/ci-jenkins-pipelines) (for jenkins pipelines specific issues)
252+
- [temurin-build](https://github.com/adoptium/temurin-build) (for Adoptium build script)
253+
- [aqa-tests](https://github.com/adoptium/aqa-tests) ( for test issues)
254+
- [ci-jenkins-pipelines](https://github.com/adoptium/ci-jenkins-pipelines) (for jenkins pipelines specific issues)
242255
- Discuss failing tests with [Shelley Lambert](https://github.com/smlambert) or post on testing-aqavit Slack channel
243256
- Once all AQA tests on all platforms and all JDK versions have been signed off, then nightly tests can be re-enabled. See the notes on "Disable nightly testing".
244257

@@ -247,27 +260,27 @@ Once the openjdk pipeline has completed:
247260
- If "good to publish", get permission to publish the release from the Adoptium PMC members, discussion is via the Adoptium [#release](https://adoptium.slack.com/messages/CLCFNV2JG) Slack channel.
248261
- Once permission has been obtained, run the [openjdk_release_tool](https://ci.adoptium.net/job/build-scripts/job/release/job/refactor_openjdk_release_tool/) to publish the releases to GitHub (restricted access - if you can't see this link, you don't have access). It is *strongly recommended* that you run first with the `DRY_RUN` checkbox enabled and check the output to verify that the correct list of files you expected are picked up.
249262

250-
-- `TAG`: (GitHub binaries published name)  e.g. `jdk-11.0.5+9`. If doing a point release, add that into the name e.g. for a `.3` release use something like this: `jdk8u232-b09.3`
251-
-- `VERSION`: (select version e.g. `jdk11`)
252-
-- `UPSTREAM_JOB_NAME`: e.g "build-scripts/release-openjdkXX-pipeline" for new way and "build-scripts/openjdkXX-pipeline" for old way
253-
-- `UPSTREAM_JOB_NUMBER`: the build number of above upstream job, e.g. 86
254-
-- `RELEASE`: "ticked"
255-
-- If you need to restrict the platforms or only ship jdks or jres, either use `ARTIFACTS_TO_COPY` e.g. `**/*jdk*mac*` or add an explicit exclusion in `ARTIFACTS_TO_SKIP` e.g. `**/*mac*`. These may be required if you had to re-run some of the platforms under a different pipeline earlier in the process. If you're unsure what the possible names are, look at the artifacts of the appropriate `openjdkNN-pipeline` job. If you are shipping x64_linux ensure that you include the `sources` tar.gz files with the corresponding checksum and json file.
256-
-- `ARTIFACTS_TO_SKIP`: `**/*testimage*`
257-
-- If you need to restrict the platforms, fill in `ARTIFACTS_TO_COPY` and if needed att to `ARTIFACTS_TO_SKIP`. This may also be required if you had to re-run some of the platforms under a different pipeline earlier in the process. I personally tend to find it cleaner to release Linux in one pipeline, Windows+Mac in another, then the others together to keep the patterns simpler. Sample values for `ARTIFACTS_TO_COPY` are as follows (use e.g. `_x64_linux_` to restrict by architecture if required):
258-
1. `**/*_linux_*.tar.gz,**/*_linux_*.sha256.txt,**/*_linux_*.json,**/*_linux_*.sig` (Exclude `**/*alpine_linux*` if you don't really want that to be picked up too)
259-
2. Alternative that wouldn't pick up Alpine: `target/linux/x64/hotspot/**.tar.gz,target/linux/x64/hotspot/target/linux/x64/hotspot/*.sha256.txt`
260-
3. `**/*_mac_*.tar.gz,**/*_mac_*.sha256.txt,**/*_mac_*.json,**/*_mac_*.pkg,**/*_mac_*.sig`
261-
4. `**/*_windows_*.zip,**/*_windows_*.sha256.txt,**/*_windows_*.json,**/*_windows_*.msi,**/*_windows_*.sig`
262-
5. `**/*_aix_*.tar.gz,**/*_aix_*.sha256.txt,**/*_aix_*.json,**/*_aix_*.sig`
263-
6. `**/*_solaris_*.tar.gz,**/*_solaris_*.sha256.txt,**/*_solaris_*.json,**/*_solaris_*.sig`
264-
-- Click "Build" button !!!
263+
-- `TAG`: (GitHub binaries published name)  e.g. `jdk-11.0.5+9`. If doing a point release, add that into the name e.g. for a `.3` release use something like this: `jdk8u232-b09.3`
264+
-- `VERSION`: (select version e.g. `jdk11`)
265+
-- `UPSTREAM_JOB_NAME`: e.g "build-scripts/release-openjdkXX-pipeline" for new way and "build-scripts/openjdkXX-pipeline" for old way
266+
-- `UPSTREAM_JOB_NUMBER`: the build number of above upstream job, e.g. 86
267+
-- `RELEASE`: "ticked"
268+
-- If you need to restrict the platforms or only ship jdks or jres, either use `ARTIFACTS_TO_COPY` e.g. `**/*jdk*mac*` or add an explicit exclusion in `ARTIFACTS_TO_SKIP` e.g. `**/*mac*`. These may be required if you had to re-run some of the platforms under a different pipeline earlier in the process. If you're unsure what the possible names are, look at the artifacts of the appropriate `openjdkNN-pipeline` job. If you are shipping x64_linux ensure that you include the `sources` tar.gz files with the corresponding checksum and json file.
269+
-- `ARTIFACTS_TO_SKIP`: `**/*testimage*`
270+
-- If you need to restrict the platforms, fill in `ARTIFACTS_TO_COPY` and if needed add to `ARTIFACTS_TO_SKIP`. This may also be required if you had to re-run some of the platforms under a different pipeline earlier in the process. I personally tend to find it cleaner to release Linux in one pipeline, Windows+Mac in another, then the others together to keep the patterns simpler. Sample values for `ARTIFACTS_TO_COPY` are as follows (use e.g. `_x64_linux_` to restrict by architecture if required):
271+
--- `**/*_linux_*.tar.gz,**/*_linux_*.sha256.txt,**/*_linux_*.json,**/*_linux_*.sig` (Exclude `**/*alpine_linux*` if you don't really want that to be picked up too)
272+
--- Alternative that wouldn't pick up Alpine: `target/linux/x64/hotspot/**.tar.gz,target/linux/x64/hotspot/target/linux/x64/hotspot/*.sha256.txt`
273+
--- `**/*_mac_*.tar.gz,**/*_mac_*.sha256.txt,**/*_mac_*.json,**/*_mac_*.pkg,**/*_mac_*.sig`
274+
--- `**/*_windows_*.zip,**/*_windows_*.sha256.txt,**/*_windows_*.json,**/*_windows_*.msi,**/*_windows_*.sig`
275+
--- `**/*_aix_*.tar.gz,**/*_aix_*.sha256.txt,**/*_aix_*.json,**/*_aix_*.sig`
276+
--- `**/*_solaris_*.tar.gz,**/*_solaris_*.sha256.txt,**/*_solaris_*.json,**/*_solaris_*.sig`
277+
-- Click "Build" button !!!
265278
- Once the job completes successfully, check the binaries have uploaded to GitHub at somewhere like <https://github.com/adoptium/temurin8-binaries/releases/tag/jdk8u302-b08>
266279
- Within 15 minutes the binaries should be available on the website too. e.g. <https://adoptium.net/?variant=openjdk11&jvmVariant=hotspot> (NOTE: If it doesn't show up, check whether the API is returning the right thing (e.g. with a link such as [this](https://api.adoptium.net/v3/assets/feature_releases/17/ga?architecture=x64&heap_size=normal&image_type=jre&jvm_impl=hotspot&os=linux&page=0&page_size=10&project=jdk&sort_method=DEFAULT&sort_order=DESC&vendor=eclipse), and that the `.json` metadata files are uploaded correctly)
267280
- During the waiting time, good to update:
268281

269-
-- <https://github.com/adoptium/website-v2/blob/main/src/asciidoc-pages/support.adoc> which is the source of <https://adoptium.net/support> ([Sample change](https://github.com/adoptium/website-v2/pull/1105)
270-
-- (if required) the supported platforms table at <https://github.com/adoptium/website-v2/edit/main/src/asciidoc-pages/supported-platforms.adoc> which is the source of <https://adoptium.net/supported-platforms>
282+
-- <https://github.com/adoptium/website-v2/blob/main/src/asciidoc-pages/support.adoc> which is the source of <https://adoptium.net/support> ([Sample change](https://github.com/adoptium/website-v2/pull/1105))
283+
-- (if required) the supported platforms table at <https://github.com/adoptium/website-v2/edit/main/src/asciidoc-pages/supported-platforms.adoc> which is the source of <https://adoptium.net/supported-platforms>
271284

272285
3. Publish packages for different OS
273286

0 commit comments

Comments
 (0)