From 7d9b614d9b76c93466728aa40c79eb3c06830800 Mon Sep 17 00:00:00 2001 From: "kihwan.song" Date: Tue, 14 Jul 2026 13:55:44 +0900 Subject: [PATCH] =?UTF-8?q?=EC=88=98=EB=8F=99=20=EC=9E=90=EB=B0=94=20?= =?UTF-8?q?=EC=84=A4=EC=B9=98=20=EC=8A=A4=ED=81=AC=EB=A6=BD=ED=8A=B8=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- setup-java/action.yml | 100 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 setup-java/action.yml diff --git a/setup-java/action.yml b/setup-java/action.yml new file mode 100644 index 0000000..26ea291 --- /dev/null +++ b/setup-java/action.yml @@ -0,0 +1,100 @@ +name: JDK 설정 +description: Adoptium Temurin JDK를 수동으로 설치하고 JAVA_HOME과 PATH를 설정 + +inputs: + distribution: + required: false + default: temurin + description: 설치할 JDK 배포판 (현재 temurin만 지원) + java-version: + required: false + default: "21" + description: 설치할 Java 메이저 버전 + architecture: + required: false + default: auto + description: 설치할 CPU 아키텍처 (auto, x64, aarch64) + +runs: + using: composite + steps: + - name: JDK 설정 + shell: bash + env: + JAVA_DISTRIBUTION: ${{ inputs.distribution }} + JAVA_VERSION: ${{ inputs.java-version }} + JAVA_ARCHITECTURE: ${{ inputs.architecture }} + run: | + set -euo pipefail + + if [ "$JAVA_DISTRIBUTION" != "temurin" ]; then + echo "지원하지 않는 JDK 배포판입니다: $JAVA_DISTRIBUTION" + echo "현재는 temurin만 지원합니다." + exit 1 + fi + + SUDO="" + [ "$(id -u)" -ne 0 ] && SUDO="sudo" + + install_packages() { + if command -v apt-get >/dev/null 2>&1; then + export DEBIAN_FRONTEND=noninteractive + $SUDO apt-get update + $SUDO apt-get install -y --no-install-recommends ca-certificates curl tar + elif command -v apk >/dev/null 2>&1; then + $SUDO apk add --no-cache ca-certificates curl tar + elif command -v yum >/dev/null 2>&1; then + $SUDO yum install -y ca-certificates curl tar + else + echo "지원하지 않는 러너입니다. ca-certificates, curl, tar를 설치할 수 없습니다." + exit 1 + fi + } + + for command_name in curl tar; do + if ! command -v "$command_name" >/dev/null 2>&1; then + install_packages + break + fi + done + + if [ "$JAVA_ARCHITECTURE" = "auto" ]; then + case "$(uname -m)" in + x86_64|amd64) JAVA_ARCHITECTURE="x64" ;; + aarch64|arm64) JAVA_ARCHITECTURE="aarch64" ;; + *) + echo "지원하지 않는 CPU 아키텍처입니다: $(uname -m)" + exit 1 + ;; + esac + fi + + case "$JAVA_ARCHITECTURE" in + x64|aarch64) ;; + *) + echo "지원하지 않는 architecture 입력값입니다: $JAVA_ARCHITECTURE" + echo "사용 가능: auto, x64, aarch64" + exit 1 + ;; + esac + + DOWNLOAD_URL="https://api.adoptium.net/v3/binary/latest/${JAVA_VERSION}/ga/linux/${JAVA_ARCHITECTURE}/jdk/hotspot/normal/eclipse" + INSTALL_ROOT="/opt/hostedtoolcache/manual-java" + INSTALL_DIR="${INSTALL_ROOT}/temurin-${JAVA_VERSION}-${JAVA_ARCHITECTURE}" + ARCHIVE_FILE="$(mktemp)" + + cleanup() { + rm -f "$ARCHIVE_FILE" + } + trap cleanup EXIT + + if [ ! -x "$INSTALL_DIR/bin/java" ]; then + $SUDO mkdir -p "$INSTALL_DIR" + curl --fail --location --show-error --silent "$DOWNLOAD_URL" --output "$ARCHIVE_FILE" + $SUDO tar -xzf "$ARCHIVE_FILE" --strip-components=1 -C "$INSTALL_DIR" + fi + + echo "JAVA_HOME=$INSTALL_DIR" >> "$GITHUB_ENV" + echo "$INSTALL_DIR/bin" >> "$GITHUB_PATH" + + "$INSTALL_DIR/bin/java" -version