Java Jenkins管道:在docker容器中构建docker

Java Jenkins管道:在docker容器中构建docker,java,spring-boot,docker,maven,jenkins,Java,Spring Boot,Docker,Maven,Jenkins,我试着做以下几点 签出代码 使用其他docker映像进行一些预检查(不想在Jenkins节点上安装这些映像) 使用docker镜像构建jarmaven:3.6-jdk-8 然后运行Dockerfile构建应用程序映像 将映像推送到存储库 现在,除了Docker,我不想在Jenkins节点上安装任何东西。我想在Docker容器中运行完整的管道来实现这一点。我正在努力的是如何从容器中构建第四步 我写了Jenkins文件如下 pipeline { agent none st

我试着做以下几点

  • 签出代码
  • 使用其他docker映像进行一些预检查(不想在Jenkins节点上安装这些映像)
  • 使用docker镜像构建jar
    maven:3.6-jdk-8
  • 然后运行
    Dockerfile
    构建应用程序映像
  • 将映像推送到存储库
  • 现在,除了Docker,我不想在Jenkins节点上安装任何东西。我想在Docker容器中运行完整的管道来实现这一点。我正在努力的是如何从容器中构建第四步

    我写了Jenkins文件如下

    pipeline {
    
        agent none
        
        stages {
            stage('Maven build') {
                agent {
                    docker {
                        image 'maven:3.6-jdk-8'
                        args '-u root:root'
                    }
                }
                steps {
                    checkout(
                        [
                            $class: 'GitSCM',
                            branches: [
                                [name: '*/master']
                            ],
                            doGenerateSubmoduleConfigurations: false, 
                            extensions: [], 
                            submoduleCfg: [], 
                            userRemoteConfigs: [
                                [
                                    credentialsId: '<cred-id>',
                                    url: '<github-url>']
                                ]
                            ])
                            
                    sh '''
                        set -eux pipefail
    
                        mvn -e clean install
                    '''
                }
            }
            stage('Build docker image') {
                 // Which docker image to use?
            }
        }
    }
    
    管道{
    一号特工
    舞台{
    阶段(“Maven构建”){
    代理人{
    码头工人{
    图片“maven:3.6-jdk-8”
    args'-u根:根'
    }
    }
    台阶{
    结帐(
    [
    $class:'GitSCM',
    分支机构:[
    [名称:'*/master']
    ],
    DoGenerateSubModuleConfiguration:false,
    扩展:[],
    子模块cfg:[],
    userRemoteConfigs:[
    [
    凭证ID:“”,
    url:'']
    ]
    ])
    “嘘”
    设置-eux管道失败
    mvn-e清洁安装
    '''
    }
    }
    阶段('构建docker映像'){
    //要使用哪个docker图像?
    }
    }
    }
    

    但我不知道如何在容器中构建docker映像。搜索没有起到多大作用。我尝试使用Jenkins节点来构建docker图像,但似乎无法混合匹配。我完全理解这是一个相当开放的问题,但我认为知道直截了当的答案会很有帮助。

    看看这个Jenkins插件: