본문 바로가기

Build/Jenkins

[Infrastructure/Jenkins] 파이프라인에서 "CreateProcess error=2, 지정된 파일을 찾을 수 없습니다" 오류

"CreateProcess error=2, 지정된 파일을 찾을 수 없습니다" 오류

젠킨스 서버의 파이프라인에서 sh 명령어를 사용하면 "지정된 파일을 찾을 수 없습니다" 오류가 발생하고 있습니다. 테스트 환경은 다음과 같습니다.

  • Windows 10 Pro x64
  • Jenkins 2.332.1 버전

파이프라인 실행 시 젠킨스 Console Output에서 출력되는 메시지입니다.

java.io.IOException: CreateProcess error=2, 지정된 파일을 찾을 수 없습니다
    at java.lang.ProcessImpl.create(Native Method)
    at java.lang.ProcessImpl.<init>(Unknown Source)
    at java.lang.ProcessImpl.start(Unknown Source)
    at java.lang.ProcessBuilder.start(Unknown Source)
... 중략 ...
Caused: java.io.IOException: Cannot run program "nohup" (in directory "C:\Program Files (x86)\Jenkins\workspace\TestBuild"): CreateProcess error=2, 지정된 파일을 찾을 수 없습니다
    at java.lang.ProcessBuilder.start(Unknown Source)
    at hudson.Proc$LocalProc.<init>(Proc.java:254)
    at hudson.Proc$LocalProc.<init>(Proc.java:223)

오류 재현 및 테스트를 위한 파이프라인 스크립트는 다음과 같습니다. sh 명령어를 사용하여 현재 디렉토리의 파일 목록을 출력하는 간단한 동작을 수행합니다.

pipeline {
    agent any
    stage('sh test') {
        steps {
            sh "dir"
        }
    }
}

문제 해결

먼저 Git 관련 시스템 변수가 추가되어 있어야 합니다.  제어판 > 시스템 및 보안 > 시스템 > 고급 시스템 설정 > 고급 > 환경 변수 > 시스템 변수에 입장합니다(윈도우 10 기준).

변수
Path C:\Program Files\Git\bin
Path C:\Program Files\Git\usr\bin

해당 깃 폴더에 대한 시스템 변수(Path)가 존재하지 않으면 추가합니다.

다음으로 젠킨스 서버를 재시작합니다(호스트 서버는 재시작 할 필요가 없습니다). 젠킨스 서버 재시작을 위해 웹 브라우저에서 다음 페이지에 접속합니다.

http://젠킨스 호스트:젠킨스 포트/restart

다시 젠킨스에 접속하여 파이프라인을 실행합니다. Console Output에서 다음과 같이 출력되면 정상입니다.

[Pipeline] sh
+ dir
Dockerfile   build	   gradle.properties  libs	       src
Dockerfiles  build.gradle  gradlew	      settings.gradle  tool
bin	     gradle	   gradlew.bat	      sql
... 생략