在一个多人的开发团队,为了提升集成和部署的效率,同时也为了一些秘钥的安全性,我们需要提供持续集成和持续部署(CICD)能力。供持续集成和持续部署(CICD)的关键在于我们如何将秘钥注入到 CICD 的环境中,已经框架如何正确的获取该秘钥。注入秘钥一般由相关的平台来做,比如 GitHub;而获取秘钥,一般是由应用本身来处理。

框架默认提供 CICD 脚本

Malagu 框架提供了一系列开箱即用的模板,在模板中,默认提供了基于 GitHub Actions 实现 CICD 脚本,我们只需要在平台中注入相应的秘钥即可使用。脚本如下:

  1. name: Malagu Deploy
  2. on: push
  3. jobs:
  4. malagu-deploy:
  5. runs-on: ubuntu-latest
  6. steps:
  7. - uses: actions/checkout@v2
  8. - name: Setup node
  9. uses: actions/setup-node@v1
  10. with:
  11. node-version: '12'
  12. - uses: bahmutov/npm-install@v1
  13. - run: npm run lint --if-present # 存在代码风格检查命令则执行该代码风格检查命令
  14. - run: npm test # 执行测试命令
  15. - if: ${{ github.ref == 'refs/heads/master' }} # 如果提交的主分支,则部署到生成环境
  16. env: ${{ secrets }}
  17. run: npx malagu deploy -m prod
  18. - if: ${{ github.ref == 'refs/heads/pre' }} # 如果提交的 pre 分支,则部署到预发环境
  19. env: ${{ secrets }}
  20. run: npx malagu deploy -m pre
  21. - if: ${{ github.ref != 'refs/heads/master' && github.ref != 'refs/heads/pre' }} # 如果提交的既不是主分支,又不是 pre 分支,则部署到测试环境
  22. env: ${{ secrets }}
  23. run: npx malagu deploy -m test

说明:

  • 如果提交的主分支,则部署到生成环境: npx malagu deploy -m prod
  • 如果提交的 pre 分支,则部署到预发环境: npx malagu deploy -m pre
  • 如果提交的既不是主分支,又不是 pre 分支,则部署到测试环境: npx malagu deploy -m test

如何获取注入的秘钥

GitHub 平台会将秘钥,通过环境变量注入到 CICD 运行环境中,在 Malagu 框架中,我们可以通过属性配置文件引用当前环境中的环境变量,如下所示:

  1. password: ${env.PASSWORD}

云厂商必须配置的秘钥

如果需要部署到云厂商的 Serverless 平台上,需要将相关的 AKSK 相信配置为秘钥,并注入到 CICD 环境中,配置一下秘钥即可:

  1. MALAGU_REGION
  2. MALAGU_ACCESS_KEY_ID
  3. MALAGU_ACCESS_KEY_SECRET
  4. MALAGU_ACCOUNT_ID # 部分云厂商可以不提供