阿里云的容器镜像构建服务支持从源代码到容器镜像的CI(自动集成)能力,其设定是基于Dockerfile文件的构建规则,自动触发镜像构建,然后运行Dockerfile执行构建,构建完成后自动提交镜像到容器镜像仓库。本文介绍如何设定容器镜像构建规则。

前提条件

已创建镜像仓库,具体操作,请参见 创建镜像仓库

背景信息

有关Dockerfile的详情,请参见Dockerfile

设置构建规则

  1. 登录容器镜像服务控制台
  2. 在顶部菜单栏,选择所需地域。
  3. 在左侧导航栏,选择实例列表
  4. 实例列表页面单击目标企业版实例。
  5. 在企业版实例管理页面左侧导航栏,选择仓库管理 > 镜像仓库
  6. 镜像仓库页面单击目标仓库右侧操作列中的管理
  7. 单击左侧导航栏中的构建,在构建规则设置区域单击添加规则,配置构建规则,然后单击确定
    参数 说明
    类型 设置源代码仓库的类型,可以是Branch或Tag。
    Branch/Tag 选择或者填写Branch/Tag,支持正则规则。当正则规则为release-(?<imageTag>\w*) 时,将识别release-v1源代码变更并自动构建版本为v1的镜像(不支持立即构建),更多信息,请参见正则表达式命名捕获组
    说明 设置正则规则后仅支持系统自动构建,不支持手动立即构建。
    Dockerfile目录 设置Dockerfile文件所在的目录。指的是相对目录,以代码分支的根目录为父目录。
    Dockerfile文件名 设置Dockerfile文件名,默认为Dockerfile。
    镜像版本 设置镜像Tag,例如latest。
    • 镜像版本:设置镜像Tag,例如latest。支持命名捕获,例如使用Branch/Tag中捕获的内容。
    • 时间:推送源代码的东八区(UTC+8)时间,有两种格式可供选择,例如20201015和202010151613。
      说明 该参数为可选项,当选中该参数后系统仅支持自动构建,不支持手动立即构建。
    • Commit ID:最近一次推送代码的Commit ID,默认取前6位,可以滑动下方的滑块设置位数。
      说明 该参数为可选项,当选中该参数后系统仅支持自动构建,不支持手动立即构建。

示例一:基于固定分支main构建镜像

本示例设置基于固定分支main构建镜像的构建规则,创建完构建规则后,支持手动立即构建镜像。

基于固定分支main构建镜像的规则参数配置示例如下:
  • 类型:Branch
  • Branch/Tag:main
  • Dockerfile目录:/
  • Dockerfile文件名:Dockerfile
  • 镜像版本:latest

当main分支上源代码变更或手动单击立即构建时,会触发镜像构建。构建的工作目录是/,文件为构建工作目录下名为Dockerfile的文件。镜像构建完成后生成的镜像版本为latest,构建规则如下图所示。

ex1

示例二:基于正则规则匹配分支构建镜像

本示例设置基于正则规则匹配分支构建镜像的构建规则,创建完构建规则后,不支持手动立即构建镜像。

基于正则规则匹配分支构建镜像的规则参数配置示例如下:
  • 类型:Branch
  • Branch/Tag:release-(?<imageTag>\w*)
  • Dockerfile目录:/
  • Dockerfile文件名:Dockerfile
  • 镜像版本:${imageTag}
  • 时间:yyyyMMddHHmm
  • Commit ID:30

当以release-开头的分支源代码变更时,会触发镜像构建。构建的工作目录是/,文件为构建工作目录下名为Dockerfile的文件。

release-v1的分支源代码变更为例,正则规则release-(?<imageTag>\w*)会将分支名中的v1捕获给变量imageTag,并在镜像版本中使用该变量。镜像构建完成后生成的镜像版本为v1-202010151625-d4ef3dc3b77a011a5779eec7efdd45,构建规则如下图所示。

ex2