更新时间:2024-11-12 GMT+08:00

自定义构建环境

CodeArts Build提供大量构建工具,如果已有工具不能满足您的使用要求,如缺少必要的依赖包、工具等,您可以根据需要,通过自定义Dockerfile文件的方式制作镜像并推送至指定的SWR仓库后使用,使用方法可参考使用自定义环境构建

本节以Maven构建为例,为您介绍如果通过修改Dockerfile文件自定义环境。

自定义构建环境前的准备工作

  • 已在容器镜像服务创建组织。组织的约束与限制参考容器镜像服务的约束与限制
  • 如果您制作后的镜像需要推送至华为云其他用户的SWR中,需执行以下操作。
    1. 通过项目入口方式访问CodeArts Build服务首页
    2. 在导航栏选择设置 > 通用设置 > 服务扩展点管理
    3. “新建服务扩展点”下拉框中选择“IAM账户”,在弹出的窗口中填写以下信息,单击“确定”
      • 连接名称:服务扩展点的名称,可自定义。支持中文、英文、数字、“-”、“_”、“.”、空格,不超过256个字符。
      • Access Key ID/Secret Access Key:表示一组密钥对,用于验证调用API发起请求的访问者身份,与密码的功能相似。

        在编译构建服务首页,单击“控制台”,然后将鼠标置于右上角用户名处,在下拉框中单击“我的凭证”,左侧导航栏中选择“访问密钥”可创建用户的密钥信息。

  • 如果您制作后的镜像需要推送至其他镜像仓库,需执行以下操作。
    1. 通过项目入口方式访问CodeArts Build服务首页
    2. 在导航栏选择设置 > 通用设置 > 服务扩展点管理
    3. “新建服务扩展点”下拉框中选择“Docker repository”,在弹出的窗口中填写以下信息,单击“确定”
      • 连接名称:服务扩展点的名称,可自定义。支持中文、英文、数字、“-”、“_”、“.”、空格,不超过256个字符。
      • 仓库地址:需要推送的镜像仓地址。
      • 用户名:登录仓库的用户名。
      • 密码:登录仓库的用户名密码。

自定义Dockerfile文件

  1. 通过项目入口方式访问CodeArts Build服务首页
  2. 在编译构建服务首页右上角单击“更多”,在下拉列表选择“自定义构建环境”。
  3. 进入自定义构建环境页面,选择合适的基础镜像,单击即可下载Dockerfile模板。
    图1 Dockerfile模板
  4. 编辑下载的Dockerfile文件。
    可根据需要加入项目需要的其他依赖和工具,完成Dockerfile文件自定义,如下为添加了jdk和maven工具的示例。
    RUN yum install -y java-1.8.0-openjdk.x86_64
    RUN yum install -y maven
    RUN echo 'hello world!'
    RUN yum clean all
  5. 在导航栏选择代码 > 代码托管,单击使用的代码仓名称,进入代码仓详情页。
  6. “代码”页签,选择新建 > 上传文件,将Dockerfile文件以及制作镜像过程中需要的所有文件上传到代码仓库根目录。

