【问题标题】:Adding a variable in xml file在xml文件中添加变量
【发布时间】:2020-06-16 15:46:09
【问题描述】:
在我的 azure devops“发布到 XL 部署”任务中,我指的是 deployit-manifest.xml 文件,我需要在其中提及文件路径。我的文件名包含每次构建都会更改的 buildid。如何在 deployit-manifest.xml 文件的文件名中动态添加此构建 ID:
<ctep.Application name="/MyApp" file="/MyApp/MyApp-1.0.0.0.ear">
感谢您的帮助
【问题讨论】:
标签:
xml
azure-devops
azure-pipelines
xl-deploy
【解决方案1】:
除了 Krzysztof 提到的Replace Tokens task 之外,您还可以使用其他扩展任务来替换配置文件中的变量。例如RegEx Find & Replace Task 和Magic Chunks task。
当您使用替换标记任务或正则表达式查找和替换任务时。您需要首先在您的管道中定义一个变量来包含您的构建 ID 值(例如 BuildId)。
如果您需要在管道中动态设置 buildid,可以查看here 在脚本中动态设置变量。
然后修改您的 deployit-manifest.xml 以标记 buildid(使用标记前缀 #{ 和后缀 }# 包装)。
<ctep.Application name="/MyApp" file="/MyApp/MyApp-#{BuildId}#.ear">
然后配置如下任务(示例在 Yaml 视图中)。并保持其他设置为默认。
替换令牌任务
- task: qetza.replacetokens.replacetokens-task.replacetokens@3
displayName: 'Replace tokens in **/deployit-manifest.xml'
inputs:
targetFiles: '**/deployit-manifest.xml'
正则表达式查找和替换
- task: knom.regexreplace-task.regex-replace.RegexReplace@3
displayName: 'RegEx Find & Replace'
inputs:
InputSearchPattern: |
**\deployit-manifest.xml
FindRegex: '(#{.*}#)'
ReplaceRegex: '$(BuildId)'
您可以使用上述任一项任务来完成这项工作。
【解决方案2】:
请查看此扩展程序 - token replace。当您将此与每次构建时增加包版本的方式相结合并将其放入变量中时,您将能够更新此文件以包含正确的包名称。