6

Azure Pipelines 如何指定 IBM Java SDK 8.0 為主要的 JDK 版本

 2 years ago
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 2019 windows-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 Variable 8.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 版本很簡單,基本上就兩個條件:

  1. 指定正確的 JAVA_HOME 環境變數
  2. 設定正確的 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_HOMEPATH 環境變數。

以下是設定的三個步驟:

  1. 下載 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"
    
  2. 解壓縮 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) 目錄。

  3. 設定 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)
    

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK