如何为相当复杂的产品设置基于Jenkins的构建过程(使用Artifactory Pro进行工件存储),以便可以轻松识别每个组件的版本/修订版本?
其中一些组件可能是从其他组件创建的(实质上是聚合),因此需要依次识别这些子组件修订。
我不想一直构建完整的(大型)产品,将其源代码与其一起存档,而是使用以前创建的工件。在开发过程中,他们可能会使用一段时间的SNAPSHOT版本。
在测试期间发现问题时,如何将其追溯到每个已完成产品组件的确切源代码控制修订版以进行分析? 我们不会将SVN用于所有内容,并且其他VCS没有Jenkins插件。
我们所做的一些工作基于Maven,但解决方案应该足够灵活,不需要Jenkins的Maven项目。
答案 0 :(得分:1)
您可以使用maven-buildnumber-plugin从Subversion获取修订号,并将此信息放入MANIFEST文件中。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.3.1</version>
<configuration>
<archive>
<manifest>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
</manifest>
<manifestEntries>
<buildNumber>${buildNumber}</buildNumber>
</manifestEntries>
</archive>
</configuration>
</plugin>
如果不存在SVN工作副本,以下代码段将调用buildNumber插件并为该版本使用不同的字符串。也许这可以被jenkins等的Job_ID取代。
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>buildnumber-maven-plugin</artifactId>
<version>1.0-beta-4</version>
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>create</goal>
</goals>
</execution>
</executions>
<configuration>
<revisionOnScmFailure>git</revisionOnScmFailure>
<doCheck>false</doCheck>
<doUpdate>false</doUpdate>
<getRevisionOnlyOnce>true</getRevisionOnlyOnce>
</configuration>
</plugin>