本文介绍如何使用GitHub Action和Serverless Devs实现CI/CD能力。

前提条件

您已完成以下操作:

操作步骤

  1. 初始化CI/CD模板。
    在项目目录中执行以下命令,生成一个GitHub Action模板:
    s cli cicd github
    执行输出:
    √ File decompression completed
    [2021-08-09T10:45:03.137] [INFO ] [CICD] -
    
         Github Action CI/CD template created successfully.
           1️ Edit the file [./.github/workflow/serverless-devs.yml] to complete the CI/CD function configuration
           2️ Configure user key information through GitHub Secrets
    
        Related documents:
           如何通过GitHub Action使用Serverless Devs做CI/CD:http://short.devsapp.cn/cicd/github/action/usage
        Best practices:
           Serverless Devs的官网是通过Serverless Devs部署的: http://short.devsapp.cn/cicd/github/action/practice
           SAE与GitHub Action珠合璧联,让CD从未如此简单: http://www.serverless-devs.com/blog/aliyun-sae-github-action-cicd
           阿里云Custom Container的CI/CD最佳实践案例: http://www.serverless-devs.com/blog/aliyun-custom-container-ci-cd
           只更新代码,然后发布版本:原子化操作阿里云函数计算: http://www.serverless-devs.com/blog/serverless-devs-update-fc-code
    
    End of method: github                        
  2. 配置serverless-devs.yml文件。
    当您成功初始化CI/CD模板后,系统会生成一个简单的案例,该案例内包含一个serverless-devs.yml文件,具体内容如下所示:
    name: Serverless Devs Project CI/CD
    
    on:
      push:
        branches: [ master ]
    
    jobs:
      serverless-devs-cd:
        runs-on: ubuntu-latest
        steps:
          - uses: actions/checkout@v2
          - uses: actions/setup-node@v2
            with:
              node-version: 12
              registry-url: https://registry.npmjs.org/
          - run: npm install
          - run: npm install -g @serverless-devs/s
          # 默认密钥配置指令是阿里云密钥配置指令,更多可以参考:
          # 如何通过GitHub Action使用Serverless Devs做CI/CD:http://short.devsapp.cn/cicd/github/action/usage
          # Serverless Devs的官网是通过Serverless Devs部署的: http://short.devsapp.cn/cicd/github/action/practice
          - run: s config add --AccountID ${{secrets.AccountID}} --AccessKeyID ${{secrets.AccessKeyID}} --AccessKeySecret ${{secrets.AccessKeySecret}} -a default
          - run: s deploy                                
    1. 配置密钥信息。
      1. 登录GitHub
      2. 找到目标仓库,单击页面上方的Settings
      3. Settings页面的左侧导航栏,单击Secrets
      4. Secrets页面的右上角,单击New repository secret
      5. 设置密钥信息,单击Add secretGithub
        需要设置的信息如下所示:
        • ALIYUN_ACCESS_KEY_ID:设置您的AccessKey ID。
        • ALIYUN_ACCESS_KEY_SECRET:设置您的AccessKey Secret。
        • ALIYUN_ACCOUNT_ID:设置您的阿里云账号ID或RAM用户所属的阿里云账号ID。
        说明 当您的s文件内包含两个服务,且分别用了不同的组件和不同的别名时,您需要配置多个密钥信息来配置CI/CD。
      6. 在GitHub中成功设置密钥信息后,再将具体的密钥信息配置在serverless-devs.yml中。
        • 配置一个密钥信息时,serverless-devs.yml文件内关于密钥的信息如下所示:
          s config add --AccountID ${{secrets.ALIYUN_ACCOUNT_ID}} --AccessKeyID ${{secrets.ALIYUN_ACCESS_KEY_ID}} --AccessKeySecret ${{secrets.ALIYUN_ACCESS_KEY_SECRET}} -a website_access
        • 配置多个密钥信息时,serverless-devs.yml文件内关于密钥的信息如下所示:
          s config add -kl tempToken1,tempToken2 -il tempValue1,tempValue2 -a website_access
          s config add -kl tempToken3,tempToken4 -il tempValue3,tempValue4 -a fc_access
        说明 当您开发了某个组件时,可以按照下面的方式自定义Key-Value的密钥,例如需要配置keytempToken1ValuetempToken1keytempToken2ValuetempToken2,别名为demo的密钥对。将以下内容填写至serverless-devs.yml文件内:
        s config add -kl tempToken1,tempToken2 -il tempValue1,tempValue2 -a demo
    2. 配置功能。
      您可以根据GitHub Actions自定义serverless-devs.yml文件内的功能。例如当您配置完密钥信息后,还需要完成以下操作:
      1. 构建应用。
      2. 删除临时生成的文件夹./abc
      serverless-devs.yml的内容示例如下所示:
      name: Serverless Devs Project CI/CD
      
      on:
        push:
          branches: [ master ]
      
      jobs:
        serverless-devs-cd:
          runs-on: ubuntu-latest
          steps:
            - uses: actions/checkout@v2
            - uses: actions/setup-node@v2
              with:
                node-version: 12
                registry-url: https://registry.npmjs.org/
            - run: npm install
            - run: npm install -g @serverless-devs/s
            # 默认密钥配置指令是阿里云密钥配置指令,更多可以参考:
            # 如何通过GitHub Action使用Serverless Devs做CI/CD:http://short.devsapp.cn/cicd/github/action/usage
            # Serverless Devs的官网是通过Serverless Devs部署的: http://short.devsapp.cn/cicd/github/action/practice
            - run: s config add --AccountID ${{secrets.AccountID}} --AccessKeyID ${{secrets.AccessKeyID}} --AccessKeySecret ${{secrets.AccessKeySecret}} -a default
            - run: s build
            - run: rm -rf ./abc
            - run: s deploy