一个 build\release 适用于所有环境 vs 多个 biulds\releases 适用于所有环境
One build\release for all environments vs multiple biulds\releases for all environments
在我当前的设置中,这是正在发生的事情,
- 构建开发
- 构建 Uat
- 建立生产
然后,
- 发布开发
- 释放 Uat
- 发布制作
现在的问题是我们只有 1 个代理(不知道为什么),这种情况并不经常发生,但有时我们需要快速构建和发布修补程序,但每次构建需要大约 10 分钟以上,而且不能运行 与其他版本并行。发布也一样。因此,将修补程序部署到生产环境仅需 2 小时左右的痛苦过程。
需要单独构建:
在构建时我们指定这样的构建命令,
ng build -configuration --uat
ng build -configuration --prod
为什么我们不应该为所有环境创建一个 build\release?假设会有变通办法为不同的配置创建不同的工件,或者我们可能只是在 azure 或类似的东西上使用应用程序设置。
虽然这个问题倾向于获得主要基于意见的答案 (more info here),但我 将继续回答它。
就我而言,您应该只有一个构建并且让工件在所有*环境中传播。二进制文件(工件)不会改变,只有它们的配置会改变。这是您可以确保不同环境下的代码运行没有任何差异的唯一方法。
* 您的开发环境 might/can 是一个特殊的 cookie。一些 Dev 环境使开发人员能够进行远程调试和此类任务,因此在您的 Dev 环境上构建 Debug 很有意义。
在我当前的设置中,这是正在发生的事情,
- 构建开发
- 构建 Uat
- 建立生产
然后,
- 发布开发
- 释放 Uat
- 发布制作
现在的问题是我们只有 1 个代理(不知道为什么),这种情况并不经常发生,但有时我们需要快速构建和发布修补程序,但每次构建需要大约 10 分钟以上,而且不能运行 与其他版本并行。发布也一样。因此,将修补程序部署到生产环境仅需 2 小时左右的痛苦过程。
需要单独构建:
在构建时我们指定这样的构建命令,
ng build -configuration --uat
ng build -configuration --prod
为什么我们不应该为所有环境创建一个 build\release?假设会有变通办法为不同的配置创建不同的工件,或者我们可能只是在 azure 或类似的东西上使用应用程序设置。
虽然这个问题倾向于获得主要基于意见的答案 (more info here),但我 将继续回答它。
就我而言,您应该只有一个构建并且让工件在所有*环境中传播。二进制文件(工件)不会改变,只有它们的配置会改变。这是您可以确保不同环境下的代码运行没有任何差异的唯一方法。
* 您的开发环境 might/can 是一个特殊的 cookie。一些 Dev 环境使开发人员能够进行远程调试和此类任务,因此在您的 Dev 环境上构建 Debug 很有意义。