Определение точных версий компонентов артефакта сборки - PullRequest
0 голосов
/ 11 марта 2011

Как я могу настроить процесс сборки на основе Jenkins (используя Artifactory Pro для хранения артефактов) довольно сложного продукта, чтобы можно было легко идентифицировать версию / ревизию каждого из его компонентов?

Некоторые из этих компонентов могли быть созданы из других компонентов (по сути, агрегации), поэтому эти редакции подкомпонентов должны были бы быть идентифицируемыми по очереди.

Я бы предпочел не собирать и не создавать полный (большой) продукт все время, архивируя вместе с ним его источники, вместо этого используя ранее созданные артефакты. Во время разработки у них, скорее всего, будет версия SNAPSHOT, которая будет использоваться некоторое время.

Когда во время тестирования обнаруживается проблема, как я могу отследить ее до точных версий контроля версий каждого из компонентов готового продукта для анализа? Мы не используем SVN для всего, и нет плагина Jenkins для других VCS.


Часть того, что мы делаем, основана на Maven, но решения должны быть достаточно гибкими, чтобы не требовать проекта Maven в Jenkins.

1 Ответ

1 голос
/ 11 марта 2011

Вы можете использовать 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>

Следующий фрагмент будет вызывать плагин buildNumber и использовать другую строку для версии, если не существует рабочей копии SVN. Может быть, это можно заменить на 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>
...