0

如何为相当复杂的产品设置基于 Jenkins 的构建过程(使用 Artifactory Pro 进行工件存储),以便可以轻松识别其每个组件的版本/修订?

其中一些组件可能是从其他组件创建的(本质上是一个聚合),因此这些子组件修订需要依次可识别。

我宁愿不一直构建完整的(大型)产品,将其源代码与它一起归档,而是使用以前创建的工件。在开发过程中,他们可能会有一个使用一段时间的 SNAPSHOT 版本。

当在测试期间发现问题时,我如何将其追溯到每个已完成产品组件的确切源代码控制修订版以进行分析?我们不会对所有事情都使用 SVN,并且没有用于其他 VCS 的 Jenkins 插件。


我们所做的一些工作是基于 Maven,但解决方案应该足够灵活,不需要 Jenkins 中的 Maven 项目。

4

1 回答 1

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>
于 2011-03-11T09:10:18.410 回答