gpt4 book ai didi

java - 如何使用 Jenkins 的 groovy 自动安装 Maven 和 Java JDK8?

转载 作者:IT老高 更新时间:2023-10-28 21:23:52 24 4
gpt4 key购买 nike

我正在构建一个 Jenkins Docker 镜像,我希望自动安装 Maven 3 和 Java 8 最后一个 JDK。但不幸的是,我使用这两个 groovy 文件定位到 groovy 文件夹中:

groovy/java.groovy:

import jenkins.model.*
import hudson.model.*
import hudson.tools.*

def inst = Jenkins.getInstance()

def desc = inst.getDescriptor("hudson.model.JDK")

def versions = [ "jdk8": "jdk-8u202"]
def installations = [];

for (v in versions) {
def installer = new JDKInstaller(v.value, true)
def installerProps = new InstallSourceProperty([installer])
def installation = new JDK(v.key, "", [installerProps])
installations.push(installation)
}

desc.setInstallations(installations.toArray(new JDK[0]))

desc.save()

groovy/maven.groovy:

import jenkins.*;
import jenkins.model.*;
import hudson.*;
import hudson.model.*;

mavenName = "maven3"
mavenVersion = "3.6.0"
println("Checking Maven installations...")

// Grab the Maven "task" (which is the plugin handle).
mavenPlugin = Jenkins.instance.getExtensionList(hudson.tasks.Maven.DescriptorImpl.class)[0]

// Check for a matching installation.
maven3Install = mavenPlugin.installations.find {
install -> install.name.equals(mavenName)
}

// If no match was found, add an installation.
if(maven3Install == null) {
println("No Maven install found. Adding...")

newMavenInstall = new hudson.tasks.Maven.MavenInstallation('maven3', null,
[new hudson.tools.InstallSourceProperty([new hudson.tasks.Maven.MavenInstaller(mavenVersion)])]
)

mavenPlugin.installations += newMavenInstall
mavenPlugin.save()

println("Maven install added.")
} else {
println("Maven install found. Done.")
}

然后我运行命令:

docker run -p 8080:8080 -v `pwd`/groovy:/var/jenkins_home/jobs --rm --name jenkinsdocker jenkinsdocker:latest

不幸的是,这会返回一个错误:

java.io.IOException: jenkins.model.InvalidBuildsDir: ${ITEM_ROOTDIR}/builds does not exist and probably cannot be created

我只是想知道 groovy 文件是错误的还是我遗漏了什么?

如何在运行 docker run 时为 Jenkins 自动安装 maven/java?或者有其他方法吗?

最佳答案

我没有找到 jenkinsdocker 镜像,所以我猜是你从 jenkins 生成的一些 docker 镜像。在任何情况下跟随this jenkinsdocker documentation你应该把你的 groovy 脚本放在 init.groovy.d 文件夹中以便在初始化时执行。所以你需要通过 init.groovy.d 运行 docker modifying jobs 并使用 jenkins:latest 图像:

     docker run -p 8080:8080 -v `pwd`/groovy:/var/jenkins_home/init.groovy.d/ --rm --name jenkins jenkins:latest

您还可以创建自己的 Dockerfile(例如,您可以使用 2.60.3 版本),如上例所示:

# Extended from https://github.com/jenkinsci/docker/blob/master/README.md
FROM jenkins/jenkins:2.60.3

# Skip setup wizard
ENV JAVA_OPTS="-Djenkins.install.runSetupWizard=false"

# Add groovy script to Jenkins hook
COPY --chown=jenkins:jenkins groovy/ /var/jenkins_home/init.groovy.d/

构建并运行容器:

docker build jenkinsdocker -t .
docker run -p 8080:8080 --name jenkinsdocker jenkinsdocker:latest

关于java - 如何使用 Jenkins 的 groovy 自动安装 Maven 和 Java JDK8?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55353804/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com