我正在使用声明性Jenkins管道。 我是詹金斯的新手,所以我不明白。我不知道如何处理此错误,有人可以告诉我什么是构建最佳选择。
我有bash脚本,用于构建,标记和推送docker映像到存储库。 这是我的Jenkinsfile的一部分;
pipeline {
agent {
kubernetes {
label 'bmf-worker'
defaultContainer 'jnlp'
yaml """
apiVersion: v1
kind: Pod
metadata:
labels:
component: ci
spec:
# Use service account that can deploy to all namespaces
serviceAccountName: service-reader
containers:
- name: docker
image: docker
command:
- cat
tty: true
- name: kubectl
image: gcr.io/cloud-builders/kubectl
command:
- cat
tty: true
- name: gcloud
image: google/cloud-sdk
command:
- cat
tty: true
"""
}
}
stages {
stage('Code Checkout and Setup') {
steps {
echo 'Code Checkout and Setup'
}
}
stage('Build') {
parallel {
stage('Build') {
steps {
echo 'Start building Frontend and Backend Docker images'
}
}
stage('Build BMF Frontend') {
steps {
container('gcloud') {
echo 'Building Bmf Frontend Image'
sh 'chmod +x build.sh'
sh './build.sh --build_bmf_frontend'
}
}
}
stage('Tag BMF Frontend') {
steps {
container('gcloud') {
echo 'Building Bmf Frontend Image'
sh 'chmod +x build.sh'
sh './build.sh --tag_frontend'
}
}
}
stage('Build BMF Backend') {
steps {
container('gcloud') {
echo 'Buildinging Bmf Backend Images'
sh 'chmod +x build.sh'
sh './build.sh --build_bmf_backend'
}
}
}
stage('Tag BMF Backend') {
steps {
container('gcloud') {
echo 'Building Bmf Frontend Image'
sh 'chmod +x build.sh'
sh './build.sh --tag_frontend'
}
}
}
}
}
如何使用podTemplate执行我的步骤。在为阶段 Build BMF Backend 使用docker容器时,我遇到了这些错误;
使用在podTemplate中定义的gcloud容器;
time =“ 2019-03-12T13:40:56Z” level = error msg =“无法拨打gRPC:无法连接到Docker守护程序。'docker daemon'是否在此主机上运行?:拨打unix /var/run/docker.sock:连接:没有这样的文件或目录“
无法通过unix:///var/run/docker.sock连接到Docker守护程序。 docker守护程序正在运行吗?
以及如何标记docker图像,因为我需要docker标记和git,因为标记是短提交。使用docker时没有git。
我的Jenkins管理员在Google Cloud Kubernetes上。
有人可以向我解释执行作业的更好解决方案。
答案 0 :(得分:0)
您面临的第一个问题与Docker有关,而不与Jenkins有关。
Docker命令只能由root用户或docker
组中的用户运行。
如果您希望Jenkins用户能够执行Docker命令,则可以以root用户身份运行以下命令以将Jenkins添加到Docker组:
usermod -aG docker jenkins
This is documented in the Docker docs。
请注意,授予用户访问Docker的权限将有效地授予他们root权限,因此请谨慎添加到该组的用户。