[英]Azure Devops Pipeline : Accessing agent JAVA_HOME variable in xml file
對於我的 java 項目,我正在使用 azure devops 管道進行構建。 為了配置 jdkhome 路徑,我將其放在項目根文件夾中的工具鏈 xml 文件中:
<toolchain>
<type>jdk</type>
<provides>
<version>1.8</version>
<vendor>oracle</vendor>
</provides>
<configuration>
<!--<jdkHome>/usr/lib/jvm/zulu-8-azure-amd64</jdkHome>-->
</configuration>
</toolchain>
但是 azure devops 代理已經更新了他們的 jdk 並且它失敗了我的構建。 所以,現在我不想硬編碼,而是想從代理中選擇路徑。 我看到在代理上,環境變量設置為 $JAVA_HOME_8_X64 並分配了路徑。
那么,我如何在我的管道天氣中使用這個環境變量,在工具鏈 xml 文件中或以其他方式引用它?
我嘗試直接參考xml,但沒有用。 我還嘗試從市場添加一些任務,但沒有成功。 有人可以幫我弄這個嗎?
我們可以使用擴展Replace Tokens或Magic Chunks來更新 pom.xml 文件。
pom.xml 內容:
<toolchain>
<type>jdk</type>
<provides>
<version>1.8</version>
<vendor>oracle</vendor>
</provides>
<configuration>
<jdkHome>JAVAHOME</jdkHome>
</configuration>
</toolchain>
步:
一個。 創建構建流水線A,打開構建流水線A,添加新變量JAVAHOME,並賦予測試構建服務(xxx)賬號編輯構建流水線權限。 (打開構建管道(A)-->...--> 安全--> 編輯構建管道設置為允許)
灣。 啟用功能允許腳本訪問 OAuth 令牌(單擊代理作業名稱=>其他選項)添加任務 powershell(更新 JAVAHOME 值)並輸入下面的腳本。
$url = "$($env:SYSTEM_TEAMFOUNDATIONSERVERURI)$env:SYSTEM_TEAMPROJECTID/_apis/build/definitions/{build pipeline A definition ID}?api-version=5.1"
Write-Host "URL: $url"
$pipeline = Invoke-RestMethod -Uri $url -Headers @{
Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"
}
Write-Host "Pipeline = $($pipeline | ConvertTo-Json -Depth 100)"
# Update an existing variable named JAVAHOME to its new value JAVA_HOME_11_X64
$pipeline.variables.JAVAHOME.value= $($env:JAVA_HOME_11_X64)
# my sample is get the variable JAVA_HOME_11_X64, please update it to JAVA_HOME_8_X64
####****************** update the modified object **************************
$json = $($pipeline | ConvertTo-Json -Depth 100)
$updatedef = Invoke-RestMethod -Uri $url -Method Put -Body $json -ContentType "application/json" -Headers @{Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"}
write-host "=========================================================="
Write-host "The value of Varialbe 'JAVAHOME' is updated to" $updatedef.variables.JAVAHOME.value
write-host "=========================================================="
c 。 添加任務 Replace Tokens 並配置任務。
d . 添加任務 powershell 並使用代碼$ourfilesdata = Get-Content "pom.xml"
Write-Output $ourfilesdata
到 output 文件內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.