我面临着在存储库的各个开发阶段维护属性文件的挑战。
在我们的遗留单体中,所有属性和配置文件都驻留在存储库中。
我们的存储库针对
development
、staging
和 master
环境具有三个阶段,显然这些阶段的属性值各不相同。
例如,
application.properties
文件包含每个阶段的不同值:
开发
app.imagedir=E:\images
app.backupdir = E:\backup
installdir=C:\Program Files\IBM\WebSphere\
舞台
app.imagedir=D:\images
app.backupdir = D:\backup
installdir=C:\IBM\WebSphere\
大师
app.imagedir=C:\images
app.backupdir = C:\backup
installdir=C:\IBM\WebSphere\
我的目标是在所有阶段的存储库中维护统一的
application.properties
文件,但允许在管道运行时覆盖这些值。如何在 Azure DevOps 管道中实现此类行为?
我正在寻找最佳实践或方法来管理这些特定于环境的配置
如果您使用yaml管道,则可以使用管道中的参数来决定变量值。
示例 yaml:
trigger:
- none
pool:
vmImage: windows-latest
parameters:
- name: environment
type: string
displayName: environment value
default: dev
values:
- dev
- staging
- master
variables:
- name: app.imagedir
${{ if eq(parameters.environment, 'dev') }}:
value: "E:\\images"
${{ if eq(parameters.environment, 'staging') }}:
value: "D:\\images"
${{ if eq(parameters.environment, 'master') }}:
value: "C:\\images"
- name: app.backupdir
${{ if eq(parameters.environment, 'dev') }}:
value: "E:\\backup"
${{ if eq(parameters.environment, 'staging') }}:
value: "D:\\backup"
${{ if eq(parameters.environment, 'master') }}:
value: "C:\\backup"
- name: installdir
${{ if eq(parameters.environment, 'dev') }}:
value: "C:\\Program Files\\IBM\\WebSphere\\"
${{ if eq(parameters.environment, 'staging') }}:
value: "C:\\IBM\\WebSphere\\"
${{ if eq(parameters.environment, 'master') }}:
value: "C:\\IBM\\WebSphere\\"
steps:
- script: echo This is ${{ parameters.environment }} environment. app.imagedir is $(app.imagedir). app.backupdir is $(app.backupdir). installdir is $(installdir).
displayName: 'show ${{ parameters.environment }} environment variables'
如果您使用的是经典发布管道,您可以为不同阶段设置不同的变量值。