当前位置: 首页 > 知识库问答 >
问题:

声明性詹金斯管道

娄学文
2023-03-14

我有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执行我的步骤。当我使用docker容器进行阶段构建BMF后端时,我有这些错误;

  1. 无法连接到UNIX:///var/run/Docker.sock上的Docker守护进程。docker守护进程正在运行吗?
  2. /home/jenkins/workspace/bmf/bmf-web@tmp/durable-c146e810/script.sh:line 1:./build.sh:not found

在PodTemplate中定义了gcloud容器;

>

  • time=“2019-03-12t13:40:56z”level=error msg=“未能拨号GRPC:无法连接到Docker守护进程。'Docker守护进程‘正在此主机上运行吗?:拨号unix/var/run/Docker。sock:connect:没有这样的文件或目录”

    无法连接到UNIX:///var/run/Docker.sock上的Docker守护进程。docker守护进程正在运行吗?

  • 共有1个答案

    孔欣荣
    2023-03-14

    你面临的第一个问题与Docker有关,而不是詹金斯。

    Docker命令只能由root用户或Docker组中的用户运行。

    如果您希望Jenkins用户能够执行Docker命令,那么您可以作为root用户运行以下命令,将Jenkins添加到Docker组:

     类似资料:
    • 问题内容: 我当前正在尝试触发现有作业,并在当前作业的工作区中接收生成的工件。 以下工作正常: 问题是,这确实需要最后一次成功的构建,这意味着如果其他一些用户设法比我更快地运行并行构建,那么我将采用他们的工件而不是我的工件。 根据此页面 ,应该有一种使用特定作业的方法: 但是,没有关于如何在声明式管道中使用它的解释或示例。 有什么提示吗? 在此先感谢您的帮助。 问题答案: 我找到了一个不错的解决方

    • 问题内容: 我想在声明性Jenkins管道内的锁内运行多个阶段: 我收到以下错误: 这是什么问题 该文档明确指出: 也可以用于将多个阶段包装到单个并发单元中 问题答案: 问题是,尽管事实上在2016年9月Beta版中提供了声明式管道,但您引用的博客文章(自10月起)记录的是脚本化管道,而不是声明式的(声明不多,所以我觉得您痛)。尚未将可锁定资源作为声明性管道步骤来使用,而该方式不能启用您正在寻找的

    • 问题内容: 已解决 :感谢S.Richmond的以下答复我需要取消所有类型的存储映射,这意味着将变量和使用后作废。 附加 :搜索此错误的人员可能有兴趣使用Jenkins管道步骤- 在此处查找更多信息。 我正在尝试使用Jenkins Pipeline从用户那里获取输入,该输入作为json字符串传递给作业。管道然后使用隔离器对此进行解析,然后选择重要信息。然后,它将使用该信息与不同的作业参数并行运行1

    • 下面是我简单的jenkins pipeline groovy脚本,它将用这两个阶段和我们想要构建的作业创建一个管道,我希望在job configuration下的脚本中每次都更新用于构建和代码分析的作业名,方法是从用户界面中获取数据,用户将使用Eclipse提供构建作业名和代码分析作业名- jenkinsfile脚本:-

    • 问题内容: 我们有几个Java项目。每个项目都有自己的交付管道。 所有管道都具有以下共同的步骤(简化): 建立项目 发布项目 部署到测试环境 部署到生产环境 项目管道仅在项目特定的属性(例如服务名称或测试和生产环境的IP地址)上有所不同。 问题是:我们如何避免所有项目都有共同之处?Jenkins的“管道作为代码”是否提供类似管道模板的内容? 我可以想象一个模板将在我们的项目管道中节省很多冗余代码/

    • 我们能比较詹金斯和声纳吗?如果是,怎么做。我想知道詹金斯和声纳的优缺点。比如为什么要使用声纳,它比詹金斯有什么优势,反之亦然?