# 1. OpenJDK 17 풀 버전 설치
sudo apt update
sudo apt install -y openjdk-17-jdk
# 2. 설치 경로 확인
ls /usr/lib/jvm/
# 보통은 /usr/lib/jvm/java-17-openjdk-amd64 로 설치됨
sudo nano /etc/environment
PATH="/usr/lib/jvm/java-17-openjdk-amd64/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
JAVA_HOME="/usr/lib/jvm/java-17-openjdk-amd64"
# PATH 알아내는법
# ubuntu 기본 path 확인
env -i bash -c 'echo $PATH'
# 결과 예: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# Java bin 경로 확인
readlink -f $(which java)
# 결과 예: /usr/lib/jvm/java-17-openjdk-amd64/bin/java
source /etc/environment
3-1. ncloud 사용자 전용
nano ~/.bashrc
# Jenkins 및 Java 툴용
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
# CLASSPATH는 필요할 때만 사용
# export CLASSPATH=$JAVA_HOME/lib
source ~/.bashrc
3-2. jenkins 사용자 전용(이건 젠킨스 설치 후 jenkins 사용자 나오면 진행)
sudo -i -u jenkins bash
nano ~/.bashrc
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
source ~/.bashrc
exit # 다시 ncloud 계정으로 돌아오기
sudo nano /etc/systemd/system/jenkins.service
Environment="JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64"
Environment="PATH=/usr/lib/jvm/java-17-openjdk-amd64/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin"
sudo systemctl daemon-reload
sudo systemctl restart jenkins
sudo systemctl daemon-reload
sudo systemctl restart jenkins
sudo systemctl status jenkins -l "bad-setting" 메시지는 치명적인 오류가 아니라 systemd의 검증 단계에서 잡힌 경고에 불과하지만, restart 가 되지 않는다. 해당 부분은 java path 설정에 오류가 없는지 확인할것.echo $JAVA_HOME
java -version
javac -version
sudo -i -u jenkins bash
echo $JAVA_HOME
java -version
javac -version
exit
/usr/lib/jvm/java-17-openjdk-amd64
openjdk version "17.0.16"
javac 17.0.16
정상적으로 나오면 Jenkins 설치 준비 완료 ✅
#Jenkins 공식 GPG 키를 다운로드해서 저장
sudo wget -O /usr/share/keyrings/jenkins-keyring.asc \
https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key
#정상적으로 다운로드 되었는지 확인:
ls -l /usr/share/keyrings/jenkins-keyring.asc
#APT 소스 등록, /dev/null 로 출력 제거
echo "deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc]" \
https://pkg.jenkins.io/debian-stable binary/ | sudo tee \
/etc/apt/sources.list.d/jenkins.list> /dev/null
# APT 소스 등록확인
cat /etc/apt/sources.list.d/jenkins.list
# apt-get 업데이트 후 젠킨스 설치. 설치 과정에서 자동으로 jenkins 계정 생성됨. 설치가 끝나면 Jenkins 서비스 자동 시작
sudo apt-get update
sudo apt-get install jenkins
# 서버 설치 후 확인(상태가 active (running) 이어야 함)
sudo systemctl status jenkins
초기 관리자 비밀번호는 서버상에서 아래와 같이 확인
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
암호 입력
플러그인 수동 설치 필요한거 설치하고 나중에 추가해도됨
계정 비밀번호 생성
jenkins 관리 → credential 쪽으로

토큰 값을 유저쪽에서 발급받는 법으로 등록
repo 자체의 토큰을 써도 되는지는 모르겠음 → maintainer 만 발급가능
jenkins 관리에서 시스템설정하는 부분에서 gitlab 카테고리에서 사용 가능
gradle과 Node js 버전을 골라 추후 아이템에서 사용할수 있게 한다.


curl https://rclone.org/install.sh | sudo bash
rclone config
설정 과정:
n → 새 remote 추가
이름: ncp (원하는 이름 가능)
스토리지 종류: s3
Provider: Other
Access Key ID: (네이버 클라우드 Access Key)
Secret Access Key: (Secret Key)
Region: kr-standard
Endpoint: https://kr.object.ncloudstorage.com
Location Constraint: kr-standard
ACL: private
저장 후 q로 종료.
이 설정은 일반적으로 Jenkins에서는 다음 위치에 저장됩니다:
/var/lib/jenkins/.config/rclone/rclone.conf
#!/bin/bash
# rclone 명령어 실행
echo "파일 업로드 시작..."
rclone copy ./auth-fe/src/assets test:my-ncp-bucket-name/path/to/deploy --progress
# rclone 명령어의 종료 상태 코드 확인
if [ $? -eq 0 ]; then
echo "✅ 파일 업로드 성공!"
else
echo "❌ 파일 업로드 실패!"
exit 1 # 실패 시 종료
fi
/var/lib/jenkins/workspace/rtboard-stg/frontend/node_modules/vite/bin/vite.js:2
import { performance } from 'node:perf_hooks'
^
SyntaxError: Unexpected token {
at Module._compile (internal/modules/cjs/loader.js:723:23)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
at Module.load (internal/modules/cjs/loader.js:653:32)
at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
at Function.Module._load (internal/modules/cjs/loader.js:585:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)
at startup (internal/bootstrap/node.js:283:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:623:3)

Tools 에서 이렇게 설정해야함
버전이 낮아서 생기는 현상임
이렇게 하고
해당 job 에서 nodeJs를 myNodeJS로 바꿔주면 된다.
그리고 빌드가 다 됐는데 파일이 안옮겨짐 → permission denied
jenkins 권한 상승해주거나
sudo 권한 주면 됨
sudo usermod -aG sudo jenkins
sudo visudo
추가 : jenkins ALL=(ALL) NOPASSWD: ALL
backend 나 frontend 폴더에 권한을 부여
sudo chown -R jenkins:jenkins /path
CRITICAL: Failed to load config file /rclone.conf
permission denied
디렉토리의 읽기 권한이 부족할 때 발생
chmod 755 /home1/ncloud/.config/rclone # 디렉토리 권한
chmod 644 /home1/ncloud/.config/rclone/rclone.conf # 파일 권한
Source files: 젠킨스상에 있는 빌드된 파일(jar 등)
Remove prefix: 젠킨스 상에서 빌드된 파일의 경로를 배포대상에서 사용하지 않으므로 이설정으로 삭제
Remote directory: 배포 대상경로를 선택적으로 지정.
젠킨스 상의 jenkins 관리 > System > SSH Servers 에서 Remote Directory로 설정한 경로를 그대로 쓰려면 미설정해도 됨.
비워두거나 . 찍으면 되는데 젠킨스 버전에 따라 비우거나 .찍는게 권장되는게 다름
만약 채워넣으면 jenkins 관리쪽에서 설정한 path + 적어놓은 path가 됨.
Exec command: 배포 대상 서버에서 실행할 커맨드