在这篇文章中,作者介绍了如何配置和使用 Github Actions 来方便得部署 Serverless 应用程序。本文用到的所有代码可以在这里获取
首先,我们使用以下命令创建一个托管在腾讯云 SCF 上的简单的 Node.js 应用
serverless init scf-starter --name sls-action
cd sls-action
该命令会新建一个名为 sls-action
的文件夹,并且初始化一个简单的 SCF 函数。
然后, 我们需要在文件夹内创建一个 .env
文件来存储腾讯云的 SecretId
和 SecretKey
信息。(因为涉及密钥,这个文件不应该被推送到的 GitHub 仓库,可以在 .gitignore
文件中忽略这个文件)
SERVERLESS_PLATFORM_VENDOR=tencent
TENCENT_SECRET_ID=******
TENCENT_SECRET_KEY=******
TENCENT_SECRET_ID
和 TENCENT_SECRET_KEY
可以在腾讯云控制台的 API 密钥管理 中获取。关于密钥配置的更多细节可以参考我们的相关文档
配置完毕之后,可以使用以下命令部署这个 serverless 应用
serverless deploy
如果部署没有问题,我们就可以开始配置 GitHub Action 了。
.github/workflows
目录,用来存放工作流.github/workflows
目录中,创建一个名为 deploy.yml
的文件描述我们的工作流# 工作流名称
name: deploy
# 控制该工作流什么时候运行
on:
# 当 main 分支有代码 push 时运行
push:
branches: [ main ]
# 允许在 action 页面手动运行
workflow_dispatch:
# 一个工作流中可以定义多个 jobs
jobs:
# 我们的 job 名称(deploySCF)
deploySCF:
# job 运行的系统
runs-on: ubuntu-latest
# job 运行前添加的环境变量
env:
SERVERLESS_PLATFORM_VENDOR: tencent
TENCENT_SECRET_ID: ${{ secrets.TENCENT_SECRET_ID }}
TENCENT_SECRET_KEY: ${{ secrets.TENCENT_SECRET_KEY }}
# 部署过程
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v1
with:
node-version: '14.x'
- name: Install serverless cli
run: sudo npm i serverless -g
- name: Deploy and invoke SCF
run: serverless deploy
当我们把上述代码推送到 GitHub 仓库之后,我们就创建了这样一个工作流:
当 main
分支代码有更新时,Action 会自动帮我们部署最新版代码到腾讯 SCF。同时我们也可以手动执行这个工作流,方便在遇到问题时进行调试。
在我们的工作流中,我们引用了存储在 GitHub 项目上的环境变量(${{ secrets.TENCENT_SECRET_ID }}
)。
为了成功部署项目,我们需要进入项目的 Setting 页面,然后在该页面点击侧边栏的 Secrets 一栏。就可以在该页面填入我们用到的环境变量 TENCENT_SECRET_ID
和 TENCENT_SECRET_KEY
两个环境变量了。
从工作流运行列表中,单击要查看的 Action。
查看运行结果和日志,日志显示了每个步骤是如何处理的。我们可以展开任何步骤查看详细的日志。
本文介绍了如何通过 GitHub Action 为 Serverless 应用配置一个简单的工作流,实现了当主分支代码更新时自动部署的功能。简单介绍了如何为 Action 配置必要的密钥信息,如何查看工作流运行日志等。 由于篇幅限制,很多地方只是粗略介绍,对于需要深入了解 Serverless 应用和 GitHub Action 的读者,可以参考以下链接: