使用声明性管道将项目 Jar 作为 maven 工件发布到 Jfrog Artifactory
Posted
技术标签:
【中文标题】使用声明性管道将项目 Jar 作为 maven 工件发布到 Jfrog Artifactory【英文标题】:Publish project Jar as maven artifacts to Jfrog Artifactory using Declarative Pipeline 【发布时间】:2021-03-01 07:07:47 【问题描述】:我正在开发一个声明性 Jenkins 管道脚本,以构建工件并将其发布到 JFrog Artifactory。 我们只有一个项目存储库,服务位于 services 文件夹下。所有服务都有自己的 pom.xml 。只有在服务的各个目录结构中检测到更改时,我们才需要编写脚本到管道脚本来构建工件并将其发布到 JFrog。 根据客户,我们不能为每个服务拥有单独的存储库。这里的问题是,使用以下脚本(使用 rtUpload)我无法将工件 作为 maven 工件(组 ID、工件 ID 和版本号)发布到工件。请求您的帮助。
项目结构如下。
trinad(repository)
|
|-----/java/services/customer_quote/pom.xml
|
|-----/java/services/customer_rate/pom.xml
|
|-----/java/services/customer_renew/pom.xml
pipeline
agent any
tools
jdk 'JDK'
maven 'Maven'
stages
stage('Build')
when
anyOf
changeset '**/services/customer_quote/**'
steps
sh 'mvn -v'
sh 'mvn -f java/services/customer_quote/pom.xml' clean install
when
anyOf
changeset '**/services/customer_rate/**'
steps
sh 'mvn -v'
sh 'mvn -f java/services/customer_rate/pom.xml' clean install
stage('publish')
when
anyOf
changeset '**/services/customer_quote/**'
steps
rtUpload
serverId:'Artifactory',
spec:'''
"files":[
"pattern":"/services/customer_quote/target/customer-quote-*.jar",
"target": "trinad"/$BUILD_NUMBER/"
]
//publish steps for other services goes here
【问题讨论】:
您是否尝试使用maven deploy
而不是rtUpload
?
【参考方案1】:
我建议使用wiki 中提到的基于 Maven 的作业并对其进行测试。当您尝试使用“mvn”客户端构建并使用 rtUpload 部署到 Artifactory 时,我怀疑这是否正确。您可以先尝试使用 mvn deploy,也可以使用上面 wiki 中提到的管道设置管道。
可在此 JFrog 的Github 下找到声明性脚本的示例 JenkinsFile。可能使用 rtMavenRun 应该有助于构建和部署文件。
【讨论】:
以上是关于使用声明性管道将项目 Jar 作为 maven 工件发布到 Jfrog Artifactory的主要内容,如果未能解决你的问题,请参考以下文章