文档

基于FC结合SAE的自动化CICD实践

更新时间:

如果您没有持续交付流程,您可以参考本文快速搭建用于测试的持续交付环境,并通过执行docker push {image}命令就能免费将镜像部署到Serverless 应用引擎 SAE(Serverless App Engine)。如果您正在建设持续交付流程,也可以参考本文,自定义自动触发部署镜像到SAE的方案。

前提条件

  • 开通SAE产品,并部署一个镜像类型的应用。目前SAE支持部署所有技术栈的镜像,并针对其中的Java、PHP和Python技术栈,做了深度增强。具体操作,请参见在SAE控制台创建应用

  • 开通容器镜像服务,并创建一个命名空间以及镜像仓库。对于生产环境等场景,建议您采用私有的命名空间和镜像仓库,以确保您的代码不会泄露。具体操作,请参见构建仓库与镜像

  • 开通函数计算,并创建一个服务。阿里云函数计算FC(Function Compute)是事件驱动的全托管计算服务。使用函数计算,您无需采购与管理服务器等基础设施,只需编写并上传代码。具体操作,请参见管理服务

背景信息

本文以搭建一个简单的事件驱动的持续交付函数为例,全程无需编写一行代码,实现捕获镜像提交事件,并触发云函数,将镜像部署到SAE等操作,耗时不到10分钟。源代码的下载地址,请参见源代码

步骤一:创建部署应用的云函数DeployTrigger

创建函数

创建函数并为其配置环境变量与触发器信息。

  1. 登录函数计算控制台,在左侧导航栏,单击服务及函数
  2. 在顶部菜单栏,选择地域,然后在服务列表页面,单击目标服务操作列的函数管理
  3. 函数管理页面,单击创建函数
  4. 创建函数页面,选择使用内置运行时创建,配置以下信息。

    本文仅介绍关键配置项。更多信息,请参见管理函数

    分类

    配置项

    说明

    基本设置

    函数名称

    输入DeployTrigger

    请求处理程序类型

    选择处理 HTTP 请求

    函数代码

    运行环境

    选择Java 8

    代码上传方式

    源代码打成JAR包,选择通过 JAR 包上传代码

    环境变量

    使用表单编辑

    选择使用表单编辑,单击添加变量,添加环境变量键值对。fc_sc_add_enviroment_variable_v2

    • 变量:输入ACCESS_TOKEN

    • :输入函数访问鉴权的自定义Token。您可以使用uuidgen命令(oxs系统)或在互联网上寻找生成UUID的网页生成Token。

    触发器配置

    触发器类型

    默认选择HTTP触发器。

    名称

    自定义,例如输入LATEST

    请求方法

    选择POST。镜像服务的触发器发送的HTTP请求方式为POST。

    禁用公网访问 URL

    选择,即使用HTTP触发器的公网通过URL访问函数。

    认证方式

    选择无需认证,即设置为任何人都可以调用。

  5. 单击创建

    函数创建完成后,页面会跳转至函数详情页面。您可以单击触发器管理(URL)页签,在触发器列表的配置信息列,获取函数的访问地址。

    说明

    您可以直接使用函数计算提供的域名或配置自定义域名。更多信息,请参见计费概述配置自定义域名

修改角色配置

为RAM角色添加调用SAE产品的权限。

  1. 单击左上角的回退图标,在左侧导航栏,单击服务详情

  2. 服务详情页面的角色配置区域,单击编辑,在编辑服务页面的角色配置区域,单击创建角色并配置相关参数。image.png

  3. 跳转至RAM控制台,添加SAE产品的调用权限AliyunSAEFullAccess。具体操作,请参见授予函数计算访问其他云服务的权限

    如果您需要进一步精细化授权,您可以给角色授予部分需要部署的应用的修改权限。更多信息,请参见权限策略和示例

步骤二:创建镜像推送触发器

  1. 登录容器镜像服务控制台

  2. 在顶部菜单栏,选择所需地域。

  3. 实例列表页面,单击目标实例。

    本文以企业版实例为例进行操作。

  4. 在左侧导航栏,选择仓库管理 > 镜像仓库,在镜像仓库页面,单击目标镜像仓库。

  5. 在仓库的基本信息页面的左侧导航栏,单击触发器,在触发器页面左上角,单击创建

  6. 创建触发器对话框,输入名称触发器 URL,选择触发方式全部触发,单击确定

    重要

    触发器URL需包含三部分:

    • 函数的访问地址:在函数的触发器管理页签获取。

    • 鉴权的Token:在函数的函数配置页签的环境变量区域获取。

    • 需要部署的SAE应用ID:在应用的基本信息页面获取。

    创建触发器

步骤三:验证部署结果

本文以企业版容器镜像为例进行验证。更多信息,请参见以下文档:

  1. 执行以下命令,登录镜像仓库。

    docker login --username=<镜像仓库登录名> <企业版实例名称>-registry.<regionId>.cr.aliyuncs.com
  2. 推送镜像。

    1. 执行以下命令,查询镜像ID。

      docker images

      预期输出。示例如下:

      REPOSITORY                                         TAG                 IMAGE ID            CREATED             SIZE
      expresscart                                        latest              d6228399****        2 weeks ago         387 MB
    2. 执行以下命令,给镜像打标签。

      docker tag <镜像ID> <企业版实例名称>-registry.<regionId>.cr.aliyuncs.com/<命名空间的名称>/<镜像仓库的名称>:<镜像版本号>
    3. 执行以下命令,推送镜像至企业版实例。

      docker push <企业版实例名称>-registry.<regionId>.cr.aliyuncs.com/<命名空间的名称>/<镜像仓库的名称>:<镜像版本号>

      您可以观察到SAE应用会产生一条变更记录,推送的镜像1.9版本被重新部署到了SAE。系统显示如下结果。镜像推送

  3. 结果验证。

    登录SAE控制台,在变更记录页面查看变更详情,您可以看到系统重新部署了镜像1.9版本。

    SAE应用记录

关于Docker操作的更多信息,请参见Docker基本操作

  • 本页导读 (1)
文档反馈