文档首页/ 编译构建 CodeArts Build/ 最佳实践/ 基于Maven构建产物制作Docker镜像并发布到镜像仓(内置执行机/图形化构建)
更新时间:2024-11-21 GMT+08:00

基于Maven构建产物制作Docker镜像并发布到镜像仓(内置执行机/图形化构建)

应用场景

本实践为您介绍如何使用CodeArts Build将构建产物通过Dockerfile文件制作成Docker镜像,并发布到容器镜像服务的镜像仓库,您可以使用容器镜像中的构建产物进行编译或者部署。

约束限制

  • 已在容器镜像服务中创建组织,组织名称为“codeci_gray”
  • 需已具备CodeArts Repo服务的操作权限。

操作流程

表1 操作流程

流程

说明

新建项目

为本实践新建项目。

新建CodeArts Repo代码仓

为本实践创建构建过程中使用的代码文件。

新建构建任务

新建本实践中需要使用的构建任务并按照本实践场景配置任务并执行。

查看构建结果

查看本实践的构建结果,包括查看构建日志和结果文件。

新建项目

  1. 使用华为云账号登录华为云控制台页面
  2. 单击页面左上角,在服务列表中选择开发与运维 > 软件开发生产线 CodeArts
  3. 单击“立即使用”,进入CodeArts服务首页。
  4. 在首页单击“新建项目”,选用“Scrum”项目模板。
  5. 项目名称填写“build-bestpractice”,其他保持默认即可。
  6. 单击“确定”后,进入到“build-bestpractice”项目下。

新建CodeArts Repo代码仓

  1. 在页面导航栏选择代码 > 代码托管
  2. 单击“新建仓库”,选择“模板仓库”,单击“下一步”
  3. 选择“Java Maven Demo”模板,单击“下一步”
  4. 填写代码仓库名称为“build_docker_image_repo”,其他参数保持默认即可。单击“确定”,代码仓创建完成,跳转到代码仓详情页面。
  5. 在代码仓根目依次单击新建 > 新建文件

    图1 新建文件

  6. 文件名命名为“Dockerfile”,复制如下代码,粘贴到文件内容,如图3所示,单击“提交”

    FROM ubuntu:latest
    
    # set maintainer
    LABEL maintainer=build
    
    RUN mkdir /release_app 
    COPY ./target/javaMavenDemo-1.0.jar /release_app/maven_app.jar
    
    USER build

    其中“javaMavenDemo-1.0.jar”“pom.xml”文件里定义的“${artifactId}-${version}.${packaging}”,如图2所示。

    图2 pom.xml文件
    图3 Dockerfile文件内容

新建构建任务

  1. 在页面导航中选择持续交付 > 编译构建
  2. 单击“新建任务”,根据表2填写参数信息,单击“下一步”

    表2 基本信息配置

    参数

    说明

    任务名称

    自定义任务名称,例如:build_docker_image_task。

    代码源

    选择构建时拉取的代码源,这里选择“Repo”

    代码仓

    选择新建CodeArts Repo代码仓中新建的代码仓库名称“build_docker_image_repo”

    默认分支

    选择默认“master”即可。

  3. 选择“空白构建模板”,单击“确定”按钮,构建任务创建完成,自动跳转至构建步骤配置页面。
  4. “构建步骤”页签,单击“图形化”,单击左侧“点击添加构建步骤”,添加“Maven构建”,参数保持默认即可。
  5. 单击“添加步骤”,在右侧区域“容器类”页签中,单击“制作镜像并推送到SWR仓库”所在行的“添加”,按照图4配置参数。

    其中“组织”选择约束限制中创建的组织名称“hwstaff_codeci_gray”“镜像名称”输入“release_image”“镜像标签”输入“v1.0”,其他参数保持默认即可。
    图4 配置构建步骤

  6. 单击页面右上角“保存并执行”,在弹出的窗口中单击“确定”,自动跳转到构建任务执行页面。

查看构建结果

  1. “步骤日志”页签中,“构建日志”控制台会滚动打印构建任务执行日志信息。如图5所示,构建日志控制台打印了Maven构建产物信息。

    图5 Maven构建产物信息

  2. 待构建任务成功执行完成后,跳转到“容器镜像服务”控制台页面,单击“我的镜像”,单击“自有镜像”页签,单击5中制作的镜像名称“release_image”,即可查看镜像详情。

    图6 镜像列表页