jenkins 如何部署Angular镜像并根据环境的环境变量更改其配置?

rur96b6h  于 2023-08-03  发布在  Jenkins
关注(0)|答案(1)|浏览(132)

我有一个Angular项目。这个项目几乎已经准备好了,我目前正在配置GCP的部署方面。部署已经设置好了,并且在项目中工作得很好,但是我需要进行一些自动调整,以便它能够识别它所处的环境。
目前,我的部署工作流程如下:

  • 在build_options文件(包含要在Jenkins管道中执行的命令)中,我将“npm run build”命令更改为包含目标环境配置的命令。举例来说:“npm run build --configuration=qa.”
  • 一旦更改了配置,我就在Jenkins中运行管道,它将使用该环境的配置进行构建,通过dev进行部署,直到到达QA。PS:如果我需要部署到生产环境,我会遵循相同的过程,更改命令。这些环境配置包括取决于环境的不同端点。

所以,有什么问题吗?问题是所有以前的环境都将使用最终的配置构建进行配置。换句话说,如果我想部署到生产环境,DEV和QA都将拥有这些配置,因为它们共享构建的映像,该映像是在第一次传递给DEV时创建的。
因此,我需要解决的想法是读取服务器(环境)上存在的环境变量,并让Angular基于该变量采用适当的环境配置。
对此我有些怀疑:如果Angular需要在部署之前进行构建,这是否意味着在环境之间传递映像时不能更改配置?如何让Angular像Java一样读取环境变量,并在不同的环境中相应地更改其配置端点?
这些是我的疑虑,因为我以前从未将同一个映像部署到不同的环境中。
非常感谢您!

xfyts7mz

xfyts7mz1#

Angular编译一次,然后使用当时环境文件中的任何内容。
它不像Java那样在运行时获取配置文件的原因是因为你在用户的浏览器上运行Angular应用程序(大部分)。除非使用服务器端渲染,否则容器只提供静态文件。整个框架都是围绕这个假设建立的。
您可以做的不是让容器构建angular项目,而是让容器运行serve命令。容器的构建过程应该只包含npm install,运行命令应该是ng serve。
举例来说:
第一个月
顺便说一下,我不确定为angular项目创建一个映像会有什么好处,因为您只是在提供静态文件。你可以使用firebase主机或者google云主机来做同样的事情。在后端,你可以有多个容器示例来进行负载平衡,但这里不是这样,因为它运行在用户的浏览器上。

相关问题