归档Jenkins管道工件的最佳实践是什么

时间:2018-11-16 22:35:52

标签: maven jenkins pom.xml nexus artifacts

我看到您可以向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>

但是,詹金斯(Jenkins)也允许您从管道本身中做到这一点

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 :(得分:2)

主要区别在于,如果您使用maven,则可以使用mvn deploy从本地计算机手动将工件添加到Nexus。因此,这实际上取决于您要如何创建最终在生产中使用的工件。以我的经验,执行此操作的首选方法是使用Jenkins。使用Jenkins的优点是,您可以将新版本的构建链接到其他活动,并且可以在满足某些条件时触发发布,而不是手动启动构建。此外,最终所有版本都建立在同一平台上,并且如果每个开发人员都从自己的计算机上构建此类版本,则可以避免计算机之间的差异。

但是您可能仍然需要maven配置。 Jenkins可能会使用此信息来找到将工件上载到的URL(您的示例中没有关于Jenkins如何找到Nexus的信息),有时上载SNAPSHOT版本或其他一些非生产用的临时版本很有用。在您的示例中,您仅为上载SNAPSHOT版本定义了Nexus,我想这样做是为了强制执行禁止从本地计算机上载最终版本的规则。

顺便说一句,在您的pom.xml中定义存储库并不能自动意味着将上传任何内容。仅当您对pom中定义的存储库执行mvn deploy时,某些内容才会被上传。