2017-02-23 1 views
1

나는 아래의 파이프 라인을 실행하려고,이 오류와 함께 실패 (docker run -t -d -u 108 : 113 ....) 파일 시스템 권한을 유지하기 위해 jenkins 사용자의 userid하지만 어떻게 git을 사용할 수 있습니까?를 사용하여 자식은

pipeline { 
agent none 
stages { 

... 

    stage('Build Code') { 
     agent { 
      docker { 
       image 'xxx.de/go_build_container' 
       args '-v=$WORKSPACE:/go/src/bitbucket.org/xxx/service_donation' 
      } 
     } 
     environment { 
      HOME = "." 
     } 
     steps { 
      sh 'cd /go/src/bitbucket.org/xxx/service_donation && go get github.com/gorilla/websocket' 

     } 
    } 

답변

3

/etc/passwd에없는 사용자 ID로 실행하면 많은 프로그램이 작동하지 않고 git이 해당 프로그램 중 하나입니다.

도커 컨테이너에 올바른 -u 인수를 지정해야합니다. 즉, xxx.de/go_build_container 이미지에 존재하는 루트 (또는 0 : 0) 중 하나 인 인수를 지정해야합니다. 다음과 같이 입력하십시오 : args '-v=$WORKSPACE:/go/src/bitbucket.org/xxx/service_donation -u 0:0' 그리고 작동합니다.

그런 다음 볼륨에 생성 된 파일이 컨테이너에서 사용하는 UID에 속하게되므로 나중에 파이프 라인에서 해당 파일을 다시 사용하려면 chown을 추가해야 할 수도 있습니다.

+0

감사합니다. 제게 많은 도움이됩니다. –

1

또 다른 옵션은/etc/passwd를 컨테이너에 마운트하는 것입니다. 그 어떤 다른 문제가있는 경우

 agent { 
      docker { 
       image 'xxxx' 
       args '-v=/etc/passwd:/etc/passwd' 
      } 
     } 

나는, 확실하지 않다 그러나 작동하는 것 같다 당신이 잘못된 권한으로 문제가 없습니다.