Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

blog: early access builds for all releases #2676

Merged
merged 6 commits into from
Feb 21, 2024
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
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
119 changes: 119 additions & 0 deletions content/blog/early-access-builds-feb2024/index.md
Original file line number Diff line number Diff line change
@@ -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
sxa marked this conversation as resolved.
Show resolved Hide resolved
reports and reproduductions.
sxa marked this conversation as resolved.
Show resolved Hide resolved

## 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
sxa marked this conversation as resolved.
Show resolved Hide resolved
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:
sxa marked this conversation as resolved.
Show resolved Hide resolved

- 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.
5 changes: 5 additions & 0 deletions content/blog/early-access-builds/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Loading