簡體   English   中英

在Docker Agent的jenkins管道中使用git

[英]Use git in jenkins pipeline with docker agent

當我嘗試運行以下管道時,它失敗並顯示以下錯誤:

克隆到'/go/src/github.com/gorilla/websocket'...

致命:無法在passwd文件中查找當前用戶:無此用戶

軟件包github.com/gorilla/websocket:退出狀態128

據我了解,問題是,jenkins使用jenkins用戶的用戶名啟動容器,以保持文件系統權限正確(docker run -t -d -u 108:113 ....),但是如何那我用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'

        }
    }

當使用/ etc / passwd中不存在的用戶ID運行許多程序時,它們將不起作用,而git是其中之一。

您必須為xxx.de/go_build_container容器指定正確的-u參數,即存在於xxx.de/go_build_container映像中的參數,其中根(或0:0)是其中之一。 因此,輸入如下內容: args '-v=$WORKSPACE:/go/src/bitbucket.org/xxx/service_donation -u 0:0'

然后,您將面臨另一個問題:在卷中創建的文件將屬於您在容器中使用的UID,如果要稍后在管道中重用這些文件,則可能需要添加一些chown

我發現的另一個選擇是將/ etc / passwd安裝到容器。

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

我不確定,是否還有其他問題,但似乎可以解決,並且您沒有權限錯誤的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM