文档

将已有的函数计算工程托管至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文件的步骤如下:

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

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

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

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

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

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

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

    image

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

步骤三:在Serverless开发平台创建项目

  1. 登录Serverless开发平台控制台,在左侧导航栏,选择项目案例库 > 全部案例

  2. 创建项目页面,选择基于代码仓库创建,选择仓库类型为GitHub,配置目标仓库的相关信息。

    如果您的账户未授权给Serverless开发平台,可根据界面提示登录GitHub控制台授权给Serverless开发平台。

  3. 选择要绑定的代码仓库分支,然后单击下一步:配置环境与流水线

  4. 环境与流水线基本配置区域,设置以下参数,然后单击下一步:创建项目

    本文示例配置的方案如下。

    image

步骤四:在Serverless开发平台配置流水线

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

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

image.png

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

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

  • 您可以在环境详情页签下的部署历史区域查看具体的执行详情。

  • 您可以通过Serverless开发平台部署的函数资源单击查看函数代码的更新情况。

    说明

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

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

相关文档