Vou explicar como desenvolvi algo semelhate para o Angular. Por padrão no angular você cria os arquivos enviroment.{env}.ts e na pipeline você faz um build para cada ambiente, exatamente como mencionou. Pra não precisarmos disso, nos criamos um arquivo config.json, e faziamos a leitura desse arquivo. Então, em nossa pipeline, toda vez que o projeto era promovido entre os ambientes, existia um comando de rewrite que substituia o arquivo config.json pelo arquivo do ambiente.
Nos tinhamos
- config
- config.prod.json
- config.stg.json
- config.qa.json
- config.json
Por padrão, em dev o projeto usava o config.json, então todo o projeto sempre tentava pegar as informaçoes desse arquivo. A pipeline fazia algo semelhante a isso
rm config/config.json && cp config/config.qa.json config/config.json