Si su plataforma de CI/CD no dispone de una tarea dedicada para la configuración de Temurin (como GitHub Actions), puede utilizar la API de Adoptium para descargar, verificar e instalar Eclipse Temurin directamente. Esta guía cubre el uso de la API con scripts de shell que funcionan en cualquier entorno de CI, incluyendo Azure DevOps, GitLab CI, Jenkins, CircleCI y otros.
Descripción general de la API
La API de Adoptium proporciona URLs estables para descargar binarios de Temurin. El patrón de URL general para descargar la última versión GA es:
https://api.adoptium.net/v3/binary/latest/{version}/ga/{os}/{arch}/{image_type}/hotspot/normal/eclipse
Donde:
-
{version}— Versión principal de Java (por ejemplo,8,11,17,21,25) -
{os}— Sistema operativo:linux,windows,mac,alpine-linux,aix,solaris -
{arch}— Arquitectura:x64,aarch64,arm,ppc64le,s390x,riscv64 -
{image_type}—jdkojre
Note
No todas las combinaciones están disponibles. La API devuelve HTTP 404 si no existe ninguna compilación
para la combinación especificada.
Consulta de versiones disponibles
Puede descubrir qué versiones están disponibles, incluyendo la LTS actual:
# 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'
Descarga de un binario
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"
Verificación de la descarga
Las versiones de Eclipse Temurin incluyen sumas de verificación SHA-256 y firmas GPG junto a cada binario. El proyecto Adoptium recomienda verificar su descarga en los pipelines de CI/CD para garantizar la integridad y autenticidad.
Verificación de suma de verificación SHA-256
El archivo de suma de verificación está disponible en la misma URL que el binario con .sha256.txt
añadido al final:
# Download and verify the checksum in one step
curl -Ls "${FETCH_URL}.sha256.txt" | sha256sum -c --status
echo "Checksum verified successfully"
Para PowerShell en 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"
Verificación de firma GPG
Las versiones de Temurin están firmadas con la clave GPG de Adoptium. El archivo de firma está
disponible en la URL del binario con .sig añadido al final:
# 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}"
Ejemplo completo de script de CI
A continuación se presenta un script completo adecuado para usar en cualquier pipeline de CI/CD que descarga, verifica e instala 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
Ejemplos específicos por plataforma
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 (Scripted Pipeline)
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}"
}
}
