5

VCS의 병렬 개발/분기가 빌드 아티팩트 저장소 설정 및 QA 출시 방법은 어떻게됩니까?병렬 개발 분기, 아티팩트 저장소 및 QA 릴리즈

우리 회사에서는 병렬 개발 노력을 위해 VCS를 운영하고 있으며 어떤 지점이 어떤 순서로 출하 될지에 대한 경고는 거의하지 않습니다.

버전 번호를 지정하려면 빌드를 가져온 분기를 표시하는 분기 식별자를 배치하고 싶습니다. 모든 그것에 어떤 지점 식별자와 '일반'버전 번호를했을 트렁크에서 빌드 :

trunk: 1.1.0 
branch: 1.1.0.MyBranch 
branch: 1.1.0.AnotherBranch 

원래 나는 지점 당 하나 개의 빌드 유물 저장소, 트렁크에 하나 명의 주 저장소를 가지고 생각했다.

그러나 내 버전 번호 매기기에 분기가 포함되어 있으면 제품에 대한 버전 번호가 잘못 될 수 있습니다 (분기에서 만들고 릴리스하는 경우).

트렁크에서만 해제하는 방법이 있습니까?

또한 지점에서 빌드와는 달리 QA 팀 빌드를 어느 시점에서 트렁크에서 시작해야합니까?

현재 나의 생각은 관리팀에 배포 팀을 할당하고 (출시일로부터 1 주일을 말합니다) 해당 분기를 트렁크에 병합하도록 설득하는 것입니다. 그런 다음 QA는 분기 빌드 대신 트렁크 빌드를 시작하며 분기가 병합 된 개발 팀은 분기가 아닌 트렁크에 직접 버그를 수정합니다.

* UPDATE *

보다 구체적으로는, 내가 VCS에 대한 SVN을 사용하고, 그리고 Artifactory 내 저장소에. 나는 아이비를 의존성 관리에 사용하고 있습니다. 저장소 레이아웃에 Artifactory 도움말 (Repository Layouts)을 보면

:

"a sequence of literals that identifies the base revision part of the artifact 
version, excluding any integration information" 
"'1.5.10', or in case of an integration revision '1.2-SNAPSHOT' the base revision 
    is '1.2'" 

이와 메이븐과 아이비의 기본 레이아웃이 더 일반적이다 나에게 제안 :

MyRepo 
MyLib 
    1.1.0 (this is the dll from trunk) 
    -MyLib.dll 
    1.1.0.MyBranch-SNAPSHOT (dev builds from the "MyBranch" branch) 
    -MyLib.dll 
    1.1.0.AnotherBranch-SNAPSHOT (dev builds from the "AnotherBranch" branch) 
    -MyLib.dll 

이인가 Ivy를 사용하기위한 전형적인 repo 레이아웃은 무엇입니까? 나는 아이오의 분기 기능을 사용하여 빌드 시점에 의존성을 repo의 정확한 분기 폴더로 해결해야한다고 생각하겠습니까?

* UPDATE 여기에 2 *

내 현재 Artifactory 구조입니다 :

MySnapshotRepo 
CompanyName 
    CompanyName.MyLib 
    1.0-SNAPSHOT 
    MyLib.dll (snapshot builds from the dev branch) 
MyReleaseRepo 
CompanyName 
    CompanyName.MyLib 
    1.0.0 
    MyLib.dll (release builds from the trunk) 
    1.0.1 
    MyLib.dll (release builds from the trunk) 
    1.0.2 
    MyLib.dll (release builds from the trunk) 
  1. 가 어떻게 빌드시 특정 REPO에 아이비 지점합니까? 릴리즈의 경우 릴리즈 레포 네임에서 바이너리 만 가져와야합니다. 스냅 샷 빌드의 경우, 스냅 샷 저장소에 바이너리가 표시되면 바이너리를 가져올 수 있습니다. 누락 된 경우 릴리스 리포에서 가져올 수 있습니다. 나는 저장소를 연결하는 방법을 이해하고 있으며, 그것들을 전환하는 방법을 이해하지 못하고있다.

내 IvySettings에 있습니다.xml 파일 내가 가지고있는 것 :

<settings defaultResolver="defaultresolvechain"/> 

.. 그러나 나는 기본값을 원하지 않는다. Ivy resolve 명령을 호출 할 때 확인할 해결 자의 체인을 지정하고 싶습니다. 다음과 같은 내용이 있습니다 :

<ivy:resolve transitive="false" resolveMode="snapshot-resolve" conf="compile,test"/> 

해결 방법이 잘못 되었나요?

게시 작업에는 비슷한 방식으로 완벽하게 작동하는 "해결 자"속성이 있습니다.

또한 내 특정 예제에서는 여러 Artifactory 스냅 샷 repos에 해당하는 여러 SVN 분기를 가질 수 있습니다. 어떤 레포지를 해결할 것인지를 매개 변수화 할 수 있습니까? 또는 모든 지점의 스냅 샷을 하나의 저장소에 저장하고 Ivy 분기 기능을 사용하는 올바른 방법입니까?

다른 정보가 필요하면 알려주세요.

답변

0

그래서 릴리스 빌드 및 기능 또는 개발 빌드가 있습니다. 트렁크에서 릴리스 빌드를 얻을 것이며이 기능은 1.1.0 기능 분기를 기반으로 빌드됩니다. 트렁크를 전혀 사용하지 마십시오. 이러한 기능 브랜치의 모든 개발을 완료하십시오. 성숙한 시점에 릴리스의 일부로 포함하기로 결정하면 트렁크에 병합됩니다. 이 시점에서이 코드는 트렁크에서 가져온 QA 빌드에 나타납니다. 해제 할 준비가되면 트렁크에서 브랜치를 분기하면서 다른 기능 브랜치를 계속 작업하고 트렁크에 병합합니다. 그래서 QA 가져

는 트렁크에서 안정성 릴리스 분기를 작성합니다. 한 번에 하나의 릴리스 만 있으면 더 쉽게 단순화 할 수 있으며 실제 출시 시점의 트렁크와 지점 또는 태그에서만 항상 QA를 수행 할 수 있습니다. 이것은 트렁크로가는 개발이 전혀 없다면 가능할 것입니다. 그러나 모든 기능이 브랜치에 있습니다.

경우에 따라 개발 빌드를 품질 관리에 전달해야 할 수 있습니다. 일반적으로 기능 브랜치를 트렁크에 병합하기 전에 아무 것도 해체하지 않았는지 확인하십시오. 사전 병합에 태그를 지정하고 기능 분기를 트렁크에 병합하고이 경우 트렁크에서 QA 빌드를 수행 할 수 있으며 심각한 문제가있는 경우 태그로 되돌릴 수 있습니다. 이 작업이 진행되는 동안 다른 지형지 물 지점에서 병합되는 것을 방지 할 수 있지만 트렁크에 병합이 자주 발생하지 않는 경우이 작업이 가능합니다.

이 방법 당신은 트렁크에서 품질 보증을위한 하나의 설정을 할 수 있습니다 당신은 당신이해야 할 일의 대부분을 관리해야한다.