Azure Pipelines 如何指定 IBM Java SDK 8.0 為主要的 JDK 版本
source link: https://blog.miniasp.com/post/2021/08/23/Azure-Pipelines-using-IBM-Java-SDK-80
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
雖然 Azure Pipelines 提供的 Microsoft-hosted agents 大多已經內建了 Adopt OpenJDK 8.0/11.0/13.0 版本可供選擇,但是我們最近有個案子,客戶指定要用 IBM Java SDK 8.0 為主要的 JDK 版本,所以就需要額外下載與設定才能使用。本篇文章將說明完整的設定方法。
指定 JDK 版本的方法
由於 Azure Pipelines 提供的 Microsoft-hosted agents 已經內建了三個版本的 Adopt OpenJDK,你可以從 Microsoft-hosted agents 頁面得知每一個不同 Agents 的內建軟體清單:
Image Classic Editor Agent Specification YAML VM Image Label Included Software Windows Server 2019 with Visual Studio 2019windows-2019
windows-latest
OR windows-2019
Link
Windows Server 2016 with Visual Studio 2017
vs2017-win2016
vs2017-win2016
Link
Ubuntu 20.04
ubuntu-20.04
ubuntu-latest
OR ubuntu-20.04
Link
Ubuntu 18.04
ubuntu-18.04
ubuntu-18.04
Link
Ubuntu 16.04
ubuntu-16.04
ubuntu-16.04
Link
macOS X Mojave 10.14
macOS-10.14
macOS-10.14
Link
macOS X Catalina 10.15
macOS-10.15
macOS-latest
OR macOS-10.15
Link
單就 Java 相關的軟體,就包含了以下 3 個不同版本的 OpenJDK,也設定好了三個不同的環境變數,讓你可以自由切換:
Version Vendor Environment Variable8.0.302+8
(default)
Adopt OpenJDK
JAVA_HOME_8_X64
11.0.12+7
Adopt OpenJDK
JAVA_HOME_11_X64
13.0.2+8.1
Adopt OpenJDK
JAVA_HOME_13_X64
預設 Microsoft-hosted agents 也會幫你設定好 JAVA_HOME
環境變數,所以預設你的建置環境就會有 Adopt OpenJDK 8.0.302+8
為你主要的 JDK 環境!
我們都知道,更換 JDK 版本很簡單,基本上就兩個條件:
- 指定正確的
JAVA_HOME
環境變數 - 設定正確的
PATH
環境變數可預設指向正確的 Java 工具組路徑
假設我們要在 Pipeline 執行的中間設定這兩個環境變數,你可以有以下 3 種選擇:
-
新增一個 Windows PowerShell 工作 (Windows)
echo '##vso[task.setvariable variable=JAVA_HOME]$(JAVA_HOME_11_X64)' echo '##vso[task.setvariable variable=PATH]$(JAVA_HOME_11_X64)\bin;$(PATH)'
-
新增一個 Command line 工作 (
cmd.exe
on Windows)echo ##vso[task.setvariable variable=JAVA_HOME]$(JAVA_HOME_11_X64) echo ##vso[task.setvariable variable=PATH]$(JAVA_HOME_11_X64)\bin;$(PATH)
注意:千萬不要加上雙引號在
echo
後方的字串,否則路徑會有問題!我被這個細節雷到過!💥 -
新增一個 Command line 工作 (
Bash
on Linux/macOS)echo '##vso[task.setvariable variable=JAVA_HOME]$(JAVA_HOME_11_X64)' echo '##vso[task.setvariable variable=PATH]$(JAVA_HOME_11_X64)\bin;$(PATH)'
指定 IBM Java SDK 8.0 版本的方法
要在 Microsoft-hosted agents 安裝與設定沒有內建的 JDK 版本,就需要每次都下載 JDK 檔案,並設定好 JAVA_HOME
與 PATH
環境變數。
以下是設定的三個步驟:
-
下載 IBM Java SDK 80
我將檔案上傳到與 Azure DevOps 組織相同 地區(Region) 的 Azure 儲存體帳戶 (Storage account),如此一來才能節省頻寬支出,因為 Azure Storage 的流量費用在相同地區內是完全免費的,這點非常重要!🔥
像我的 Azure DevOps 組織就落在
East US 2
這個地區,所以我就特別到 Azure 建立一個也在East US 2
地區的 Storage account!curl.exe -s https://xxxxx.blob.core.windows.net/cicd/ibm_sdk80.zip -o "$(Agent.BuildDirectory)\ibm_sdk80.zip"
-
解壓縮 IBM Java SDK 80 到 $(Agent.BuildDirectory) 目錄下
新增 Extract files 工作,並設定以下參數:
steps: - task: ExtractFiles@1 displayName: '解壓縮 IBM Java SDK 80 到 $(Agent.BuildDirectory)' inputs: archiveFilePatterns: '$(Agent.BuildDirectory)\ibm_sdk80.zip' destinationFolder: '$(Agent.BuildDirectory)' cleanDestinationFolder: false
注意:我的
ibm_sdk80.zip
壓縮檔中的第一層只有ibm_sdk80
一個資料夾,所以解壓縮的時候可以直接輸出到$(Agent.BuildDirectory)
目錄。 -
設定 JAVA_HOME 與 PATH 環境變數
echo ##vso[task.setvariable variable=JAVA_HOME]$(Agent.BuildDirectory)\ibm_sdk80 echo ##vso[task.setvariable variable=PATH]$(Agent.BuildDirectory)\ibm_sdk80\bin;$(PATH)
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK