本文介绍如何使用GitHub Action和Serverless Devs实现CI/CD能力。
前提条件
- 安装Serverless Devs
- 配置Serverless Devs
- 根据YAML规范创建Serverless Devs项目。详细信息,请参见YAML规范。
操作步骤
- 初始化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
- 配置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
- 配置密钥信息。
- 登录GitHub。
- 找到目标仓库,单击页面上方的Settings。
- 在Settings页面的左侧导航栏,单击Secrets。
- 在Secrets页面的右上角,单击New repository secret。
- 设置密钥信息,单击Add secret。需要设置的信息如下所示:
- ALIYUN_ACCESS_KEY_ID:设置您的AccessKey ID。
- ALIYUN_ACCESS_KEY_SECRET:设置您的AccessKey Secret。
- ALIYUN_ACCOUNT_ID:设置您的阿里云账号ID或RAM用户所属的阿里云账号ID。
说明 当您的s文件内包含两个服务,且分别用了不同的组件和不同的别名时,您需要配置多个密钥信息来配置CI/CD。 - 在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的密钥,例如需要配置key为tempToken1和Value为tempToken1,key为tempToken2和Value为tempToken2,别名为demo的密钥对。将以下内容填写至serverless-devs.yml文件内:s config add -kl tempToken1,tempToken2 -il tempValue1,tempValue2 -a demo
- 配置一个密钥信息时,serverless-devs.yml文件内关于密钥的信息如下所示:
- 配置功能。您可以根据GitHub Actions自定义serverless-devs.yml文件内的功能。例如当您配置完密钥信息后,还需要完成以下操作:
- 构建应用。
- 删除临时生成的文件夹./abc。
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
- 配置密钥信息。