文档首页/ 编译构建 CodeArts Build/ 快速入门/ 使用编译构建服务的Maven构建上传软件包和推送镜像(X86,预置镜像,代码化构建)
更新时间:2024-11-21 GMT+08:00

使用编译构建服务的Maven构建上传软件包和推送镜像(X86,预置镜像,代码化构建)

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

本节以使用Maven构建为例,演示基于X86服务器和预置镜像使用代码化构建方式,上传软件包至软件包发布库和制作镜像推送至SWR仓库。

前提条件

  • 已注册华为云并实名认证,如果还没有华为账号,请参考以下步骤创建。
    1. 打开华为云网站
    2. 单击“注册”,根据提示信息完成注册。

      注册成功后,系统会自动跳转至您的个人信息界面。

    3. 参考实名认证完成个人或企业账号实名认证。
  • 已开通CodeArts体验版套餐,如果还没有开通,可参考购买CodeArts套餐
  • 已在容器镜像服务中创建组织,如果没有组织,可参考创建组织

准备项目

  1. 使用华为云账号登录华为云控制台页面
  2. 单击页面左上角,在服务列表中选择开发与运维 > 编译构建 CodeArts Build
  3. 单击“立即使用”,进入编译构建服务首页。单击导航栏“首页”
  4. 单击“新建项目”,选用“Scrum”项目模板并将项目名称命名为“Scrum01”,其他参数保持默认即可,然后单击“确定”,进入到“Scrum01”项目下。

新建CodeArts Repo代码仓

  1. 在页面导航栏中选择代码 > 代码托管,进入代码托管页面。
  2. 单击“新建仓库”,选择“普通仓库”,单击“下一步”
  3. 根据表1填写参数后,单击“确定”

    表1 新建代码仓

    参数名称

    参数说明

    代码仓库名称

    自定义代码仓名称。例如:maven_yml_build。

    • 以数字、字母或者“_”开头。
    • 可包含“.”“-”
    • 不能以“.git”“.atom”或者“.”结尾。

    描述

    对代码仓的描述。字符长度范围为0~2000。

    选择gitignore

    根据编程语言选择“.gitignore”,例如:Java。

    初始化设置

    勾选全部。

    • 允许项目内人员访问仓库:选择后会自动将项目中的项目经理设为仓库管理员,开发人员设为仓库普通成员。当项目新增这两个角色时,也会自动同步到已经存在的仓库中。
    • 允许生成README文件:可以通过编辑README文件,记录项目的架构、编写目的等信息,相当于对整个仓库的一种注释。
    • 自动创建代码检查任务(免费):仓库创建完成后在代码检查任务列表中,可看到对应仓库的检查任务。

    可见范围

    设置为“私有”。仓库仅对仓库成员可见,仓库成员可访问仓库或者提交代码。

创建build.yml文件

  1. 在页面导航中选择代码 > 代码托管
  2. 单击新建CodeArts Repo代码仓中创建的代码仓名称。
  3. 单击新建 > 新建目录,如图1所示。

    图1 新建目录

  4. 根据表2填写参数信息,单击“确定”

    表2 新建目录

    参数名称

    参数说明

    目录名称

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

    提交信息

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

  5. 单击步骤4创建的目录名称。
  6. 单击新建 > 新建文件,如图2所示。

    图2 新建文件

  7. 文件命名为“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

  8. 单击“确定”

创建Java文件

  1. 参考4,创建名为“src/main/java”的目录。
  2. “src/main/java”的目录下,参考67,创建名为“HelloWorld.java”的文件。文件中代码如下:

    /**
     * Hello world
     *
     */
    
    public class HelloWorld {
    
      public static void main(String[] args) {
        System.out.println("Hello World!");
      }
    
    }

  3. 单击“确定”

创建Dockerfile文件

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

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

  2. 单击“确定”

创建pom.xml文件

  1. 在根目录下,参考67,创建名为“pom.xml”的文件。文件中代码如下:

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <groupId>com.huawei.demo</groupId>
      <artifactId>server</artifactId>
      <packaging>jar</packaging>
      <version>1.0</version>
      <name>server</name>
      <url>http://maven.apache.org</url>
      <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
      </dependencies>
    
    
      <build>
        <pluginManagement>
          <plugins>
            <plugin>  
              <groupId>org.apache.maven.plugins</groupId>  
              <artifactId>maven-jar-plugin</artifactId>  
              <version>2.6</version>  
              <configuration>  
                <archive>  
                  <manifest>  
                    <addClasspath>true</addClasspath>  
                  </manifest>  
                  <manifestEntries>  
                    <Main-Class>  
                      HelloWorld
                    </Main-Class>  
                  </manifestEntries>  
                </archive>  
              </configuration>  
            </plugin> 
          </plugins>
        </pluginManagement>
      </build>
    </project>

  2. 单击“确定”

创建编译构建任务

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

    表3 基本信息配置

    参数名称

    参数说明

    任务名称

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

    代码源

    选择“Repo”

    代码仓

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

    默认分支

    选择新建CodeArts Repo代码仓中创建的分支。选择默认“master”即可。

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

    图3 代码化页签

  5. 单击“保存并执行”,执行编译构建任务。

查看并验证构建结果

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