Consistent Behavior in CI/CD

Summary

在 CI/CD 中, 我们的代码需要经过几个环境的测试, 才能最终到达生产环境. 这几个环境包括了:

  1. 本地开发电脑 local

  2. 本地单元测试, 确保在将代码 commit 到 git 之前代码没问题

  3. CI 的单元测试, 在 CI 里再跑一边, 自动运行单元测试, 及早发现错误

  4. 部署真正的 App 到 dev 环境, 以供后续开发使用.

  5. 用 dev 环境的代码做集成测试.

  6. 在 CI 里 build artifacts.

  7. 将 artifacts 部署到 qa 环境中, 继续运行单元测试和集成测试.

  8. 最终验证没问题后将 artifacts 部署到 prod 环境中.

这些环境的运行时经常会各不相同, 有的是本地机器, 有的是虚拟机, 有的是容器. 而这里最大的挑战就是 如何让一套核心业务代码逻辑能在各种不同的环境下都能正常运行?