2011-03-11 5 views
0

상당히 복잡한 제품의 Jifkins 기반 빌드 프로세스 (아티팩트 저장을 위해 Artifactory Pro 사용)를 구성하여 각 구성 요소의 버전/개정을 쉽게 식별 할 수있는 방법은 무엇입니까?빌드 아티팩트의 정확한 구성 요소 버전 확인

이러한 구성 요소 중 일부는 다른 구성 요소 (본질적으로 집계)에서 생성되었을 수 있으므로 해당 하위 구성 요소 수정 버전을 차례로 식별 할 수 있어야합니다.

이전에 생성 된 아티팩트를 사용하는 대신 원본과 전체 소스를 항상 보관하고 전체 (대용량) 제품을 빌드하지 않을 것입니다. 개발하는 동안 그들은 잠시 동안 사용되는 SNAPSHOT 버전을 가지고있을 것입니다.

테스트 중에 문제가 발견되면 분석을 위해 완성 된 각 제품 구성 요소의 정확한 소스 제어 개정을 어떻게 추적 할 수 있습니까? SVN을 모든 용도로 사용하지 않으며 다른 VCS 용 Jenkins 플러그인도 없습니다.


우리가하는 일의 일부는 Maven을 기반으로하지만 솔루션은 젠킨스의 Maven 프로젝트를 필요로하지 충분히 유연해야한다.

+0

어떤 종류의 VCS를 사용하고 있습니까? Jenkins는 VCS 용 플러그인이 많이 있습니다. 그리고 SVN (또는 다른 VCS)을 사용하면 어떨까요? 유물을 식별하기 위해 JENKINS ID (작업 ID 등)를 사용할 수 있지만이 정보를 빌드 (Maven)에 저장해야 할 수도 있습니다. – khmarbaise

+0

@khmarbaise 우리는 올해 말에 SVN으로 마이그레이션 할 예정입니다. 현재 소유하고있는 VCS에는 Maven 모듈이 없습니다. 그렇지 않은 경우 SVN이 필요한 대답을 제공하는 것이 좋습니다. –

+0

어떤 VCS입니까? 클리어 케이스? PVCS? – khmarbaise

답변

1

Subversion에서 개정 번호를 얻고이 정보를 MANIFEST 파일에 넣으려면 maven-buildnumber-plugin을 사용할 수 있습니다.

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

Java 기반이 아닌 구성 요소는 무엇입니까? 그 중 일부는 매우 구체적인 형식의 리소스를 생성하며 직접 빌드 정보 (저장소의 메타 데이터)를 직접 포함하지 못하게 할 수 있습니다. –

+0

그러나 이러한 리소스를 어떤 종류로든 패키지해야합니까? – khmarbaise

관련 문제