文档首页/ 编译构建 CodeArts Build/ 最佳实践/ 使用Maven构建上传软件包和推送镜像到SWR(内置执行机/代码化构建)
更新时间:2024-10-09 GMT+08:00

使用Maven构建上传软件包和推送镜像到SWR(内置执行机/代码化构建)

应用场景

编译构建服务支持通过yaml文件配置构建脚本,用户可以将构建时需要配置的构建环境、构建参数、构建命令、构建步骤等操作,通过yaml语法编写成build.yml文件实现,并且将build.yml文件和被构建的代码一起存储到代码仓库。执行构建任务时,系统会以build.yml文件作为构建脚本执行构建任务,使构建过程可追溯、可还原,安全可信。本实践以使用Maven构建为例,为您演示上传软件包至软件发布库和推送镜像到SWR。

本实践需要依赖使用的其他服务如下:

  • SWR,即容器镜像服务。SWR镜像仓库用于存储用户上传的Docker镜像,可以在构建、部署或其他场景使用。
  • 代码托管服务,用于存储实践中项目所使用的代码。
  • 制品仓库服务,用于存储实践中使用的私有依赖包。

约束限制

  • 已在容器镜像服务中创建组织,组织名称为“codeci_gray”
  • 需已具备CodeArts Artifact服务的操作权限。
  • 需已具备CodeArts Repo服务的操作权限。
  • 代码化构建仅支持使用CodeArts Repo中的代码。

操作流程

表1 操作流程

流程

说明

新建项目

为本实践新建项目。

新建CodeArts Repo代码仓

为本实践新建Repo代码仓用于存储代码文件。

新建build.yml文件

通过“build.yml”定义整个构建的流程。

新建Dockerfile文件

通过修改Dockerfile文件实现自定义镜像。

新建编译构建任务

新建本实践的编译构建任务。

查看并验证构建结果

查看并验证构建结果。

新建项目

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

新建CodeArts Repo代码仓

  1. 在导航栏选择代码 > 代码托管
  2. 单击“新建仓库”,选择“模板仓库 ”,单击“下一步”
  3. 选择“Java Maven Demo”模板,单击“下一步”
  4. 在新建代码仓页面,“代码仓库名称”命名为“maven_yml_build”,其他参数保持默认即可。
  5. 单击“确定”,进入代码仓详情页。

新建build.yml文件

  1. 在代码仓详情页,单击新建 > 新建目录,如图1所示。

    图1 新建目录

  2. 在新建目录页面,根据表2填写参数信息,单击“确定”

    表2 新建目录

    参数

    说明

    目录名称

    填写目录名称,例如“.cloudbuild”。文件目录名称仅支持中文,英文字母,数字,单斜杠“/”,下划线“_”,中横线“-”和点“.”,字符长度范围为1~100。

    提交信息

    目录的备注信息,用于记录该文件夹文件的描述信息。字符长度范围1~2000。

  3. 单击2中新建的目录名称。
  4. 单击新建 > 新建文件,如图2所示。

    图2 新建文件

  5. 文件命名为“build.yml”,并将如下代码拷贝到文件中。

    # This YAML is the default template and can be modified based on this 
    ---
    version: 2.0
    steps:
      BUILD:
      - maven:
          image: cloudbuild@maven3.5.3-jdk8-open # 可以自定义镜像地址
          inputs:
            settings:
              public_repos:
                - https://mirrors.huawei.com/maven
            cache: true # 是否开启缓存
            command: mvn package -Dmaven.test.failure.ignore=true -U -e -X -B
      - upload_artifact:
          inputs:
            path: "**/target/*.?ar"
      - build_image:
          inputs:
            organization: codeci_gray # 组织名称
            image_name: maven_demo # 镜像名称
            image_tag: 1.0 # 镜像版本
            dockerfile_path: ./Dockerfile

  6. 单击“提交”

新建Dockerfile文件

  1. 在根目录下,参考4新建名为“Dockerfile”的文件。文件中代码如下:

    FROM swr.cn-north-5.myhuaweicloud.com/codeci/special_base_image:centos7-base-1.0.2
    MAINTAINER <devcloud@demo.com> 
    USER root 
    RUN mkdir /demo 
    COPY ./target/server-1.0.jar /demo/app.jar

    其中server-1.0.jar“pom.xml”文件中artifactIdpackagingversion的参数值组合。

  2. 单击“提交”

新建编译构建任务

  1. 在导航栏选择持续交付 > 编译构建
  2. 单击“新建任务”,根据表3填写参数信息。

    表3 基本信息配置

    参数

    说明

    任务名称

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

    代码源

    选择“Repo”

    代码仓

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

    默认分支

    保持默认“master”即可。

    任务描述

    对该构建任务的描述。

  3. 单击“下一步”,选择“空白构建模板”。单击“确定”,进入构建步骤配置页面。
  4. 单击“代码化”页签,可查看到导入的构建脚本,如图3所示。

    图3 代码化页签

  5. 单击页面右上角的“保存并执行”

查看并验证构建结果

  • 查看上传的软件包。
    1. 选择页面导航栏制品仓库 > 软件发布库
    2. 在软件发布库查看发布的软件包。软件包所在目录与新建编译构建任务时的任务名称一致,如图4所示。
      图4 查看软件包
  • 查看推送的镜像。
    1. 进入容器镜像服务SWR
    2. 单击导航栏“我的镜像”,在组织中筛选新建build.yml文件时代码中填写的“组织名称”,如:codeci_gray。
    3. 在筛选结果中单击新建build.yml文件时代码中填写的“镜像名称”,如:maven_demo。