在一个多人的开发团队,为了提升集成和部署的效率,同时也为了一些秘钥的安全性,我们需要提供持续集成和持续部署(CICD)能力。供持续集成和持续部署(CICD)的关键在于我们如何将秘钥注入到 CICD 的环境中,已经框架如何正确的获取该秘钥。注入秘钥一般由相关的平台来做,比如 GitHub;而获取秘钥,一般是由应用本身来处理。
框架默认提供 CICD 脚本
Malagu 框架提供了一系列开箱即用的模板,在模板中,默认提供了基于 GitHub Actions 实现 CICD 脚本,我们只需要在平台中注入相应的秘钥即可使用。脚本如下:
name: Malagu Deployon: pushjobs:malagu-deploy:runs-on: ubuntu-lateststeps:- uses: actions/checkout@v2- name: Setup nodeuses: actions/setup-node@v1with:node-version: '12'- uses: bahmutov/npm-install@v1- run: npm run lint --if-present # 存在代码风格检查命令则执行该代码风格检查命令- run: npm test # 执行测试命令- if: ${{ github.ref == 'refs/heads/master' }} # 如果提交的主分支,则部署到生成环境env: ${{ secrets }}run: npx malagu deploy -m prod- if: ${{ github.ref == 'refs/heads/pre' }} # 如果提交的 pre 分支,则部署到预发环境env: ${{ secrets }}run: npx malagu deploy -m pre- if: ${{ github.ref != 'refs/heads/master' && github.ref != 'refs/heads/pre' }} # 如果提交的既不是主分支,又不是 pre 分支,则部署到测试环境env: ${{ secrets }}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 框架中,我们可以通过属性配置文件引用当前环境中的环境变量,如下所示:
password: ${env.PASSWORD}
云厂商必须配置的秘钥
如果需要部署到云厂商的 Serverless 平台上,需要将相关的 AKSK 相信配置为秘钥,并注入到 CICD 环境中,配置一下秘钥即可:
MALAGU_REGIONMALAGU_ACCESS_KEY_IDMALAGU_ACCESS_KEY_SECRETMALAGU_ACCOUNT_ID # 部分云厂商可以不提供
