adoptium / installer

Installer scripts for Eclipse Temurin binaries
Apache License 2.0
148 stars 75 forks source link

EPIC: Automate & Improve Production Of Linux Package Installers #1005

Open steelhead31 opened 3 days ago

steelhead31 commented 3 days ago

There are currently a number of issues when producing the Linux APKs, Debs & RPMs for the JDKs / JREs at the end of a release cycle:

Notably:

Proposal:

Ideally, the linux packages should be produced on a per version/architecture basis, and this should be done at the same time that the linux distribution tar balls are published to Github.

The new process, might be as follows:

When the release binaries are published to github via the jenkins refactor release tool :  

This will require the following tasks:

Advantages of this approach :

Improvement Items That Can Be Added:

steelhead31 commented 3 days ago

@gdams feel free to expand the above :)

jiekang commented 1 day ago

Another area to investigate is the need for distribution and version specific repositories for RPMs. As far as I'm aware, we are not building distribution-specific nor version specific artifacts and so we should also be able to publish them to a distribution and version agnostic repository.

For example, the JDK 23 RPM for AmazonLinux 2, Fedora 40 and Fedora 39 are the same file. And other products that provide yum repositories are agnostic:

Amazon Corretto: baseurl=https://yum.corretto.aws/$basearch

Microsoft VS Code: baseurl=https://packages.microsoft.com/yumrepos/vscode

Eclipse Temurin: baseurl=https://packages.adoptium.net/artifactory/rpm/${DISTRIBUTION_NAME:-$(. /etc/os-release; echo $ID)}/\$releasever/\$basearch

We can simplify the Eclipse Temurin structure to something like: https://packages.adoptium.net/artifactory/rpm/$basearch and have significantly less uploads of the same RPM to JFrog.

steelhead31 commented 11 hours ago

Currently prototyping a jenkins process based on the following logical flow..

1) The refactor open-jdk release job is triggered as part of the release pipeline (in dry run mode) ready to be rerun when a platform is ready to be pushed to the github binary repository.

2)  When the above process completes successfully, trigger the new "modular linux package build pipeline", passing through the current platform/arch specific parameters

3) Modular package builder checks if its a release pipeline, ( ie Release is TRUE ), if not exits and does nothing Prototype job is here: https://ci.adoptium.net/job/sfr-build-linux-package-modular/

4) If it is a release pipeline, AND dry run is FALSE ( ie binaries are being pushed to github ), then build the linux installer packages.

..... WILL Expand This As I define the process more thoroughly .....