将已有的函数计算工程通过应用中心部署实现持续部署

如果您已经在函数计算部署了服务和函数,每次更新代码和配置并手动发布存在既繁琐又容易出错的风险。为了提升发布的体验,降低人工操作引入的风险,您可以通过应用中心对已有的函数计算工程进行部署,从而获取持续部署的能力。应用中心提供了可自定义的流水线能力,通过引入可编程的自动化构建发布能力以及人工审批确认能力,帮助您在云上构建并部署工程。

前提条件

  • 已完成服务与函数的部署,具体操作请参见创建函数

    本文以Node.js应用为例介绍通过应用中心部署的操作步骤。

  • 函数代码通过Git管理。

    应用中心已经适配了GitHub、Gitee、Codeup以及自建的GitLab等多种常见场景。本文示例中的函数代码使用GitHub管理。

步骤一:整理构建命令并确认构建工具版本

整理构建命令

应用中心提供了构建函数所需要的执行环境,但是并没有实现自适应的构建与打包能力。和在本地执行一样,用户在云上执行同样的构建与打包命令即可,其中Windows环境与云上Linux环境不一致,构建方式会有区别。关于如何正确开发和构建函数,可以参考不同运行环境提供的部署代码包,具体见代码开发概述

本文以Node.js为例,您需要在本地执行的构建命令示例如下。请根据实际的函数代码整理对应的构建命令,该构建命令会在应用中心配置流水线时使用。

# 使用npm工具构建,一般为install命令,有自定义的功能也可以加入
# 只要能满足构建的需求就行
npm install ./code -production --registry=https://registry.npmmirror.com
# 使用zip命令进行打包。s工具也支持自动zip。
# 如果要避免将预期外的内容打包,我们推荐zip命令。
# 这里将代码包打包,压缩包位于根目录,也可以放置在其他位置。
zip code.zip -r ./code/*

确认构建工具版本

应用中心在构建环境中集成了多个版本的构建工具,您可以按需切换。本文使用的是Node.js 16版本,该构建工具版本会在应用中心配置流水线时使用。

步骤二:准备s.yaml文件

使用s.yaml配置文件可以全量定义服务与函数,推荐您在代码仓库中放置s.yaml文件,并使用Serverless Devs工具进行部署。

对于已经部署在函数计算的存量函数,准备s.yaml文件的步骤如下:

  1. 登录函数计算控制台,在左侧导航栏,单击函数

  2. 在顶部菜单栏,选择地域,然后在函数页面,单击目标函数。

  3. 函数详情页面,选择导出函数 > 导出配置,在导出配置弹出框单击确定,将s.yaml文件下载到本地。

  4. 修改s.yaml文件,将修改后的s.yaml文件放在根目录,然后提交到函数代码的Git仓库中。

    下载到本地的s.yaml文件内容如下图所示,需要修改的内容为:

    1. 移除access: '{{ access }}'这一行内容。

    2. 修改codeUri为真实的构建产物的路径,例如./code.zip。构建产物的路径请参见整理构建命令

    image.png

如果需要描述多个服务与函数,需要分别导出对应的s.yaml文件后,将文件进行合理拼装。关于s.yaml文件的规范以及如何声明多个函数,请参见YAML规范和权限管理

步骤三:在应用中心创建应用

  1. 在左侧导航栏,单击应用,然后在应用页面单击创建应用

  2. 创建应用页面,选择通过仓库导入应用,选择仓库类型为GitHub,配置目标仓库的相关信息。

    如果您的账户未授权给应用中心,可根据界面提示登录GitHub控制台授权给应用中心。

  3. 环境配置区域,本文示例配置的方案如下。

    • 流水线配置方案自定义配置

    • 应用部署触发方式Push到指定分支触发

    • 流水线执行环境选择默认执行环境

  4. 配置完成后,单击创建并部署默认环境,完成应用的创建。

步骤四:在应用中心配置流水线

创建的应用首次部署可能会失败,需要修改流水线的构建与部署任务,让应用中心可以正确构建。关于流水线的概念以及使用说明,请参见相关概念管理流水线

在应用的环境详情页面,选择流水线管理页签,在流水线详情区域修改YAML文件,修改完成后单击保存。本文修改的内容示例如下。

image.png

步骤五:通过Git Push验证是否可以持续部署

将修改后的代码推送到代码仓库的master分支,就可以触发流水线,并自动部署到函数计算。

  • 您可以在流水线管理页签下的流水线执行历史区域查看具体的执行详情。

    image.png

  • 您可以通过应用中心部署的函数资源单击查看函数代码的更新情况。

    说明

    不支持在线编辑的代码不能查看函数代码的更新情况。

    环境详情页签下的资源信息区域,单击对应的函数,进入函数详情页面,单击函数代码即可查看通过Git Push的代码已更新。

相关文档