tencent cloud

文档反馈

开发项目

最后更新时间:2021-06-23 15:55:15

    操作场景

    本文以 tencent-express 组件部署一个 Express 网站为例, 模拟 Serverless Framework 开发项目、管理项目和部署发布上线全流程。示例链接 >>

    开发项目过程可能会涉及以下分支:

    分支类型 说明
    master 用于生产环境部署
    testing 用于测试环境测试
    dev 用于日常开发
    feature-xxx 用于增加一个新功能,例如不同开发者会从 dev 拉取不同的特性分支进行开发
    hotfix-xxx 用于修复一个紧急 bug

    操作步骤

    初始化项目

    1.参考 部署 Express.js 应用 文档,创建一个 express 项目,修改 yml 文件为以下内容:

    #serverless.yml
    app: expressDemoApp #  应用名称,默认为与组件实例名称
    stage: ${env:STAGE} #  用于开发环境的隔离,默认为dev
    
    component: express # (必填) 引用 component 的名称,当前用到的是 express-tencent 组件
    name: expressDemo # (必填) 组件创建的实例名称
    inputs:
     src:
       src: ./ 
       exclude:
         - .env
     region: ap-guangzhou
     runtime: Nodejs10.15
     functionName: ${name}-${stage}-${app} #云函数名称
     apigatewayConf:
       protocols:
         - http
         - https
       environment: release
    

    2.在项目根目录下的 .env 文件中配置:

    TENCENT_SECRET_ID=xxxxxxxxxx #您账号的 SecretId
    TENCENT_SECRET_KEY=xxxxxxxx #您账号的 SecretKey
    STAGE=prod #STAGE为prod环境,也可以sls deploy --stage prod 参数传递的方式设置
    

    3.执行 sls deploy 部署成功后,访问生成的 url 链接,效果如下:

    4.创建远程仓库(示例链接),将项目代码提交到远程 master 分支。同时创建 testing、dev。此时三个分支的代码在同一个版本上(假设为版本0)。

    开发与测试

    背景

    现在需要开发某个功能模块。假设需要有两位开发者:Tom、Jorge。两位开发者分别从 dev(版本0)上创建特性分支为 feature1、feature2 进行研发。

    Tom 开始开发 feature1。在本示例中,为新增一个 feature.html,里面写文案"This is a new feature 1."。

    开发

    1.在 sls.js 文件中新增路由器配置:

    // Routes
    app.get(`/feature`, (req, res) => {
    res.sendFile(path.join(__dirname, 'feature.html'))
    })
    

    2.新增 feature.html:

    <!DOCTYPE html>
    <html lang="en">
    <head>
       <meta charset="UTF-8" />
       <meta name="viewport" content="width=device-width, initial-scale=1.0" />
     <title>Serverless Component - Express.js</title>
    </head>
    <body>
     <h1>
      This is a new feature 1.
     </h1>
    </body>
    </html>
    

    3.在 .env 文件中设置自己的 stage,以便在开发过程中得到独立的运行和调试环境。
    例如 Tom 在 serverless.yml 的项目目录下配置 .env 如下:

    TENCENT_SECRET_ID=xxxxxxxxxx
    TENCENT_SECRET_KEY=xxxxxxxx
    STAGE=feature1
    

    4.执行 sls deploy 部署成功后,返回显示如下:

    region: ap-guangzhou
    apigw:
     serviceId:   service-xxxxxx
     subDomain:   service-xxxxxx-123456789.gz.apigw.tencentcs.com
     environment: release
     url:         https://service-xxxxxx-123456789.gz.apigw.tencentcs.com/release/
    scf:
     functionName: express-demo-feature1
     runtime:      Nodejs10.15
     namespace:    default
     lastVersion:  $LATEST
     traffic:      1
    Full details: https://serverless.cloud.tencent.com/instances/expressDemoApp%3Afeature1%3AexpressDemo
    10s » expressDemo » Success
    

    5.访问生成的 url(https://service-xxxxxx-123456789.gz.apigw.tencentcs.com/release/feature),效果如下:

    至此,Tom 开发功能完成并自测通过。

    假设同时,Jorge 同时也完成自己的特性开发,并自测通过。在本示例中,为新增一个 feature.html,里面写文案"This is a new feature 2."。

    联调

    1、两人把各自 feature 分支的代码合并到 dev 分支。(可能会存在冲突需要人为解决)

    2、在dev进行联调。联调环境中的.env配置如下

    TENCENT_SECRET_ID=xxxxxxxxxx
    TENCENT_SECRET_KEY=xxxxxxxx
    STAGE=dev
    

    3、执行 sls deploy 联调部署后,访问 url(https://service-xxxxxx-123456789.gz.apigw.tencentcs.com/release/feature),效果如下:

    至此联调完成,整个功能已经开发完毕。

    测试

    1. 把联调通过的 dev 分支合并到 testing 代码,进入测试。
    2. 测试环境中的 .env 配置如下:
      TENCENT_SECRET_ID=xxxxxxxxxx
      TENCENT_SECRET_KEY=xxxxxxxx
      STAGE=testing
      
    3. 执行 sls deploy 部署成功后,测试人员开始进行相关测试,直至功能稳定通过。

    发布上线

    测试通过后,将测试代码合并到 master 分支,准备发布上线。

    设置生产环境中的 .env 为:

    TENCENT_SECRET_ID=xxxxxxxxxx
    TENCENT_SECRET_KEY=xxxxxxxx
    STAGE=prod
    

    执行部署命令:

    sls deploy 
    

    至此,我们完成了一个 severless-express 项目的开发和上线发布。

    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持