Q: Как я могу сохранить артефакт в Nexus Repository, используя отличный конвейер? - PullRequest
0 голосов
/ 22 января 2019

Мой вопрос касается сохранения артефактов в хранилище.В частности, я пытаюсь загрузить в артефакты Nexus Repository и выпустить версии после выполнения конвейера сборки для проекта Maven (через Jenkins).

Единственный способ, которым я хочу это сделать, - это простоиспользуя конвейер, написанный на Groovy, чтобы интегрировать его с Jenkins.

Примечание. Я хочу, чтобы номер версии артефакта всегда был одинаковым, а номер версии изменялся динамически (не вручную).

Есть ли вообще команда или код, позволяющий мне это сделать?

Ответы [ 3 ]

0 голосов
/ 22 января 2019

ДОПОЛНИТЕЛЬНОЕ РЕШЕНИЕ, КОТОРОЕ ТАКЖЕ РАБОТАЕТ

Я выполнил его вручную и экспортировал результат вызова Nexus.Результатом была следующая команда.Эту команду нужно вставить в конвейер Дженкинса как код Groovy:

nexusPublisher nexusInstanceId: 'nexus', nexusRepositoryId: 'maven-play-ground', packages: [[$class: 'MavenPackage', mavenAssetList: [[classifier: '', extension: '', filePath: '**PATH_NAME_OF_THE_ARTIFACT**.jar']], mavenCoordinate: [artifactId: '**YOUR_CUSTOM_ARTIFACT_ID**', groupId: 'maven-play-ground', packaging: 'jar', version: '1.0']]], tagName: '**NAME_OF_THE_FILE_IN_THE_REPOSITORY**'    }
  • В поле filePath нам нужно вставить путь и имя файла artifact.jar.
  • В поле artifactId нам нужно вставить пользовательский (в данном случае для моего артефакта) идентификатор артефакта
  • В поле tagName нам нужно вставить собственное имя каталога изнутри NexusРепозиторий

Это решение, которое может быть выполнено автоматически без ручного изменения и редактирования.После того, как мы создали каталог в репозитории Nexus, он будет выполнен без каких-либо проблем и без необходимости изменения номера версии.

Примечание: также нам нужно включить функцию повторного развертывания из репозитория Nexusнастройки.

0 голосов
/ 22 января 2019

Как уже сказал @ hakamairi , не рекомендуется повторно загружать артефакты с той же версией в репозиторий Nexus, Maven построен на идее, что GAV артефакта всегда соответствует уникальному артефакту.

Однако, если вы хотите разрешить повторное развертывание, вам нужно установить политику развертывания репозитория выпусков на «разрешить повторное развертывание», тогда вы можете повторно развернуть ту же версию. Вы не можете сделать это без разрешения на стороне хранилища.

А для развертывания в репозитории Nexus вы можете использовать Плагин Nexus Platform или Nexus Artifact Uploader .

0 голосов
/ 22 января 2019

Вы находитесь на неправильном уровне, это должно произойти в Maven. В pom.xml вам нужно. ( больше здесь )

<distributionManagement>
   <snapshotRepository>
      <id>nexus-snapshots</id>
      <url>http://localhost:8081/nexus/content/repositories/snapshots</url>
   </snapshotRepository>
</distributionManagement>

, а затем в разделе плагинов

<plugin>
   <artifactId>maven-deploy-plugin</artifactId>
   <version>2.8.2</version>
   <executions>
      <execution>
         <id>default-deploy</id>
         <phase>deploy</phase>
         <goals>
            <goal>deploy</goal>
         </goals>
      </execution>
   </executions>
</plugin>

и вы сможете сделать mvn clean deploy из своего конвейера.

EDIT Есть еще один способ с плагином Nexus Artifact Uploader

  nexusArtifactUploader {
    nexusVersion('nexus2')
    protocol('http')
    nexusUrl('localhost:8080/nexus')
    groupId('sp.sd')
    version("2.4.${env.BUILD_NUMBER}")
    repository('NexusArtifactUploader')
    credentialsId('44620c50-1589-4617-a677-7563985e46e1')
    artifact {
        artifactId('nexus-artifact-uploader')
        type('jar')
        classifier('debug')
        file('nexus-artifact-uploader.jar')
    }
    artifact {
        artifactId('nexus-artifact-uploader')
        type('hpi')
        classifier('debug')
        file('nexus-artifact-uploader.hpi')
    }
  }
...