![](/img/trans.png)
[英]agent{} equivalent command in jenkins scripted pipeline to use docker container as slave agent
[英]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.