azure - 在同一 ADO 构建管道内的脚本中注入 ADO 环境变量
问题描述
我有一个调用代码的用例,它调用一些其他代码,而其他代码需要执行它的 ADO 环境变量(同一个 ADO 管道)
问题是 - 我如何在该代码中注入这些 ADO 管道环境变量?
更多细节::
- 我正在 Dockerizing 一个 Java 应用程序,它从 2 个 entrypoint.sh 文件中获取输入
- 第一个输入文件下载自定义插件
- 第二个输入文件执行插件(在步骤 2 中下载)并在 pom.xml 中插入一个新的 JSON 代码部分
- 插入的 JSON 代码部分使用 ADO 构建变量 $(Build.DefinitionName) & $(Build.SourceBranchName)
- 'mvn package' 然后应该使用更新的 pom.xml(带有 ADO 变量)来构建应用程序
我的 ADO 管道成功完成(docker build 任务正确完成),但 ADO 环境变量没有引入变量的“值”,而是 $(Build.DefinitionName) & $(SourceBranchName) 作为输出。
要插入到 POM.xml 中的 JSON 代码
"createBuildSessionId": true,
"appName": "$(Build.DefinitionName)",
"branchName": "$(Build.SourceBranchName)",
"buildName": "$(Build.BuildNumber)",
"packagesIncluded": "*com.m*.*"
执行 ADO 构建管道后的实际日志:
<configuration>
<createBuildSessionId>true</createBuildSessionId>
<appName>$(Build.DefinitionName)</appName>
<build>$(Build.BuildNumber)</build>
<branch>$(Build.SourceBranchName)</branch>
<packagesincluded>*com.m*.*</packagesincluded>
任何帮助将不胜感激!
解决方案
由于您正在对 Java 应用程序进行 docker 化,您可以尝试以下步骤将管道变量传递给 Pom.xml 文件。
通过 docker ARG 将管道变量导入 dockerfile
在 mvn package 命令中使用导入的变量,并将其作为参数传递给 Pom.xml
mvn package -DmyVariable=someValue
这是我的例子:
Dockerfile
ARG BranchName
ARG BuildNumber
ARG BuildDefinition
ENV BranchName=${BranchName}
ENV BuildNumber = ${BuildNumber}
ENV BuildDefinition = ${BuildDefinition}
RUN mvn package -DBuild.DefinitionName=$BuildDefinition -DBuild.SourceBranchName=$BranchName -DBuild.BuildNumber=$BuildNumber
构建管道
- task: Docker@2
displayName: build
inputs:
containerRegistry: Dockerconnection
command: build
arguments: --build-arg BranchName="$(Build.SourceBranchName)" --build-arg BuildNumber="$(Build.BuildNumber)" --build-arg BuildDefinition="$(Build.DefinitionName)"
json代码
"createBuildSessionId": true,
"appName": "${Build.DefinitionName}",
"branchName": "${Build.SourceBranchName}",
"buildName": "${Build.BuildNumber}",
"packagesIncluded": "*com.m*.*"
推荐阅读
- yup - 是的验证中的对象数组不起作用
- leaflet - 如何使用角度的传单地图将角度90的圆弧放置在半径5公里的圆内以及如何更改圆的颜色
- android - 指定 Kotlin 泛型允许的一组有限类型
- pandas - 数据看起来聚集在一些子图上
- node.js - 将数据从 Firestore 数据库复制到实时数据库
- ruby - 在数字数组中查找非连续元素:Ruby
- html - 如何将超出身体边缘的部分水平对齐到中心?
- spring - 收听通配符地址时如何修复负地址大小?
- google-cloud-platform - 在我的 gcloud shell 上出现“gcloud auth print-identity-token”命令错误
- recursion - IA32 汇编实现中的递归斐波那契