制作镜像并推送到SWR仓库

  • 图形化构建

    配置构建步骤中,“Maven构建”步骤后添加“制作镜像并推送到SWR仓库”构建步骤。

    “Maven构建”构建步骤参数保持默认即可,如当前参数配置不满足使用要求,可参考使用Maven构建修改参数配置。“制作镜像并推送到SWR仓库”构建步骤参数配置说明如表1

    表1 制作镜像并推送到SWR仓库参数说明

    参数

    说明

    步骤显示名称

    构建步骤的名称,可自定义修改。

    • 支持中文、英文、数字、“-”“_”、英文逗号、英文分号、英文冒号、“.”“/”、圆括号(中英文)。
    • 字符长度范围为1~128。

    工具版本

    选择使用的Docker版本,使用默认版本即可。

    当前编译构建服务支持Docker18.03和Docker20.10版本。

    镜像仓库

    选择需要推送的镜像仓库。支持推送至华为云镜像仓库SWR和其他镜像仓库,根据实际情况选择即可。

    授权用户

    推送的镜像仓库的所属用户。支持推送至当前用户和其他用户。

    需确保用户对组织内所有镜像具有编辑或管理权限,详见授权管理

    IAM账号

    在下拉框中选择自定义构建环境前的准备工作中创建的“IAM账户”服务扩展点,通过服务扩展点推送至其他用户的SWR中。

    “授权用户”选择“其他用户”时需要配置该参数。

    推送区域

    选择需要推送的区域。镜像制作成功后,会将镜像依次推送到选中区域的SWR仓库。

    镜像仓接入点

    选择自定义构建环境前的准备工作中创建的“Docker repository”服务扩展点,通过服务扩展点推送至其他镜像仓库。

    组织

    在下拉框中选择自定义构建环境前的准备工作中创建好的组织名,选择镜像推送到SWR后所属的组织。

    镜像名字

    自定义填写制作完成后的镜像名称。

    需以数字或字母开头,仅支持小写字母、数字、“_”“-”,字符长度为1~255。

    镜像标签

    用来标记镜像的版本,可自定义。通过“镜像名:标签”可以唯一指定镜像。

    仅支持大小写字母、数字、“.”“_”“-”,不可以“.”“-”开头,字符长度为1~128。

    工作目录

    可选参数。

    填写docker build命令中的“上下文路径”参数,该路径是代码仓库根目录的相对路径。

    上下文路径,指的是docker在构建镜像时,docker build命令将该路径下的所有内容打包给容器引擎,帮助构建镜像。

    Dockerfile路径

    可选参数。

    Dockerfile文件所在路径,请填写相对于工作目录的路径,如:工作目录为根目录, 且Dockerfile文件在根目录下,则此处填写为“./Dockerfile”

    添加构建元数据到镜像

    配置是否将本次构建信息添加到镜像中,镜像制作完成后可以通过docker inspect命令查看镜像元数据。

    失败后是否继续运行

    当前步骤执行失败后是否继续执行下一个步骤,根据实际使用场景选择是或否。

  • 代码化构建

    参考以下代码示例,修改在创建代码化构建使用的YAML文件中的BUILD部分代码信息。

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    version: 2.0 # 必须是2.0
    steps:
      BUILD:
        - build_image:
            name: buildImage
            inputs:
              regions: ["x-x-x", "x-x-xxx"]
              organization: codeci_test
              image_name: demo
              image_tag: ${GIT_COMMIT}
              dockerfile_path: dockerfile/Dockerfile
              # set_meta_data: true
              ignore_fail: true
    
    表2 制作镜像并推送到SWR仓库代码示例参数说明

    参数

    类型

    说明

    regions

    list

    可选参数。

    选择要上传的区域SWR。默认上传到当前任务所在region的SWR。如果配置多个region,镜像制作成功后,会将镜像依次推送到填写region的SWR仓库中。

    organization

    string

    配置镜像推送到SWR后所属的组织名称。组织名称为自定义构建环境前的准备工作中创建好的组织名。

    image_name

    string

    可选参数。

    自定义填写制作完成后的镜像名称。

    需以数字或字母开头,仅支持小写字母、数字、“_”“-”,字符长度为1~255。

    默认值:demo。

    image_tag

    string

    可选参数。

    用来标记镜像的版本,可自定义。通过“镜像名:标签”可以唯一指定镜像。

    仅支持大小写字母、数字、“.”“_”“-”,不可以“.”“-”开头,字符长度为1~128。

    默认值:v1.1。

    context_path

    string

    可选参数。

    填写docker build命令中的“上下文路径”参数,该路径是代码仓库根目录的相对路径。

    上下文路径,指的是docker在构建镜像时,docker build命令将该路径下的所有内容打包给容器引擎,帮助构建镜像。

    默认值:.。

    dockerfile_path

    string

    可选参数。

    Dockerfile文件所在路径,请填写相对于工作目录的路径,如:工作目录为根目录, 且Dockerfile文件在根目录下,则此处填写为“./Dockerfile”

    默认值:./Dockerfile。

    set_meta_data

    bool

    可选参数。

    配置是否将本次构建信息添加到镜像中,镜像制作完成后可以通过docker inspect命令查看镜像元数据。

    • true:添加。
    • false:不添加。

    默认值:false。

    ignore_fail

    string

    用于控制当前步骤执行失败后是否继续执行下一个步骤。
    • true:是。
    • 为空:否。