Si votre plateforme CI/CD ne dispose pas d’une tâche dédiée à la configuration de Temurin (comme GitHub Actions), vous pouvez utiliser l’API Adoptium pour télécharger, vérifier et installer Eclipse Temurin directement. Ce guide couvre l’utilisation de l’API avec des scripts shell qui fonctionnent dans tout environnement CI, notamment Azure DevOps, GitLab CI, Jenkins, CircleCI et d’autres.
Vue d’ensemble de l’API
L’API Adoptium fournit des URL stables pour télécharger les binaires Temurin. Le schéma d’URL général pour télécharger la dernière version GA est :
https://api.adoptium.net/v3/binary/latest/{version}/ga/{os}/{arch}/{image_type}/hotspot/normal/eclipse
Où :
-
{version}— Version majeure Java (ex.8,11,17,21,25) -
{os}— Système d’exploitation :linux,windows,mac,alpine-linux,aix,solaris -
{arch}— Architecture :x64,aarch64,arm,ppc64le,s390x,riscv64 -
{image_type}—jdkoujre
Note
Toutes les combinaisons ne sont pas disponibles. L’API renvoie HTTP 404 si aucun build
n’existe pour la combinaison spécifiée.
Interrogation des versions disponibles
Vous pouvez découvrir quelles versions sont disponibles, y compris la LTS actuelle :
# Get the most recent LTS version
curl -s https://api.adoptium.net/v3/info/available_releases | jq '.most_recent_lts'
# List all available LTS releases
curl -s https://api.adoptium.net/v3/info/available_releases | jq '.available_lts_releases'
Téléchargement d’un binaire
Linux / macOS
#!/bin/bash
set -euo pipefail
JAVA_VERSION="25"
OS="linux"
ARCH="x64"
IMAGE_TYPE="jdk"
API_URL="https://api.adoptium.net/v3/binary/latest/${JAVA_VERSION}/ga/${OS}/${ARCH}/${IMAGE_TYPE}/hotspot/normal/eclipse"
# Download the binary (follows redirects)
FETCH_URL=$(curl -s -w %{redirect_url} "${API_URL}")
FILENAME=$(curl -OLs -w %{filename_effective} "${FETCH_URL}")
echo "Downloaded ${FILENAME}"
Windows (PowerShell)
$JavaVersion = "25"
$ApiUrl = "https://api.adoptium.net/v3/binary/latest/$JavaVersion/ga/windows/x64/jdk/hotspot/normal/eclipse"
$Response = Invoke-WebRequest -Uri $ApiUrl -MaximumRedirection 0 -ErrorAction SilentlyContinue
$DownloadUrl = $Response.Headers.Location
$FileName = [System.IO.Path]::GetFileName($DownloadUrl)
Invoke-WebRequest -Uri $DownloadUrl -OutFile $FileName
Write-Host "Downloaded $FileName"
Vérification du téléchargement
Les versions d’Eclipse Temurin incluent des sommes de contrôle SHA-256 et des signatures GPG aux côtés de chaque binaire. Le projet Adoptium recommande vivement de vérifier votre téléchargement dans les pipelines CI/CD pour garantir l’intégrité et l’authenticité.
Vérification de la somme de contrôle SHA-256
Le fichier de somme de contrôle est disponible à la même URL que le binaire avec .sha256.txt
ajouté :
# Download and verify the checksum in one step
curl -Ls "${FETCH_URL}.sha256.txt" | sha256sum -c --status
echo "Checksum verified successfully"
Pour PowerShell sous Windows :
# Download expected checksum
$ExpectedHash = (Invoke-WebRequest -Uri "$DownloadUrl.sha256.txt").Content.Split(" ")[0]
# Compute actual hash
$ActualHash = (Get-FileHash $FileName -Algorithm SHA256).Hash
if ($ExpectedHash -ne $ActualHash) {
Write-Error "Checksum verification failed!"
exit 1
}
Write-Host "Checksum verified successfully"
Vérification de la signature GPG
Les versions Temurin sont signées avec la clé GPG Adoptium. Le fichier de signature est
disponible à l’URL du binaire avec .sig ajouté :
# Import the Adoptium GPG public key
wget -qO - https://packages.adoptium.net/artifactory/api/gpg/key/public | gpg --import
# Download the signature file
curl -OLs "${FETCH_URL}.sig"
# Verify the signature
gpg --verify "${FILENAME}.sig" "${FILENAME}"
Exemple de script CI complet
Voici un script complet adapté à tout pipeline CI/CD qui télécharge, vérifie et installe Eclipse Temurin :
#!/bin/bash
set -euo pipefail
# Configuration
JAVA_VERSION="${JAVA_VERSION:-25}"
OS="${OS:-linux}"
ARCH="${ARCH:-x64}"
IMAGE_TYPE="${IMAGE_TYPE:-jdk}"
API_URL="https://api.adoptium.net/v3/binary/latest/${JAVA_VERSION}/ga/${OS}/${ARCH}/${IMAGE_TYPE}/hotspot/normal/eclipse"
echo "Downloading Eclipse Temurin ${JAVA_VERSION} (${OS}/${ARCH})..."
# Download the binary
FETCH_URL=$(curl -s -w %{redirect_url} "${API_URL}")
FILENAME=$(curl -OLs -w %{filename_effective} "${FETCH_URL}")
# Verify SHA-256 checksum
echo "Verifying checksum..."
curl -Ls "${FETCH_URL}.sha256.txt" | sha256sum -c --status
echo "Checksum OK"
# Extract and configure
INSTALL_DIR="/opt/java/${JAVA_VERSION}"
mkdir -p "${INSTALL_DIR}"
tar xzf "${FILENAME}" -C "${INSTALL_DIR}" --strip-components=1
# Set environment variables
export JAVA_HOME="${INSTALL_DIR}"
export PATH="${JAVA_HOME}/bin:${PATH}"
echo "Eclipse Temurin ${JAVA_VERSION} installed to ${JAVA_HOME}"
java -version
Exemples spécifiques aux plateformes
Azure DevOps
steps:
- script: |
JAVA_VERSION="25"
API_URL="https://api.adoptium.net/v3/binary/latest/${JAVA_VERSION}/ga/linux/x64/jdk/hotspot/normal/eclipse"
FETCH_URL=$(curl -s -w %{redirect_url} "${API_URL}")
FILENAME=$(curl -OLs -w %{filename_effective} "${FETCH_URL}")
curl -Ls "${FETCH_URL}.sha256.txt" | sha256sum -c --status
mkdir -p /opt/java && tar xzf "${FILENAME}" -C /opt/java --strip-components=1
echo "##vso[task.setvariable variable=JAVA_HOME]/opt/java"
echo "##vso[task.prependpath]/opt/java/bin"
displayName: 'Install Eclipse Temurin 25'
GitLab CI
install-temurin:
before_script:
- |
JAVA_VERSION="25"
API_URL="https://api.adoptium.net/v3/binary/latest/${JAVA_VERSION}/ga/linux/x64/jdk/hotspot/normal/eclipse"
FETCH_URL=$(curl -s -w %{redirect_url} "${API_URL}")
FILENAME=$(curl -OLs -w %{filename_effective} "${FETCH_URL}")
curl -Ls "${FETCH_URL}.sha256.txt" | sha256sum -c --status
tar xzf "${FILENAME}" -C /opt --strip-components=1
export JAVA_HOME=/opt
export PATH="${JAVA_HOME}/bin:${PATH}"
java -version
Jenkins (Pipeline scripté)
node {
stage('Install Temurin') {
sh '''
JAVA_VERSION="25"
API_URL="https://api.adoptium.net/v3/binary/latest/$JAVA_VERSION/ga/linux/x64/jdk/hotspot/normal/eclipse"
FETCH_URL=$(curl -s -w %{redirect_url} "$API_URL")
FILENAME=$(curl -OLs -w %{filename_effective} "$FETCH_URL")
curl -Ls "$FETCH_URL.sha256.txt" | sha256sum -c --status
tar xzf "$FILENAME" -C /opt --strip-components=1
'''
env.JAVA_HOME = '/opt'
env.PATH = "${env.JAVA_HOME}/bin:${env.PATH}"
}
}
