【发布时间】:2020-05-13 05:18:52
【问题描述】:
我有一种情况,我正在尝试使用生产配置构建我的 Angular 应用程序并部署到多个环境,例如,ng build --configuration=production
这里的工作流程是当我使用上述命令(ng build --configuration=production)进行构建时,environment.ts 文件被替换为 environment.prod.ts
我在environment.prod.ts中的配置如下,
export const environment = {
production: true,
environment: 'Production',
_webApiHost: 'prodsomename.company.com/api/',
};
我在environmrnt.test.ts中的配置如下,
export const environment = {
production: true,
environment: 'Test',
_webApiHost: 'testsomename.company.com/api/',
};
我对 angular.json 文件的设置如下,
"configurations": {
"production": {
"fileReplacements": [ {
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.prod.ts"
} ],
"optimization": true,
"outputHashing": "all",
"sourceMap": false,
"extractCss": true,
"namedChunks": false,
"aot": true,
"extractLicenses": true,
"vendorChunk": false,
"buildOptimizer": true,
"budgets": [ {
"type": "initial",
"maximumWarning": "2mb",
"maximumError": "5mb"
} ]
},
"test": {
"fileReplacements": [ {
"replace": "src/assets/configs/environment.ts",
"with": "src/assets/configs/environment.test.ts"
} ],
"optimization": true,
"outputHashing": "all",
"sourceMap": false,
"extractCss": true,
"namedChunks": false,
"aot": true,
"extractLicenses": true,
"vendorChunk": false,
"buildOptimizer": true,
"budgets": [ {
"type": "initial",
"maximumWarning": "2mb",
"maximumError": "5mb"
} ]
}
}
如果我分别为每个环境构建解决方案并部署到适当的环境,如下图,
它的作用就像魅力,这意味着,
testApp 与 _webApiHost 通信:testsomename.company.com/api/ 和 prodApp 与 _webApiHost 通信:prodsomename.company.com/api/
在上述情况下,由 QA 测试的 工件与部署到生产环境的工件不同,这不是将代码推送到生产环境的理想方式。
但我担心的是我只想构建应用程序并将其部署到多个环境中,每个环境都会与适当的 api 进行通信,如下图所示,
当我使用命令 ng build --configuration=production 构建它时,environment.ts 文件将具有生产配置,
export const environment = {
production: true,
environment: 'Production',
_webApiHost: 'prodsomename.company.com/api/',
};
因此,如果将该工件部署到测试环境, testApp 正在尝试与 _webApiHost: 'prodsomename.company.com/api/ 通信,这是不对的。
这是我用来构建解决方案的 Azure DevOps 构建管道 powershell 脚本。
Set-Location "$(Build.Repository.LocalPath)\Buffini.Web.UI\Angular"
Write-Host 'Angular Install Starting'
npm install -g @angular/cli@8.0.6 -Verbose
Write-Host 'Angular Install Finished'
Write-Host 'NPM Install Starting'
npm install -Verbose
Write-Host 'NPM Install Finished'
Write-Host 'NPM Update Starting'
npm update -Verbose
Write-Host 'NPM Update Finished'
Write-Host 'NPM Audit Starting'
npm audit fix -Verbose
Write-Host 'NPM Audit Finished'
Write-Host 'Angular Build Starting'
ng build --configuration=production --deleteOutputPath=true
Write-Host 'Angular Build Finished'
我已尝试在线搜索解决方案,但找不到任何解决方案。 请帮助我解决问题。我将非常感谢您的时间和帮助。提前致谢。
【问题讨论】:
标签: azure-devops angular8 azure-pipelines-release-pipeline build-pipeline