目录

  1. 实践准备
    1. 安装Serverless开发者工具
    2. 部署一个函数到线上
  2. 基于Gitee的CD能力建设
  3. Gitee仓库的准备
  4. push代码到仓库
  5. 配置环境变量
  6. 开启Gitee Go
  7. 更新代码
  • 总结

    在上一篇文章中,我们介绍了如何通过Github + Github Action进行单纯的代码更新以及版本发布,在本篇文章中,将会分享如何通过Gitee + Gitee Go实现:

    1. 单纯更新函数代码
    2. 进行版本发布

    实践准备

    首先,我们在开始正式实践之前,我们要做几个事情:

    1. 安装Serverless开发者工具
    2. 部署一个函数到线上

    安装Serverless开发者工具

    通过 npm 包管理安装:适用于已经预装了 npm 的 Windows、Mac、Linux 平台。在 Windows、Mac、Linux 平台执行以下命令安装 Serverless Devs Tool工具。

    script
    1
    $ npm install @serverless-devs/s -g

    或者 通过 yarn 进行安装

    script
    1
    $ yarn global add @serverless-devs/s

    说明:

    • 如果在 Linux 或 MacOS 下执行该命令报错且报错信息为 未找到命令,请执行命令 ln -s serverless-devs安装位置 /usr/bin,serverless-devs安装位置可以通过find / -name s 查找。
    • 如果在 Linxu 下执行该命令报错且报错信息为 Error: EACCES: permission denied,请执行命令 sudo npm install @serverless-devs/s -g
    • 如果安装过程较慢,可以考虑使用淘宝 npm 源,安装命令为 npm --registry=https://registry.npm.taobao.org install @serverless-devs/s -g

    部署一个函数到线上

    1. 在本地初始化一个基于nodejs运行时的koa项目
    1
    s init nodejs-koa

    初始化的时候会让我们填写相关内容,例如项目目录,选择密钥等:

    image

    如何配置阿里云密钥信息,可以参考:http://www.serverless-devs.com/docs/provider-config/alibabacloud

    1. 进入到项目目录,并进行部署操作:

    image

    稍等片刻,即可看到项目已经完成部署:

    image

    我们打开项目页面:

    image

    至此,我们的准备环节完成。

    基于Gitee的CD能力建设

    在这一步,我们需要做几个事情:

    1. 有一个Gitee仓库
    2. 在仓库中push我们的代码
    3. 配置环境变量
    4. 开启Gitee Go
    5. 更新代码

    Gitee仓库的准备

    创建一个Gitee仓库:

    image

    push代码到仓库

    image

    推送后:

    image

    配置环境变量

    此时,我们将阿里云的密钥等信息配置到环境变量:

    image

    例如配置:

    image

    配置后的效果:

    image

    开启Gitee Go

    此时开启Gitee Go:

    image

    然后:

    image

    点击创建流水线,并输入流水线内容:

    image

    流水线文件名:deploy.yml

    流水线配置:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    name: koa-cicd
    displayName: 'KOA自动部署流水线'
    triggers: # 流水线触发器配置
    push: # 设置 master 分支 在产生代码 push 时精确触发(PRECISE)构建
    - matchType: PRECISE
    branch: master
    commitMessage: '' # 通过匹配当前提交的 CommitMessage 决定是否执行流水线
    stages: # 构建阶段配置
    - stage: # 定义一个 ID 标识为 deploy-stage ,名为「 Deploy Stage 」的阶段
    name: deploy-stage
    displayName: 'Deploy Stage'
    failFast: false # 允许快速失败,即当 Stage 中有任务失败时,直接结束整个 Stage

    steps: # 构建步骤配置
    - step: npmbuild@1 # 采用 npm 编译环境
    name: deploy-step # 定义一个 ID 标识为 deploy-step ,名为「 Deploy Step 」的阶段
    displayName: 'Deploy Step'
    inputs: # 构建输入参数设定
    nodeVersion: 14.15 # 指定 node 环境版本为 14.15
    goals: | # 安装依赖,配置相关主题、部署参数并发布部署
    node -v
    npm -v
    npm install -g @serverless-devs/s
    s config add --AccountID $ACCOUNTID --AccessKeyID $ACCESSKEYID --AccessKeySecret $ACCESSKEYSECRET -a default
    cd src && npm install
    s cli fc-api updateFunction --region cn-hangzhou --serviceName koademo --functionName http-trigger-function --code '{"zipFile":"./"}'
    s cli fc-api publishVersion --region cn-hangzhou --serviceName koademo

    其实核心部分只有5句话:

    1
    2
    3
    4
    5
    npm install -g @serverless-devs/s
    s config add --AccountID $ACCOUNTID --AccessKeyID $ACCESSKEYID --AccessKeySecret $ACCESSKEYSECRET -a default
    cd src && npm install
    s cli fc-api updateFunction --region cn-hangzhou --serviceName koademo --functionName http-trigger-function --code '{"zipFile":"./"}'
    s cli fc-api publishVersion --region cn-hangzhou --serviceName koademo
    1. npm install -g @serverless-devs/s: 安装Serverless Devs工具
    2. s config add --AccountID $ACCOUNTID --AccessKeyID $ACCESSKEYID --AccessKeySecret $ACCESSKEYSECRET -a default: 根据刚才配置的环境变量,取环境变量内容配置密钥
    3. cd src && npm install: 进入src目录,并安装依赖
    4. s cli fc-api updateFunction --region cn-hangzhou --serviceName koademo --functionName http-trigger-function --code '{"zipFile":"./src/"}' : 更新函数代码
    5. s cli fc-api publishVersion --region cn-hangzhou --serviceName koademo : 发布函数版本

    更新代码

    此时,我们可以对Index.js内容进行更改:

    image

    然后保存,稍等片刻,可以在流水线中看到这个发布流程:

    image

    此时,我们可以点到流程中查看详情:

    image

    稍等片刻,可以看到CD流程完成:

    image

    完成之后,我们可以点击查看线上的代码:

    image

    总结

    基于Serverless架构进行项目开发,与CI/CD的集成,搞定自动化发布等是必不可少的“课程”,希望通过本文,读者可以对相关的流程有进一步的思路,可以应用到自己的项目中。

    欢迎您关注我的博客,也欢迎转载该博客,转载请注明本文地址: http://bluo.cn/gitee-gitee-go-serverless-devs-ci-cd/ 。有关于Serverless等相关问题欢迎联系我:80902630

    微信号抖音号