Se sua plataforma CI/CD não possui uma tarefa dedicada de configuração do Temurin (como GitHub Actions), você pode usar a API do Adoptium para baixar, verificar e instalar o Eclipse Temurin diretamente. Este guia aborda o uso da API com scripts shell que funcionam em qualquer ambiente CI, incluindo Azure DevOps, GitLab CI, Jenkins, CircleCI e outros.
Visão Geral da API
A API do Adoptium fornece URLs estáveis para baixar binários do Temurin. O padrão geral de URL para baixar o último lançamento GA é:
https://api.adoptium.net/v3/binary/latest/{version}/ga/{os}/{arch}/{image_type}/hotspot/normal/eclipse
Onde:
-
{version}— Versão principal do Java (por exemplo,8,11,17,21,25) -
{os}— Sistema operacional:linux,windows,mac,alpine-linux,aix,solaris -
{arch}— Arquitetura:x64,aarch64,arm,ppc64le,s390x,riscv64 -
{image_type}—jdkoujre
Note
Nem todas as combinações estão disponíveis. A API retorna HTTP 404 se não existir
nenhum build para a combinação especificada.
Consultando Versões Disponíveis
Você pode descobrir quais versões estão disponíveis, incluindo o LTS atual:
# 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'
Baixando um Binário
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"
Verificando o Download
Os lançamentos do Eclipse Temurin incluem checksums SHA-256 e assinaturas GPG junto com cada binário. O projeto Adoptium recomenda fortemente verificar seu download em pipelines CI/CD para garantir integridade e autenticidade.
Verificação de Checksum SHA-256
O arquivo de checksum está disponível na mesma URL que o binário com .sha256.txt
acrescentado:
# Download and verify the checksum in one step
curl -Ls "${FETCH_URL}.sha256.txt" | sha256sum -c --status
echo "Checksum verified successfully"
Para PowerShell no 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"
Verificação de Assinatura GPG
Os lançamentos do Temurin são assinados com a chave GPG do Adoptium. O arquivo de
assinatura está disponível na URL do binário com .sig acrescentado:
# 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}"
Exemplo Completo de Script CI
Aqui está um script completo adequado para uso em qualquer pipeline CI/CD que baixa, verifica e instala o 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
Exemplos 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}"
}
}
