一 全局配置項設置
- 需要添加全局變量項,例如名稱docker,路徑/usr/local
- 添加一個jenkinsfile文件,用於運行docker命令
pipeline {
agent any
tools{
gradle "gradle"
}
stages {
stage('init') {
steps {
script{
def dockerPath = tool 'docker' //全局配置里的docker
env.PATH = "${dockerPath}/bin:${env.PATH}" //添加了系統環境變量上
}
}
}
stage('Build') {
steps {
script{
sh "docker --version"
}
}
}
}
}
注意:我們需要把docker的路徑添加到env環境變量里才可以使用docker命令,這個我試了很多次。
二 添加jenkins用戶到docker組
上面的操作完成之后,你的docker --version
是可以打印了,但還不能執行docker命令,還需要你把jenkins用戶添加到docker
用戶組里。
沒有添加用戶組會有這個錯誤提示
docker run --rm -v /Users/Shared/Jenkins/Home/workspace/helloJava:/src --user root --privileged=true alpine:3.6 sh -c 'cp /src/src/main/docker/Dockerfile /src/build/libs'
docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.39/containers/create: dial unix /var/run/docker.sock: connect: permission denied.
當前用戶添加到docker組
sudo gpasswd -a ${USER} docker
#或者將當前用戶直接加到文件中
sudo echo "docker:x:994:${USER}" >> /etc/group
#查看docker用戶組成員
cat /etc/group |grep docker
#重新啟動docker服務
sudo systemctl restart docker
# 賦予權限
sudo chmod a+rw /var/run/docker.sock
修改jenkins用戶的擁有者
sudo launchctl unload /Library/LaunchDaemons/org.jenkins-ci.plist
sudo vim /Library/LaunchDaemons/org.jenkins-ci.plist
sudo chown -R lind.zhang:docker /Users/Shared/Jenkins/
sudo chown -R lind.zhang:docker /var/log/jenkins/
啟動jenkins
sudo launchctl load /Library/LaunchDaemons/org.jenkins-ci.plist
大功告成
[Pipeline] script
[Pipeline] {
[Pipeline] sh
+ docker run alpine:3.6 /bin/echo hello
hello
[Pipeline] }
[Pipeline] // script
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS