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