识别构建工件的确切组件版本

发布于 2024-10-21 17:02:57 字数 388 浏览 8 评论 0原文

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

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

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

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


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

How can I set up a Jenkins based build process (using Artifactory Pro for artifact storage) of a fairly complex product so that the version/revision of each of its components can be easily identified?

Some of these components might have been created from other components (essentially, an aggregation), so those sub-component revisions would need to be identifiable in turn.

I'd rather not build and the complete (large) product all the time, archiving its sources along with it, instead using previously created artifacts. During development, they'd likely have a SNAPSHOT version that is used for a while.

When, during testing, an issue is discovered, how can I trace it back to the exact source control revisions of each of the completed product's components for analysis? We don't use SVN for everything, and there's no Jenkins plugin for the other VCS.


Some of what we do is based on Maven, but solutions should be flexible enough to not require a Maven project in Jenkins.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

情未る 2024-10-28 17:02:57

您可以使用 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>

You can use the maven-buildnumber-plugin to get the revision number from Subversion and put this information into the MANIFEST file.

      <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>

The following snippet will call the buildNumber plugin and use a different string for the version if no SVN working copy exists. May be this can be replaced by the Job_ID of jenkins etc.

  <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>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文