我正在使用Jenkins和Jenkins文件,它在docker容器中运行我的构建。我有一个简单的Java应用程序,我想使用Jenkins Artifactory插件构建和部署到artifactory。
我的Jenkins文件位于 -
之下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
我知道我可以在我的Jenkins文件中添加一行 -
rtMaven.tool = MAVEN_TOOL
...我可以用来指定一个预配置的Jenkins工具来指向Maven的Artifactory插件。但是,在我看来,这样一个预配置的工具必须在Jenkins机器或构建节点上,而不是在我的docker容器内。
那么,是否可以将Artifactory插件指向我的docker容器内的maven安装?
感谢。
答案 0 :(得分:0)
这可能应该在其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()