프로젝트에 IVY를 사용하고 있으며 최근에 트렁크 체크인이 수행 될 때마다 다음과 같은 일이 발생하도록 Jenkins 서버를 설정했습니다.스냅 샷 아티팩트 게시 및 아티팩트 게시 우수 사례
- 젠킨스 SCM 폴링은 변경 사항을 감지하고 IVY 플러그인에 알립니다.
- IVY 플러그인은 변경된 모듈에 대해 ANT 빌드를 트리거하고 다운 스트림 모듈 빌드를 트리거합니다.
- 내장 모듈이 다음 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를 사용하면 안됩니다.
주말에 실행되는 주간 빌드를 구현할지 여부를 생각하고 다음을 수행했습니다.
- 젠킨스 작업 영역을 찢어 버립니다.
- SVN에서 트렁크를 체크 아웃합니다.
- 전체 빌드를 실행하고 모든 단위 테스트를 실행합니다.
- 3 개가 ALL 모듈에서 성공적으로 실행되면 버전이 지정된 아티팩트 (예 : -WKYY.1 - IVY repo)를 게시하십시오.
이제 1-4 단계가 올 바르면 IVN.xml 파일에서 올바른 종속성 버전 번호를 확인할 수 있도록 SVN을 태그하고 모든 모듈에 분기를 만듭니다.
어떤 시점에서 릴리스 지점을 만들겠습니까? 현재 모든 개발자가 트렁크에 체크인하고 트렁크에서 풀어주는 프로젝트입니다. 릴리즈 브랜치는 결코 생성되지 않습니다 :-( – Juckky
당신이 원하는 것에 달려 있습니다. 빌드와 모든 테스트가 성공할 때마다 릴리즈 브랜치에 합쳐질 수도 있고, 릴리즈 일정에 따라 주기적으로 할 수도 있습니다. 우리는 릴리스가 필요할 때 실패한 빌드를 수정하는 데 필요한 것을 제외하고는 모든 커밋을 금지합니다. 모든 빌드가 괜찮 으면 마스터를 병합하여 모든 repo를 릴리스합니다. – roelvanmeer
또한 릴리스 브랜치를 만들지 않습니다 (각 릴리스마다 별도의 브랜치와 같이). "release"라는 * 하나의 브랜치가 있으며, 코드가 안정적이거나 릴리스가 필요할 때마다 해당 브랜치에 트렁크를 병합합니다 따라서 워크 플로는 트렁크에서 릴리스 할 때와 크게 다르지 않습니다. – roelvanmeer