Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure devops Angular(8)应用程序构建一次(使用生产配置)并部署到多个环境_Azure Devops_Angular8_Azure Pipelines Release Pipeline_Build Pipeline - Fatal编程技术网

Azure devops Angular(8)应用程序构建一次(使用生产配置)并部署到多个环境

Azure devops Angular(8)应用程序构建一次(使用生产配置)并部署到多个环境,azure-devops,angular8,azure-pipelines-release-pipeline,build-pipeline,Azure Devops,Angular8,Azure Pipelines Release Pipeline,Build Pipeline,我遇到的情况是,我试图使用生产配置构建angular应用程序,并将其部署到多个环境中,例如,ng build--configuration=production 这里的工作流程是当我使用上面的命令(ng build--configuration=production)构建时,environment.ts文件将替换为environment.prod.ts 我在environment.prod.ts中的配置如下: 导出常量环境={ 制作:对,, 环境:"生产",, _webApiHost:'pro

我遇到的情况是,我试图使用生产配置构建angular应用程序,并将其部署到多个环境中,例如,ng build--configuration=production

这里的工作流程是当我使用上面的命令(ng build--configuration=production)构建时,environment.ts文件将替换为environment.prod.ts

我在environment.prod.ts中的配置如下:

导出常量环境={
制作:对,,
环境:"生产",,
_webApiHost:'prodsomename.company.com/api/',

};我不会假装这是一个答案,但它足够长的思想不适合在评论区。也许你会发现它很有用。(完全公开:我不是在使用Azure,而是在使用GitLab。因此,如果您发现这种使用方法,则需要进行一些翻译。)

不管怎样,我刚才也问过同样的问题。经过一番挖掘

利用这一指导,我做了以下工作:

首先,我做一个基本的docker构建。在这个版本中,我在一个文件夹中有各种环境文件“随时待命”。实际驱动应用程序的配置文件位于根目录下

然后,我进行另一个docker构建,这个构建的唯一目的是获取第一个构建并为其提供所需的配置。(我这样做是因为第一次构建很慢,但我希望在不重建的情况下推进生产。)

接下来,我要构建我想要的环境

例如,对于暂存:在我的GitLab构建CI/CD管道yaml中,我有这样一行

docker build -t xxxxx --build-arg SERVE_CONFIGURATION=staging -f [A-Docker-File] .
docker文件对于所有环境都是相同的,但基于传入的参数,此docker构建会拉取不同的文件并将其猛击到驾驶员座椅上。由于角度部署中没有秘密,因此文件夹结构中是否有额外的(未使用的)配置文件并不重要(尽管如果有动机,可以轻松删除它们)

不管怎样,在第二个docker建筑里,我有

...
FROM registry.gitlab.com/xxxxxxxxxxxx/compiled as default-config
FROM registry.gitlab.com/xxxxxxxxxxxx/compiled as final-config

COPY --from=default-config /usr/share/nginx/html/environments/environment.$SERVE_CONFIGURATION.js /usr/share/nginx/html/environment.js
因此,这个docker映像只不过是在先前映像的基础上构建的,但是在适当的位置有所需的环境文件


无论如何,我可能遗漏了一些细节,但我不确定这是否会对您有所帮助,请到此为止。

在运行时替换应用程序配置。您需要创建包含动态配置的config.json文件(例如,
\u webApiHost
)。您可以检入示例代码以获取config.json

在you管道中,您可以添加扩展任务来替换config.json内容,然后再部署到不同的环境(例如测试、生产)

这样,您只需构建angular应用程序一次,并且只需在部署到不同环境之前相应地替换config.json内容

您可以签出的可用扩展名,或
. 您可以查看示例以使用这些任务。

Hi@Ananth Asamani您是否尝试了上述扩展,进展如何?Hi Levi Lu,很抱歉耽搁了,我被卷入了其他问题,因此必须解决这些问题。我最后在我的service.ts文件中以下面的方式完成了它,if(window.location.hostname=='account.company.com'){this.\u webApiHost='api.company.com/api/';}else if(window.location.hostname=='test account.company.com'){this.\u webApiHost='testapi.com/api/';}else{this.\u webApiHost='localhost:62603这可能不是一个理想的或正确的方法,但我最终得到了这个(暂时的)。但现在我正试图实现你上面所说的。我会让你知道的。