1. Issue
Jenkins 빌드 후에 배포된 파일(jar)을 백그라운드로 실행 시 스크립트가 실행되지 않음
2. Problem
하나의 서버로 Jenkins 서버를 구축하고, 빌드 파일을 실행할 경우 Jenkins 계정으로 명령어를 실행하기 때문에 권한에 따른 오류가 발생한다. (원격 서버로 배포되면 ssh로 접속하기 때문에 발생하지 않는다.)
3. Solution
사용자 계정으로 명령어 or 스크립트를 실행한다.
3-1) Jenkins에 사용자 권한 부여
// 관리자 계정으로 변경 (이미 관리자 계정이면 상관 없음)
su - [관리자 계정]
// 쓰기 권한 부여
chmod 640 /etc/sudoers
// 수정
vi /etc/sudoers
- vi 편집기
jenkins ALL=(was) NOPASSWD: ALL
- jenkins에서 sudo 명령어 사용 시 권한을 사용자 계정(ex: was)으로 권한 상승, 암호를 묻지 않게 ALL로 설정
3-2) 파이프라인 코드 수정
스크립트를 사용자 계정(ex: was)으로 실행한다.
stage('RESTART') {
steps {
script {
try {
sh 'sudo -u was nohup /home/was/acadia/bin/startStudio.sh'
} catch (Exception e) {
echo "오류 발생: ${e.message}"
currentBuild.result = 'FAILURE'
}
}
}
}
반응형