Опубликовать Jar проекта как артефакты maven в Jfrog Artifactory с использованием декларативного конвейера

#maven #jenkins #jenkins-pipeline #artifactory #jenkins-declarative-pipeline

#maven #дженкинс #дженкинс-трубопровод #артефакторный #дженкинс-декларативный-конвейер

Вопрос:

Я работаю над декларативным сценарием конвейера Дженкинса для создания и публикации артефакта в JFrog Artifactory.
У нас есть только один репозиторий проектов, и сервисы находятся в папке services. Все сервисы имеют свои собственные pom.xml .Нам нужно написать сценарий для сценария конвейера, чтобы создавать и публиковать артефакт в JFrog только при обнаружении изменений в структуре отдельных каталогов сервисов.
В соответствии с клиентом, у нас не может быть отдельного репозитория для каждой службы. Проблема здесь, с приведенным ниже скриптом (с использованием rtUpload) Я не могу опубликовать артефакты как артефакт maven (идентификатор группы, идентификатор артефакта и номер версии) в 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. Вы пытаетесь использовать maven deploy вместо rtUpload ?

Ответ №1:

Я бы рекомендовал использовать задания на основе Maven, как указано в вики, и протестировать их. Поскольку вы пытаетесь выполнить сборку с использованием клиента «mvn» и развертывание в Artifactory с использованием rtUpload, я сомневаюсь, что это правильно или нет. Вы либо сначала пробуете использовать mvn deploy, либо настраиваете свой конвейер с помощью того, который упоминается в вики выше.

Образец файла Jenkins для декларативного скрипта можно найти на Github этого JFrog. Вероятно, использование rtMavenRun должно быть полезным при создании и развертывании файла.