Jenkins 빌드 단계에서 영원히 프로세스를 시작 하시겠습니까?


17

Jenkins 배포가 끝날 ​​때 쉘 명령을 실행하여 영구 스크립트를 다시 시작합니다.

npm install && forever stop app.js && forever start -a -l /var/log/forever.log app.js

사용자 젠킨스로 실행하면 모든 것이 잘 작동하고 빌드 기록의 콘솔 출력에서도 영원한 스크립트가 실행 중임을 알 수 있습니다. 그러나 배포가 완료되고 영구 프로세스가 중지 된 직후 프로세스가 중지됩니다.

이 동작의 원인은 무엇이고 어떻게 해결할 수 있습니까?

답변:


28

Jenkins는 작업에 의해 생성 된 모든 프로세스를 종료합니다.

BUILD_ID환경 변수를 다른 것으로 설정하여 비활성화 할 수 있습니다 .

export BUILD_ID=dontKillMe

자세한 내용은 https://wiki.jenkins-ci.org/display/JENKINS/ProcessTreeKiller 를 참조하십시오.


1
이것은 '깨끗한'방법입니까 아니면 다른 권장 사항입니까?
Patrick

내가 아는 한 ProcessTreeKiller를 비활성화하는 유일한 방법입니다
rcomblen

rcomblen이 올바른지 확인하십시오. wiki.jenkins-ci.org/display/JENKINS/ProcessTreeKiller
Jan Molak

이 전에 나는 얻고 있었다. [ssh-agent] 중지되었습니다. 신호 15에 의해 사망. 신호 15에 의해 사망.이 후 [ssh-agent]가 중지되었습니다. 그러나 그것은 여전히 ​​죽고 있습니다 :(
Amit Kumar Gupta

1

질문은 꽤 오래되었지만이 경우 더 나은 해결책이 있다고 생각합니다.

빌드 후 스크립트 플러그인 사용

플러그인 자체는 2016 년 초부터 업데이트되지 않지만 작업을 수행하므로 환경 변수를 사용하지 않아도됩니다. 조금 더 깔끔한 것 같습니다.


0

새 파이프 라인 작업에서 설정이 BUILD_ID더 이상 작동하지 않습니다. 대신 JENKINS_NODE_COOKIE작업이 완료 될 때 Jenkins가 프로세스를 종료하지 않도록 설정해야합니다 .

sh 'export JENKINS_NODE_COOKIE=dontKillMe'
sh 'myProcess'

또는 더 선택적으로 :

sh 'JENKINS_NODE_COOKIE=dontKillMe myProcess'

ProcessTreeKiller의 WikiJenkins Jira의이 주석을 참조하십시오 .


0

시도해보십시오 :

(
  set -e
  export BUILD_ID=dontKillMe
  export JENKINS_NODE_COOKIE=dontKillMe
  npm install
  forever stop app.js
  forever start -a -l /var/log/forever.log app.js &
) &
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.