将已有的函数计算工程托管至Serverless开发平台实现持续部署
如果您已经在函数计算部署了函数,每次更新代码和配置并手动发布存在既繁琐又容易出错的风险。为了提升发布的体验,降低人工操作引入的风险,您可以通过Serverless开发平台对已有的函数计算工程进行部署,从而获取持续部署的能力。Serverless开发平台提供了可自定义的流水线能力,通过引入可编程的自动化构建发布能力以及人工审批确认能力,帮助您在云上构建并部署工程。
前提条件
已完成函数的部署,具体操作请参见创建函数。
本文以Node.js应用为例介绍通过Serverless开发平台部署的操作步骤。
函数代码通过Git管理。
Serverless开发平台已经适配了GitHub、Gitee、Codeup以及自建的GitLab等多种常见场景。本文示例中的函数代码使用GitHub管理。
步骤一:整理构建命令并确认构建工具版本
整理构建命令
Serverless开发平台提供了构建函数所需要的执行环境,但是并没有实现自适应的构建与打包能力。和在本地执行一样,用户在云上执行同样的构建与打包命令即可,其中Windows环境与云上Linux环境不一致,构建方式会有区别。关于如何正确开发和构建函数,可以参考不同运行环境提供的部署代码包,具体见代码开发概述。
本文以Node.js为例,您需要在本地执行的构建命令示例如下。请根据实际的函数代码整理对应的构建命令,该构建命令会在Serverless开发平台配置流水线时使用。
# 使用npm工具构建,一般为install命令,有自定义的功能也可以加入
# 只要能满足构建的需求就行
npm install ./code -production --registry=https://registry.npmmirror.com
# 使用zip命令进行打包。s工具也支持自动zip。
# 如果要避免将预期外的内容打包,我们推荐zip命令。
# 这里将代码包打包,压缩包位于根目录,也可以放置在其他位置。
zip code.zip -r ./code/*
确认构建工具版本
Serverless开发平台在构建环境中集成了多个版本的构建工具,您可以按需切换。本文使用的是Node.js 16版本,该构建工具版本会在Serverless开发平台配置流水线时使用。
步骤二:准备s.yaml文件
使用s.yaml配置文件可以全量定义函数,推荐您在代码仓库中放置s.yaml文件,并使用Serverless Devs工具进行部署。
对于已经部署在函数计算的存量函数,准备s.yaml文件的步骤如下:
登录函数计算控制台,在左侧导航栏,单击函数。
在顶部菜单栏,选择地域,然后在函数页面,单击目标函数。
在函数详情页面,选择
,在弹出的导出函数配置对话框中单击确定,将s.yaml文件下载到本地。修改s.yaml文件,将修改后的s.yaml文件放在根目录,然后提交到函数代码的Git仓库中。
下载到本地的s.yaml文件内容如下图所示,需要修改的内容为:
移除
access: '{{ access }}'
这一行内容。修改
codeUri
为真实的构建产物的路径,例如./code.zip
。构建产物的路径请参见整理构建命令。
如果需要描述多个函数,需要分别导出对应的s.yaml文件后,将文件进行合理拼装。关于s.yaml文件的规范以及如何声明多个函数,请参见YAML规范和权限管理。
步骤三:在Serverless开发平台创建项目
登录Serverless开发平台控制台,在左侧导航栏,选择 。
在创建项目页面,选择基于代码仓库创建,选择仓库类型为GitHub,配置目标仓库的相关信息。
如果您的账户未授权给Serverless开发平台,可根据界面提示登录GitHub控制台授权给Serverless开发平台。
选择要绑定的代码仓库分支,然后单击下一步:配置环境与流水线。
在环境与流水线基本配置区域,设置以下参数,然后单击下一步:创建项目。
本文示例配置的方案如下。
步骤四:在Serverless开发平台配置流水线
创建的应用首次部署可能会失败,需要修改流水线的构建与部署任务,以便让Serverless开发平台可以正确构建。关于流水线的概念以及使用说明,请参见相关概念和管理流水线。
在应用的环境详情页面,选择流水线管理页签,在流水线详情区域修改YAML文件,修改完成后单击保存。本文修改的内容示例如下。
使用流水线插件初始化Serverless Devs工具并拉取代码。
使用runtime-setup插件指定使用的构建工具版本,构建工具版本的获取请参见确认构建工具版本。
使用OSS缓存插件加速构建,配置缓存路径,加速NPM构建。
使用整理好的构建命令,构建code.zip包。构建命令的获取请参见整理构建命令。
使用构建插件完成资源的部署。
步骤五:通过Git Push验证是否可以持续部署
将修改后的代码推送到代码仓库的master分支,就可以触发流水线,并自动部署到函数计算。
您可以在环境详情页签下的部署历史区域查看具体的执行详情。
您可以通过Serverless开发平台部署的函数资源单击查看函数代码的更新情况。
说明不支持在线编辑的代码不能查看函数代码的更新情况。
在环境详情页签下的资源信息区域,单击对应的函数,进入函数详情页面,单击代码页签,即可查看通过Git Push的代码已更新。
相关文档
如果您希望通过流水线插件实现灰度发布和正式发布,请参见使用fc-canary插件进行灰度发布和使用fc-release插件发布正式版本。
如果您希望在Serverless开发平台提供测试、预发及生产环境,并为每一个环境配置相应的流水线,方便环境的管理,请参见创建环境。