当前位置: 首页 > 知识库问答 >
问题:

使用声明管道将项目Jar作为maven工件发布到JFrog ArtiFactory

壤驷涛
2023-03-14

我正在编写一个声明性Jenkins管道脚本,以构建工件并将其发布到JFrog Artifactory
我们只有一个项目存储库,服务位于services文件夹下。所有服务都有自己的pom。xml。我们需要编写一个脚本到管道脚本,只有在服务的单个目录结构中检测到更改时,才能构建工件并将其发布到JFrog
根据客户要求,我们不能为每项服务设置单独的存储库。这里的问题是,使用下面的脚本(使用rtUpload),我无法将工件作为maven工件(组id、工件id和版本号)发布到artifactory。请求你帮忙。

项目结构如下。

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
     } 
   }
}

共有1个答案

何松
2023-03-14

我建议使用wiki中提到的基于Maven的作业并进行测试。当您尝试使用“mvn”客户端构建并使用rtUpload部署到ArtiFactory时,我怀疑这是否正确。您要么先尝试使用mvn部署,要么使用上面wiki中提到的管道设置。

声明性脚本的示例JenkinsFile可以在这个JFrog的Github下找到。使用rtMavenRun可能有助于构建和部署文件。

 类似资料:
  • 我想在Azure运营模式管道的帮助下,使用maven将我的自定义工件/包(*. jar)推送到Azure工件。我正在使用java 我可以通过Azure管道中的以下脚本/命令来执行此操作。 我想知道这是否可以由任何Azure管道任务完成,如“-task:Maven@3“因为Azure DevOps为npm、Gradel、Python等提供发布任务,但不为maven提供。

  • 首先-我知道,根据官方MS文档,通过部署控制更新具有发布状态的工作项的内置功能仅在发布管道中受支持,而在多阶段YAML管道中不受支持(请参阅此处记录的第一个注释:https://docs.microsoft.com/en-us/azure/devops/boards/work-items/work-item-deployments-control?view=azure-德沃斯) 是否有人使用pow

  • 问题内容: 至于Jenkins中的声明式管道,我在使用 when 关键字 时 遇到了麻烦。 我不断收到错误消息。我对Jenkins 2声明式管道有些陌生,并且我认为我不会将脚本化管道与声明式管道混为一谈。 该管道的目标是在声纳运行成功后运行,并发送失败或成功的邮件通知。我只希望在master或release分支上部署工件。 我遇到困难的部分在 帖子 部分。该 通知 阶段是伟大的工作。请注意,我可以

  • 我已经配置Gradle使用新的Maven Publisher插件发布项目工件,不幸的是,这个插件在生成的中存在依赖关系问题-依赖关系的范围而不是。 我的配置是这样的: 发布很简单,只需一个命令: 如何以旧的(工作)方式实现这一点?项目发布时是否可以自动进行项目标记?

  • 看起来,PublishBuildArtifacts任务在发布环境中不可用。 https://docs.microsoft.com/de-de/azure/devops/pipelines/tasks/utility/publish-pipeline-artifact?view=azure-德沃斯 但是,当我们的客户从Azure存储库(通用软件包)中获取新的工件版本时,有机会通过发布管道发布这些工件

  • 我正在使用Jenkins管道自动构建和部署我的Java应用程序。我还使用maven发布插件来执行maven部署到Artifactory。 问题是我的Jenkinsfile(或Jenkins管道配置): 我们在发布分支上提交版本0.1.00-SNAPSHOT Jenkins管道获取代码,并执行maven发布 Maven版本将版本更改为0.1.00 Maven发布标签GIT分支、提交和部署工件 Mav