From 6bdbe69eeb0e8caf815f5a77a8860d8096acb8d7 Mon Sep 17 00:00:00 2001 From: Stewart X Addison Date: Tue, 20 Feb 2024 11:40:18 +0000 Subject: [PATCH 1/6] blog: early access builds for all releases Signed-off-by: Stewart X Addison --- .../blog/early-access-builds-feb2024/index.md | 119 ++++++++++++++++++ content/blog/early-access-builds/index.md | 5 + 2 files changed, 124 insertions(+) create mode 100644 content/blog/early-access-builds-feb2024/index.md diff --git a/content/blog/early-access-builds-feb2024/index.md b/content/blog/early-access-builds-feb2024/index.md new file mode 100644 index 000000000..af1869a54 --- /dev/null +++ b/content/blog/early-access-builds-feb2024/index.md @@ -0,0 +1,119 @@ +--- +title: Tagged early access builds for all releases +date: "2024-02-21T14:00:00+00:00" +author: sxa +description: Adoptium are now publishing early access "tagged" builds for all Temurin releases +tags: + - temurin +--- + +[A few months ago](https://adoptium.net/blog/2023/08/early-access-builds) +we switched from producing semi-nightly builds of the head of our +repositories to building from upstream tags for JDK21+. We have now +switched all of the currently supported repositories over to the same +mechanism so jdk8u, jdk11u, and jdk17u are also now building and publishing +from the upstream early access tags. This will also include our +“evaluation” platforms - currently Windows on 64-bit Arm and Linux on +riscv64. + +## How often do new tags come out? + +The tags are typically created upstream once a week so you should expect +that our early access builds will be triggered and published on that +cadence. We are running our full set of tests on each build too, although +unlike our formal GA releases we will not tie the publishing of these to the +results of the test runs - early access builds should be considered untested +and not for production use. The early access builds will typically come out +towards the end of each week and for those of you in the adoptium +slack/matrix channels there are daily status posts regarding the health of +these builds. + +By building and providing these early access builds from tags instead of the +head of the default branch we can more easily work with the upstream openjdk +project to identify the contents of a specific builds when providing but +reports and reproduductions. + +## How do I get the early access builds? + +You can download the tagged early access builds from [the +website](https://adoptium.net/temurin/nightly/) or the API +using a URL such as the following, changing the operating system and +architecture for your needs. Note that if you are accessing these URLs +using curl you will need to add the -L option to dereference the API’s +redirects: + +- https://api.adoptium.net/v3/binary/latest/21/ea/linux/aarch64/jdk/hotspot/normal/adoptium + +At the time of writing this will provide you with jdk-21.0.3+3. If you want +a previous build to compare with then you can specify a particular version +directly when calling them API, for example this will retrieve jdk-21.0.3+2 +from the previous week: + +- https://api.adoptium.net/v3/binary/version/jdk-21.0.3+2-ea-beta/linux/aarch64/jdk/hotspot/normal/adoptium + +Also while it is not the recommended way to retrieve them you can also find +the releases named with an ea-beta suffix directly on the github releases +pages such as + +- https://github.com/adoptium/temurin21-binaries/releases?q=ea-beta&expanded=true + +the release names in there correspond with the part of the API URL after +“/version/” in the API example above. + +Please note that early access builds are not made available as rpm/deb or +container images. + +## Can I tell what's changed in each tagged build from the previous one? + +Yes you can! Since the tags are generally produced on a weekly cadence +there typically aren't too many commits between the releases, so if you +detect a problem there will only be a small number of commits that may have +caused it. A query such as this: + +- https://github.com/adoptium/jdk21u/compare/jdk-21.0.3+2_adopt...jdk-21.0.3+3_adopt + +will show the commits between 21.0.3+2 and 21.0.3+3. Since our source is as +clean as possible from upstream openjdk, the following URL using the +upstream openjdk repository will typically give the same output: + +- https://github.com/openjdk/jdk21u/compare/jdk-21.0.3+2...jdk-21.0.3+3 + +From the command line if you have a clone of our repository you can use +these comments to get the list of commits and or the full source code diff: + +``` +git log jdk-21.0.3+2_adopt..jdk-21.0.3+3_adopt +git diff jdk-21.0.3+2_adopt..jdk-21.0.3+3_adopt +``` + +## Release Candidate builds + +Since we are now producing builds explicitly from the tags, this means that +when a build is declared as a release candidate for an upcoming release, you +can download a Temurin early access build corresponding to that version on +each of our platforms. At the time of writing jdk-22+36 has been declared +release candidate 1 for the upcoming JDK22 release so using similar queries +to those referenced earlier it can be downloaded from: + +- https://api.adoptium.net/v3/binary/version/jdk-22+36-ea-beta/linux/aarch64/jdk/hotspot/normal/adoptium + +## Why am I not seeing early access builds for the latest release? + +There is one caveat for early access builds is that for the few months after +a new major release comes out when it is typically managed by Oracle there +are no regular tags produced so we cannot use the processes described in +this article to build from tags. In this case we will revert to building +regularly from the head of the repository. In these cases if you need to +know what is in each version you can determine which github SHA we built +from using corresponding SBoM that can be downloaded from the API by +replacing “/jdk/” with “/sbom/” in the above URL. For example: + +- https://api.adoptium.net/v3/binary/version/jdk-22+36-ea-beta/linux/aarch64/sbom/hotspot/normal/eclipse?project=jdk + +If you are using a GNU grep then this will easily show the commit: + +- `curl -L https://api.adoptium.net/v3/binary/version/jdk-22+36-ea-beta/linux/aarch64/sbom/hotspot/normal/eclipse?project=jdk | grep -A1 "OpenJDK Source Commit"` + +For more information on the adoptium API see the swagger-ui docs linked at https://api.adoptium.net + +Please let us know if you find the early access builds useful. \ No newline at end of file diff --git a/content/blog/early-access-builds/index.md b/content/blog/early-access-builds/index.md index 5b211237e..b0622a960 100644 --- a/content/blog/early-access-builds/index.md +++ b/content/blog/early-access-builds/index.md @@ -6,6 +6,11 @@ description: Adoptium are publishing early access "tagged" builds instead of nig tags: - temurin --- + +NOTE: Much of the information in this blog has been superceded by +https://adoptium.net/blog/2024/02/early-access-builds-feb2024 - please refer +to that one instead + In addition to the generally available release builds of all currently supported versions of openjdk (Currently 8, 11, 17 and 20) Temurin also publishes "nightly" development builds of all of those streams as well as the upcoming releases (JDK21/22 From a7385e29f461d2221b6825ccd0ca5c3f225b058d Mon Sep 17 00:00:00 2001 From: Stewart X Addison Date: Tue, 20 Feb 2024 13:46:51 +0000 Subject: [PATCH 2/6] Updates following Review from jerboaa Signed-off-by: Stewart X Addison --- .../blog/early-access-builds-feb2024/index.md | 27 ++++++++++++------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/content/blog/early-access-builds-feb2024/index.md b/content/blog/early-access-builds-feb2024/index.md index af1869a54..61bfcbf13 100644 --- a/content/blog/early-access-builds-feb2024/index.md +++ b/content/blog/early-access-builds-feb2024/index.md @@ -30,8 +30,8 @@ these builds. By building and providing these early access builds from tags instead of the head of the default branch we can more easily work with the upstream openjdk -project to identify the contents of a specific builds when providing but -reports and reproduductions. +project to identify the contents of a specific builds when providing bug +reports and reproductions. ## How do I get the early access builds? @@ -46,7 +46,7 @@ redirects: At the time of writing this will provide you with jdk-21.0.3+3. If you want a previous build to compare with then you can specify a particular version -directly when calling them API, for example this will retrieve jdk-21.0.3+2 +directly when calling the API, for example this will retrieve jdk-21.0.3+2 from the previous week: - https://api.adoptium.net/v3/binary/version/jdk-21.0.3+2-ea-beta/linux/aarch64/jdk/hotspot/normal/adoptium @@ -99,15 +99,24 @@ to those referenced earlier it can be downloaded from: ## Why am I not seeing early access builds for the latest release? -There is one caveat for early access builds is that for the few months after -a new major release comes out when it is typically managed by Oracle there -are no regular tags produced so we cannot use the processes described in -this article to build from tags. In this case we will revert to building +There is one caveat for producing early access builds using this procedure. +The process relies on the party maintaining the upstream version to perform +the tagging in public. If those tags aren't visible in public, we have no +way to build from an invisible tag. This usually happens for the time +period when new major JDK versions get released and subsequent quarterly +security updates for those releases are being handled by Oracle. For +example between JDK `22` GA, `22.0.1` and `22.0.2` releases. There are no +public tags available for early access tags `jdk-22.0.1+1`, `jdk-22.0.1+2` +and so on. Should processes change some time in the future we'd of course +provide early access builds using the same process as for other releases. + +In the case of no publicly visible tags, however, we will revert to building regularly from the head of the repository. In these cases if you need to -know what is in each version you can determine which github SHA we built -from using corresponding SBoM that can be downloaded from the API by +know what is in each version you can determine which git SHA we built from +using corresponding SBoM artefact that can be downloaded from the API by replacing “/jdk/” with “/sbom/” in the above URL. For example: + - https://api.adoptium.net/v3/binary/version/jdk-22+36-ea-beta/linux/aarch64/sbom/hotspot/normal/eclipse?project=jdk If you are using a GNU grep then this will easily show the commit: From 6078ebe7c4276269efcfa692f3d5f035b2de9e32 Mon Sep 17 00:00:00 2001 From: Stewart X Addison Date: Tue, 20 Feb 2024 13:49:50 +0000 Subject: [PATCH 3/6] Linter has suddenly got more picky ... Signed-off-by: Stewart X Addison --- content/blog/early-access-builds-feb2024/index.md | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/content/blog/early-access-builds-feb2024/index.md b/content/blog/early-access-builds-feb2024/index.md index 61bfcbf13..0a0cd71e2 100644 --- a/content/blog/early-access-builds-feb2024/index.md +++ b/content/blog/early-access-builds-feb2024/index.md @@ -35,8 +35,8 @@ reports and reproductions. ## How do I get the early access builds? -You can download the tagged early access builds from [the -website](https://adoptium.net/temurin/nightly/) or the API +You can obtain the tagged early access builds from [the +download page](https://adoptium.net/temurin/nightly/) or the API using a URL such as the following, changing the operating system and architecture for your needs. Note that if you are accessing these URLs using curl you will need to add the -L option to dereference the API’s @@ -52,7 +52,7 @@ from the previous week: - https://api.adoptium.net/v3/binary/version/jdk-21.0.3+2-ea-beta/linux/aarch64/jdk/hotspot/normal/adoptium Also while it is not the recommended way to retrieve them you can also find -the releases named with an ea-beta suffix directly on the github releases +the releases named with an ea-beta suffix directly on the GitHub releases pages such as - https://github.com/adoptium/temurin21-binaries/releases?q=ea-beta&expanded=true @@ -78,10 +78,10 @@ upstream openjdk repository will typically give the same output: - https://github.com/openjdk/jdk21u/compare/jdk-21.0.3+2...jdk-21.0.3+3 -From the command line if you have a clone of our repository you can use +From the command-line if you have a clone of our repository you can use these comments to get the list of commits and or the full source code diff: -``` +```sh git log jdk-21.0.3+2_adopt..jdk-21.0.3+3_adopt git diff jdk-21.0.3+2_adopt..jdk-21.0.3+3_adopt ``` @@ -99,7 +99,7 @@ to those referenced earlier it can be downloaded from: ## Why am I not seeing early access builds for the latest release? -There is one caveat for producing early access builds using this procedure. +There is one caveat for producing early access builds using this procedure. The process relies on the party maintaining the upstream version to perform the tagging in public. If those tags aren't visible in public, we have no way to build from an invisible tag. This usually happens for the time @@ -116,7 +116,6 @@ know what is in each version you can determine which git SHA we built from using corresponding SBoM artefact that can be downloaded from the API by replacing “/jdk/” with “/sbom/” in the above URL. For example: - - https://api.adoptium.net/v3/binary/version/jdk-22+36-ea-beta/linux/aarch64/sbom/hotspot/normal/eclipse?project=jdk If you are using a GNU grep then this will easily show the commit: @@ -125,4 +124,4 @@ If you are using a GNU grep then this will easily show the commit: For more information on the adoptium API see the swagger-ui docs linked at https://api.adoptium.net -Please let us know if you find the early access builds useful. \ No newline at end of file +Please let us know if you find the early access builds useful. From 5e045aa649162052232b9f87347e4f25217d2a17 Mon Sep 17 00:00:00 2001 From: Stewart X Addison Date: Tue, 20 Feb 2024 14:00:28 +0000 Subject: [PATCH 4/6] Update to say jdk-22+36 is RC2 Signed-off-by: Stewart X Addison --- content/blog/early-access-builds-feb2024/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/blog/early-access-builds-feb2024/index.md b/content/blog/early-access-builds-feb2024/index.md index 0a0cd71e2..704780259 100644 --- a/content/blog/early-access-builds-feb2024/index.md +++ b/content/blog/early-access-builds-feb2024/index.md @@ -92,8 +92,8 @@ Since we are now producing builds explicitly from the tags, this means that when a build is declared as a release candidate for an upcoming release, you can download a Temurin early access build corresponding to that version on each of our platforms. At the time of writing jdk-22+36 has been declared -release candidate 1 for the upcoming JDK22 release so using similar queries -to those referenced earlier it can be downloaded from: +release candidate 2 (jdk-22+35 was RC1) for the upcoming JDK22 release so +using similar queries to those referenced earlier it can be downloaded from: - https://api.adoptium.net/v3/binary/version/jdk-22+36-ea-beta/linux/aarch64/jdk/hotspot/normal/adoptium From 181b95389a38d64bfa0280ef82027afb821a1b15 Mon Sep 17 00:00:00 2001 From: Stewart X Addison Date: Tue, 20 Feb 2024 17:13:17 +0000 Subject: [PATCH 5/6] MOre updates following review Signed-off-by: Stewart X Addison --- content/blog/early-access-builds-feb2024/index.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/content/blog/early-access-builds-feb2024/index.md b/content/blog/early-access-builds-feb2024/index.md index 704780259..7f681823c 100644 --- a/content/blog/early-access-builds-feb2024/index.md +++ b/content/blog/early-access-builds-feb2024/index.md @@ -99,16 +99,17 @@ using similar queries to those referenced earlier it can be downloaded from: ## Why am I not seeing early access builds for the latest release? -There is one caveat for producing early access builds using this procedure. +There is one caveat for producing early access builds using this procedure. The process relies on the party maintaining the upstream version to perform the tagging in public. If those tags aren't visible in public, we have no way to build from an invisible tag. This usually happens for the time period when new major JDK versions get released and subsequent quarterly -security updates for those releases are being handled by Oracle. For -example between JDK `22` GA, `22.0.1` and `22.0.2` releases. There are no -public tags available for early access tags `jdk-22.0.1+1`, `jdk-22.0.1+2` -and so on. Should processes change some time in the future we'd of course -provide early access builds using the same process as for other releases. +security updates for those releases are being handled (usually by Oracle). +For example between JDK `22` GA, `22.0.1` and `22.0.2` releases. There are +no public tags available for early access tags `jdk-22.0.1+1`, +`jdk-22.0.1+2` and so on. Should processes change some time in the future +we'd of course provide early access builds using the same process as for +other releases. In the case of no publicly visible tags, however, we will revert to building regularly from the head of the repository. In these cases if you need to From dfb6b08d8a2470672e758910057fbb1dff000506 Mon Sep 17 00:00:00 2001 From: Stewart X Addison Date: Tue, 20 Feb 2024 17:24:01 +0000 Subject: [PATCH 6/6] Fix linter after I reformatted a paragraph which added a space after '.' Signed-off-by: Stewart X Addison --- content/blog/early-access-builds-feb2024/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/blog/early-access-builds-feb2024/index.md b/content/blog/early-access-builds-feb2024/index.md index 7f681823c..4b2851146 100644 --- a/content/blog/early-access-builds-feb2024/index.md +++ b/content/blog/early-access-builds-feb2024/index.md @@ -99,12 +99,12 @@ using similar queries to those referenced earlier it can be downloaded from: ## Why am I not seeing early access builds for the latest release? -There is one caveat for producing early access builds using this procedure. +There is one caveat for producing early access builds using this procedure. The process relies on the party maintaining the upstream version to perform the tagging in public. If those tags aren't visible in public, we have no way to build from an invisible tag. This usually happens for the time period when new major JDK versions get released and subsequent quarterly -security updates for those releases are being handled (usually by Oracle). +security updates for those releases are being handled (usually by Oracle). For example between JDK `22` GA, `22.0.1` and `22.0.2` releases. There are no public tags available for early access tags `jdk-22.0.1+1`, `jdk-22.0.1+2` and so on. Should processes change some time in the future