我正在尝试将Artifactory集成到我的Jenkins管道中,以便将Maven工件推送到Artifactory。
我目前的理解是,我应该在Maven的deploy
生命周期中使用Jenkins管道而不是通过Maven插件部署构建的Maven工件。
根据我到目前为止阅读的文档,我认为我需要在我的管道中使用与此类似的代码:
stage('Build') {
steps {
/** Start a docker container with maven and run mvn clean install */
}
}
stage ('Deploy to Artifactory') {
steps {
script {
def server = Artifactory.server 'my-server-id'
def rtMaven = Artifactory.newMavenBuild()
rtMaven.deployer.addProperty("status", "in-qa")
buildInfo = rtMaven.run pom: 'pom.xml', goals: 'clean install'
server.publishBuildInfo buildInfo
}
}
}
但是,我无法完全理解这是做什么的,我无法找到更详细的文档,除了this JFrog blog entry和this JFrog Confluence page。
特别是似乎如果我为run指令指定目标,它将再次运行Maven Pipeline,由于管道已经在第一阶段运行(例如' Build'),因此不会有太大作用。
另外我应该注意,我在docker容器中运行maven构建,所以看起来使用上面的设置对我来说还不够。
有最佳做法可以解决这个问题吗?
我正在寻找的是一种收集我在Docker容器中使用maven构建的工件的方法,并将它们上传到Artifactory而不再运行maven。