gpt4 book ai didi

java - docker 容器内的 Jenkinsfile Maven 插件

转载 作者:行者123 更新时间:2023-12-01 05:52:00 26 4
gpt4 key购买 nike

我将 Jenkins 与 Jenkinsfile 一起使用,该文件在 docker 容器内运行我的构建。我有一个简单的 Java 应用程序,我想使用 Jenkins Artifactory 插件构建并部署到 artifactory。

我的 Jenkinsfile 如下 -

node {
def server = Artifactory.server "my-artifactory"
def rtMaven = Artifactory.newMavenBuild()

stage("Prepare environment"){
docker.image('driv/docker-maven-java-oracle').inside {

checkout scm

stage("Artifactory configuration") {
rtMaven.deployer releaseRepo:'libs-release-local', snapshotRepo:'libs-snapshot-local', server: server
rtMaven.resolver releaseRepo:'libs-release', snapshotRepo:'libs-snapshot', server: server
}

stage("Maven build") {
def buildInfo = rtMaven.run pom: 'pom.xml', goals: 'clean install'
}
}
}
}

但是,当我使用上述 Jenkinsfile 运行构建时,出现错误 -
java.lang.RuntimeException: Couldn't find maven installation

我知道我可以像这样在我的 Jenkinsfile 中添加一行 -
rtMaven.tool = MAVEN_TOOL

...我可以用它来指定一个预配置的 Jenkins 工具来将 Artifactory 插件指向 Maven。然而,在我看来,这样一个预配置的工具必须在 Jenkins 机器或构建节点上,而不是在我的 docker 容器内。

那么,是否可以将 Artifactory 插件指向我的 docker 容器内的 maven 安装?

谢谢。

最佳答案

这可能应该在他们的 jenkins 插件本身中修复,但正如“Christopher Orr”建议将管道阶段级别的环境变量映射到容器工作中设置的相同变量

例如

stage('mystage') {
environment {
// If your using the official maven image, these are probably where it puts it
MAVEN_HOME = '/usr/share/maven'
JAVA_HOME= '/usr/local/openjdk-8'
}
steps {
sh """
# confirm location of MAVEN_HOME and JAVA_HOME in container and set in environment directive
printenv
"""
...
// call rtMavenRun()

关于java - docker 容器内的 Jenkinsfile Maven 插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42903354/

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