![[GitHub Actions] Self-Hosted Runner JDK 업그레이드](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FPGkCu%2FbtsPeSD9I9c%2FAAAAAAAAAAAAAAAAAAAAAM8AfCAvtF3z59z7baVXSKPPF1b_CQ3Umb3bGYOMyH0x%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DLK4BOCckfS53zZmgIKUnS0z%252BxOg%253D)
[GitHub Actions] Self-Hosted Runner JDK 업그레이드서버 구축기2025. 7. 11. 00:09
Table of Contents
- 서버 환경 : ubuntu-server 24.04 LTS
기존 테무린 jdk 17을 사용하다가 테무린 JDK 21로 업그레이드를 하기로 결정했다.
# 시스템 업데이트 및 필요 패키지 설치
sudo apt update
sudo apt install -y wget apt-transport-https gnupg
# 올바른 방식으로 GPG 키 추가
wget -O - https://packages.adoptium.net/artifactory/api/gpg/key/public | sudo gpg --dearmor -o /usr/share/keyrings/adoptium-archive-keyring.gpg
# 시스템 코드명 자동 감지하여 저장소 추가
echo "deb [signed-by=/usr/share/keyrings/adoptium-archive-keyring.gpg] https://packages.adoptium.net/artifactory/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/adoptium.list > /dev/null
# 패키지 목록 업데이트
sudo apt update
# Temurin 21 JDK 설치
sudo apt install -y temurin-21-jdk
# 환경 변수 설정 파일 생성
sudo tee /etc/profile.d/jdk.sh > /dev/null << 'EOF'
#!/bin/sh
export JAVA_HOME=/usr/lib/jvm/temurin-21-jdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
EOF
# 실행 권한 부여
sudo chmod +x /etc/profile.d/jdk.sh
# 환경 변수 설정을 즉시 현재 셸 세션에 적용
source /etc/profile.d/jdk.sh
# 설치 확인
echo $JAVA_HOME
java --version
그런데 Self-Hosted Runner 를 사용하고나서 JDK를 업그레이드 하고나면 CI/CD 플로우가 깨진다.
이유는 Self-Hosted Runner는 기존 JDK를 사용하려고 하지만 이미 해당 JDK는 삭제했기 때문이다.
JAVA_HOME 환경 변수를 바꾼다고 해서 해결되는 것도 아니었다.
원인은 러너 디렉터리의 .path 파일에 하드코딩된 PATH 환경변수 때문이다.
이 파일은 GitHub Actions self-hosted runner가 실행될 때, run.sh 또는 runsvc.sh 내부에서 sourcing 되거나, node 프로세스에 환경 변수로 넘겨진다.
기존에는 아래와 같이 되어있는것을
/usr/lib/jvm/temurin-17-jdk-amd64/bin:/usr/lib/jvm/temurin-17-jdk-amd64/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/bin |
아래와 같이 바꾸었다.
/usr/lib/jvm/temurin-21-jdk-amd64/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin |
이렇게 하면 일단 문제 해결은 되었다.
스크립트를 이용해서 JDK 버전이 올라가면 자동화 할 수 있지만, JDK 업그레이드는 몇년에 한 번씩 드물게 진행되기 때문에 생략하기로 했다.
'서버 구축기' 카테고리의 다른 글
[GitHub Actions] Self-Hosted Runner (0) | 2025.01.09 |
---|---|
[Ubuntu] GeoIP 를 이용한 해외 IP SSH 접속 차단 (0) | 2025.01.02 |
[Nginx] Nginx 기본 보안 설정 (1) | 2024.12.28 |
[MySQL] MySQL 보안 설정 (1) | 2024.12.27 |
[Ubuntu] 외장 SSD ext4 초기화 + 마운트 (0) | 2024.12.26 |