본문 바로가기

Infra/Server

Jenkins 빌드오류 : java.io.IOException: error=0, Failed to exec spawn helper: pid: {pid}, exit value: 1

반응형

 

어제 운영서버에서 잘 돌아가고 있는 서비스를 빌드배포를 했는데 갑자기 빌드에러가 떴다

java.io.IOException: error=0, Failed to exec spawn helper: pid: 520394, exit value: 1 
.
.
.

Also:   org.jenkinsci.plugins.workflow.actions.ErrorAction$ErrorId: 3b22021b-7a86-4e74-a92f-647df29aac39
Caused: java.io.IOException: Cannot run program "nohup" (in directory "{파일경로}"): error=0, Failed to exec spawn helper: pid: 520394, exit value: 1
.
.
.

위 에러 메세지는 nohup 명령어를 실행하는 동안 문제가 발생했다고 나타나는 메세지라고 한다 Jenkins가 nohup 명령어를 실행하기 위해 프로세스를 생성하려고 했지만 실패했다고 나오는 메세지임 젠킨스 구축 후 처음 만나보는 에러다보니 여러방면으로 찾아본 방법을 나열해보겠다.

탐색과정

1. nohup 명령어의 부재인지 확인

which nohup

nohup 이 설치되어있는지 확인

sudo apt-get install coreutils

nohup 이 설치되어 있지 않다면 위 명령어로 설치

2. 디렉토리 권한 확인

ls -ld {파일경로}

디렉토리의 권한을 확인

sudo chown -R jenkins:jenkins {파일경로}

디렉토리 소유 및 권한 변경

3. Jenkins 재시작

sudo systemctl restart jenkins

but!!

이렇게 진행해도 해결되지 않았다.. 왜냐면,

1. nohup 명령어는 이미 설치되어있었다.
2. 나는 supervisor를 이용하여 백그라운드 서비스 자동업을 진행중이었다.
3. 수퍼바이저를 재시동 해도 같은상황이었다
sudo supervisorctl status
sudo supervisorctl stop {서비스명}
sudo supervisorctl start {서비스명}

을 진행해도 똑같은 상황

4. Jenkins가 nohup 명령어를 실행할 권한이 있는지 확인. /usr/bin/nohup에 접근할 수 있는지 확인
sudo -u jenkins /usr/bin/nohup --version

Jenkins와 supervisor, 그리고 nohup에 관련한 부분만 시도해보다가 구글링에서 찾은 해결책이 있었다

해결할 수 있는 실마리!!

jenkins 커뮤니티에 올라온 글
StackOverflow 에서 찾은 글

위 링크를 참고하여

sudo nano /etc/default/jenkins

폴더에 접근하여

JAVA_ARGS="-Djava.awt.headless=true -Djdk.lang.Process.launchMechanism=vfork"

JAVA_ARGS 부분의 설정을 추가해주었다
우분투 기반이다보니 경로가 저렇고,
CentOs 기반이면

sudo nano /etc/sysconfig/jenkins

이 경로로 들어가면 된다

 

이후 젠킨스를 내렸다가 올리면 적용된다

 

그렇게 해결할 수 있었다.

반응형