簡體   English   中英

如何使用自定義 JDK 構建 Jenkins 項目?

[英]How can I build Jenkins Projects with a custom JDK?

我有一個運行一些多分支管道的常規 Jenkins 實例。 該實例在 JDK 11 上運行,因為 Jenkins 並不真正支持更高版本。 沒關系。

但不好的是,我所有的管道似乎也因此被限制為 Java 11。 Jenkins 只是使用它自己也使用的 JDK 運行所有構建。 但這並不好。

在這一點上,任何解決方案都可以,但理想情況下我只想擁有兩個單獨的 JDK:JDK 11,用於 Jenkins 本身和另一個 JDK,它自動運行所有構建。

有什么辦法可以做到這一點? 提前致謝 - 埃米爾

您可以將所需的 JDK 與docker 代理一起使用。 有了它,您可以定義一個使用適當的 JDK 或任何圖像的圖像。

例如,在您的情況下,您可以擁有 Jenkins 本身的 JDK 11 以及您在每項工作中想要的 JDK 11。 openjdk 示例:

pipeline {
    agent {
        docker { image 'openjdk:11' }
    }
    stages {
        stage('Test java version') {
            steps {
                sh 'java -version'
            }
        }
    }
}

你可以選擇你想要的標簽來選擇合適的版本。

您只需要在您的 jenkins 實例中設置 docker。

您可能不需要走 docker 代理路線,尤其是您的特定 JDK 沒有圖像。

JENKINS 本身的 JDK

當您運行 Jenkins 時,它會在您指定的 Java 上運行,通常是命令行上可用的(即: java -jar jenkins.war )。

當你啟動一個標准的 linux 代理( SSH Build Agents (aka:ssh-slaves)插件)時,默認代理使用可用的 JDK/JRE啟動。 但是,該插件還允許您指定自定義JavaPath 和運行時選項

以上是可用於代理上運行的作業和步驟的“默認”或“系統”JDK。 請注意,Jenkins 2.x 僅支持Java 8 和 Java 11 Jenkins 2.164.1 支持 Java 11,自8 月發布以來,控制器(master)的 Docker 鏡像默認使用 Java 11,如下所示:

作為 jenkins/jenkins:latest 運行的 Jenkins 2.306 使用 Java 8。當 Jenkins 2.307 或更高版本以 jenkins/jenkins:latest 運行時,它將使用 Java 11

作為 jenkins/jenkins:lts 運行的 Jenkins 2.289.3 使用 Java 8。當 Jenkins 2.303.1 或更高版本以 jenkins/jenkins:lts 運行時,它將使用 Java 11

用於 JENKINS 作業的 JDK

Jenkins 允許多種工具,包括 jdk、NodeJS、Docker、ant、gradle、maven 等版本可用於您的構建。 它們必須在Manage Jenkins → Global Tool Configuration ( ${JENKINS_URL}/configureTools/ ) 下預先配置。

目前缺少 Jenkins “管理工具”文檔管道文檔提供了有限的解釋。 Cloudbees解釋得更多一些。 這個舊的S/O 答案解釋了基礎知識,包括經常被忽視的“ JDK ”[默認(系統)],位於工作的“常規”部分的末尾。

配置全局默認值后,還有一個選項可以覆蓋每個節點級別的各種實例的默認位置,如本S/O 答案中所述。

無論選擇什么選項,都會覆蓋可供您的作業步驟使用的 JAVA_HOME(ANT_HOME、M2_HOME 等)(作業覆蓋節點覆蓋全局)。 對於管道作業,您可以指定使用管道塊或階段塊內的“ 工具”選項,例如:

tools {
    jdk 'jdk1.8' 
}

我們有多個版本 (7/8/11) 的 Oracle JDK、JRockit、OpenJDK Hotspot 和 OpenJ9,並使用節點級工具安裝來覆蓋安裝路徑,例如在 Win 機器上。

還有額外的/自定義的工具安裝程序插件,可將這種靈活的工具管理擴展到其他工具。

為了完整起見,您還可以使用Environment Injector插件覆蓋環境變量,包括用於整個作業或從特定步驟開始的 JAVA_HOME。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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