簡體   English   中英

Azure Devops 管道:訪問 xml 文件中的代理 JAVA_HOME 變量

[英]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 TokensMagic 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM