IDC

Serverless 应用中心 自动化部署 - 最佳实践

作者:admin 2021-10-16 我要评论

操作场景 在 Serverless 应用开发中,我们需要手动执行部署命令将开发项目部署到云端。通过引入一些 CI 能力进行 Serverless 应用的自动化部署。 基于 GitHub 的...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

操作场景

在 Serverless 应用开发中,我们需要手动执行部署命令将开发项目部署到云端。通过引入一些 CI 能力进行 Serverless 应用的自动化部署。

基于 GitHub 的自动化部署

前提条件

  • 已创建 Serverless 应用项目。参考 开发项目 创建您的 Serverless 项目并创建各个环境与分支。
  • 已托管您的 Serverless 项目到 Github。

操作步骤

在开发测试阶段,为了方便开发、测试和调试,希望代码每次提交后进行自动化部署。操作如下:

  1. 选取一个您需要执行自动化部署的分支(本示例选择 dev 分支)。
  2. 在该分支下创建您的 action。
    注意:

    GitHub 规定如果事件发生在特定仓库分支上,则工作流程文件必须存在于该分支的仓库中 。

  3. 配置腾讯云密钥。
  4. 配置 action 部署步骤。
# 当代码推动到 dev 分支时,执行当前工作流程
# 更多配置信息: https://docs.github.com/cn/actions/getting-started-with-github-actions

name: deploy serverless

on: #监听的事件和分支配置
  push:
    branches:
      - dev 

jobs:
  test: #配置单元测试
    name: test
    runs-on: ubuntu-latest
    steps:
      - name: unit test
        run: '' 
  deploy:
    name: deploy serverless
    runs-on: ubuntu-latest
    needs: [test]
    steps:
      - name: clone local repository
        uses: actions/checkout@v2
      - name: install serverless
        run: npm install -g serverless
      - name: install dependency
        run: npm install
      - name: build
        run: npm build
      - name: deploy serverless
        run: sls deploy --debug
        env: # 环境变量
          STAGE: dev #您的部署环境
          SERVERLESS_PLATFORM_VENDOR: tencent #serverless 境外默认为 aws,配置为腾讯
          TENCENT_SECRET_ID: ${{ secrets.TENCENT_SECRET_ID }} #您的腾讯云账号 sercret ID
          TENCENT_SECRET_KEY: ${{ secrets.TENCENT_SECRET_KEY }} #您的腾讯云账号 sercret key

完成上述配置后,开发者每次提交代码到 dev 分支时,就会自动部署。

基于 Coding 的自动化部署

前提条件

  • 已开通 Coding 账号。腾讯云用户可以通过 CODING DevOps 快速开通。
  • 已创建 Serverless 应用项目。如果您未创建 Serverless 应用项目,请参考 开发项目 创建您的 Serverless 项目并创建各个环境与分支。
  • 已托管您的 Serverless 项目到 Coding/Github/Gitlab/码云。

操作场景

在开发测试阶段,为了方便开发、测试和调试,希望代码每次提交后进行自动化部署。操作如下:

  1. 创建您的 Coding Devops 项目。

  2. 创建一个构建计划,选择自定义构建过程。

  3. 配置构建计划。

    1. 基础信息配置。本例中配置 Github 仓库:June1991/express-demo。

    2. 触发规则配置。本例中配置代码推送到 dev 分支时触发构建。

    3. 环境变量配置。本例中配置 STAGE 变量为部署环境 dev,TENCENT_CLOUD_API_CRED 为腾讯云账号密钥(密钥配置路径:左下角项目设置 > 开发者选项 > 凭据管理 > 录入凭据 > 腾讯云 API 密钥)。

    4. 流程配置。

      pipeline {
        agent any
        stages {
          stage('检出') {
            steps {
              checkout([$class: 'GitSCM', branches: [[name: env.GIT_BUILD_REF]],
                  userRemoteConfigs: [[url: env.GIT_REPO_URL, credentialsId: env.CREDENTIALS_ID]]])
            }
          }
          stage('安装依赖') {
            steps {
              echo '安装依赖中...'
              sh 'npm i -g serverless'
              sh 'npm install'
              echo '安装依赖完成.'
            }
          }
          stage('部署') {
            steps {
              echo '部署中...'
      
              withCredentials([
                cloudApi(
                  credentialsId: "${env.TENCENT_CLOUD_API_CRED}",
                  secretIdVariable: 'TENCENT_SECRET_ID',
                  secretKeyVariable: 'TENCENT_SECRET_KEY'
                ),
              ]) {
      
                   // 生成凭据文件
                   sh 'echo "TENCENT_SECRET_ID=${TENCENT_SECRET_ID}\nTENCENT_SECRET_KEY=${TENCENT_SECRET_KEY}" > .env'
                   // 部署
                   sh 'sls deploy --debug'   
                   // 移除凭据
                   sh 'rm .env 
              }
      
              echo '部署完成'
            }
          }
        }
      }

完成以上配置后,开发者每次提交代码到 dev 分支时,就会自动部署。

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
腾讯云代理商
精彩导读
海外云服务器
热门资讯
腾讯云代理商