Какова лучшая практика для архивирования артефактов конвейера Jenkins? - PullRequest
0 голосов
/ 17 ноября 2018

Я вижу, что вы можете добавить цель в Maven Pom для архивации артефактов в диспетчере репозитория, таких как nexus

https://www.baeldung.com/maven-deploy-nexus

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

Но Дженкинс также позволяет вам делатьэто из самого конвейера

https://wiki.jenkins.io/plugins/servlet/mobile?contentId=96076078#content/view/96076078

freeStyleJob('NexusArtifactUploaderJob') {
    steps {
      nexusArtifactUploader {
        nexusVersion('nexus2')
        protocol('http')
        nexusUrl('localhost:8080/nexus')
        groupId('sp.sd')
        version('2.4')
        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')
        }
      }
    }
}

В чем разница между двумя подходами, чаще используется один?

1 Ответ

0 голосов
/ 17 ноября 2018

Основное отличие заключается в том, что если вы используете maven, вы можете вручную добавить артефакты в Nexus с локального компьютера, используя mvn deploy.Так что все сводится к тому, как вы хотите создавать артефакты, которые в конечном итоге будут использоваться в производстве.По моему опыту, предпочтительный способ сделать это с помощью Jenkins.Преимущество использования Jenkins заключается в том, что вы связываете сборки новой версии с другими действиями, а также можете запускать выпуск при выполнении определенных условий, а не запускать сборку вручную.Кроме того, вы получаете все версии на одной платформе и избегаете различий между компьютерами, если каждый разработчик создает такие версии со своего компьютера.

Но вам все равно может понадобиться конфигурация maven.Дженкинс может использовать эту информацию, чтобы найти URL-адрес для загрузки артефакта (ваш пример ничего не говорит о том, как Дженкинс находит Nexus), и иногда бывает полезно загрузить SNAPSHOT-версию или какую-либо другую временную версию, не предназначенную для производства.В вашем примере вы определяете Nexus только для загрузки SNAPSHOT-версий, я полагаю, что это сделано с целью обеспечить соблюдение правила, согласно которому загрузка окончательной версии с локальных компьютеров запрещена.

Кстати, в вашем хранилище определено хранилище.pom.xml не означает автоматически, что что-либо будет загружено.Только если вы делаете mvn deploy с репозиторием, определенным в вашем pom, что-то будет загружено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...