2016-09-01 4 views
0

프로젝트에 IVY를 사용하고 있으며 최근에 트렁크 체크인이 수행 될 때마다 다음과 같은 일이 발생하도록 Jenkins 서버를 설정했습니다.스냅 샷 아티팩트 게시 및 아티팩트 게시 우수 사례

  1. 젠킨스 SCM 폴링은 변경 사항을 감지하고 IVY 플러그인에 알립니다.
  2. IVY 플러그인은 변경된 모듈에 대해 ANT 빌드를 트리거하고 다운 스트림 모듈 빌드를 트리거합니다.
  3. 내장 모듈이 다음 1.0-SNAPSHOT으로 버전 중앙 아이비의 repo에 게시 된

트렁크에 각 모듈의 ivy.xml는 REV = "latest.integration"및 ivysettings.xml 파일을 사용하여 종속성을 선언는 해결 등을 선언한다 다음과 같습니다. 이렇게하면 나중에 SNAPSHOTS가 로컬 IVY 저장소로 끌어 내려집니다.

<resolvers> 
    <chain name="chained" returnFirst="true"> 
     <filesystem name="libraries" changingPattern="1.0-SNAPSHOT" changingMatcher="exact" checkmodified="true"> 
      <ivy pattern="${ivy.repo.dir}/[organisation]/[module]/[revision]/ivy.xml"/>   
      <artifact pattern="${ivy.repo.dir}/[organisation]/[module]/[revision]/[artifact].[ext]"/> 
     </filesystem> 
    </chain> 
</resolvers> 

지금이 트렁크에서 개발 동안 잘 작동하지만 나는 우리가 릴리스 아티팩트를 게시 할 수 있도록이 전달을하는 방법에 대한 혼란 스러워요. 프로덕션 환경에서 SNAPSHOTS를 사용하면 안됩니다.

주말에 실행되는 주간 빌드를 구현할지 여부를 생각하고 다음을 수행했습니다.

  1. 젠킨스 작업 영역을 찢어 버립니다.
  2. SVN에서 트렁크를 체크 아웃합니다.
  3. 전체 빌드를 실행하고 모든 단위 테스트를 실행합니다.
  4. 3 개가 ALL 모듈에서 성공적으로 실행되면 버전이 지정된 아티팩트 (예 : -WKYY.1 - IVY repo)를 게시하십시오.

이제 1-4 단계가 올 바르면 IVN.xml 파일에서 올바른 종속성 버전 번호를 확인할 수 있도록 SVN을 태그하고 모든 모듈에 분기를 만듭니다.

답변

0

상황은 다르지만 상황을 설정하는 방법을 공유 할 수 있습니다.

릴리스 빌드를위한 별도의 분기와이 분기를 폴링하고 릴리즈 빌드를 만드는 별도의 작업이 있습니다. 릴리스 프로세스는 마스터 브랜치를 릴리스 브랜치에 병합하는 과정의 일부입니다. 이것은 물론 자동화 될 수 있습니다. 귀하의 경우, 아마 3 단계가 성공하면 그것을 할 수 있습니다.

각 프로젝트마다 스냅 샷 빌드를 처리하는 일련의 작업 ("마스터"추적)과 릴리스 빌드를 처리하는 일련의 작업 ("릴리스"추적)이 있습니다. 작업은 대부분 비슷하지만 다르다.

+0

어떤 시점에서 릴리스 지점을 만들겠습니까? 현재 모든 개발자가 트렁크에 체크인하고 트렁크에서 풀어주는 프로젝트입니다. 릴리즈 브랜치는 결코 생성되지 않습니다 :-( – Juckky

+0

당신이 원하는 것에 달려 있습니다. 빌드와 모든 테스트가 성공할 때마다 릴리즈 브랜치에 합쳐질 수도 있고, 릴리즈 일정에 따라 주기적으로 할 수도 있습니다. 우리는 릴리스가 필요할 때 실패한 빌드를 수정하는 데 필요한 것을 제외하고는 모든 커밋을 금지합니다. 모든 빌드가 괜찮 으면 마스터를 병합하여 모든 repo를 릴리스합니다. – roelvanmeer

+0

또한 릴리스 브랜치를 만들지 않습니다 (각 릴리스마다 별도의 브랜치와 같이). "release"라는 * 하나의 브랜치가 있으며, 코드가 안정적이거나 릴리스가 필요할 때마다 해당 브랜치에 트렁크를 병합합니다 따라서 워크 플로는 트렁크에서 릴리스 할 때와 크게 다르지 않습니다. – roelvanmeer