VCS中的並行開發/分支如何影響構建工件庫設置併發布到QA?並行開發分支,構建Artifact存儲庫和QA版本
在我們公司,我們分支我們的VCS進行並行開發,並且我們通常沒有太多警告哪個分支將以何種順序發貨。
對於版本編號,我想放置一個分支標識符來顯示QA構建來自哪個分支。任何從樹幹建立將有它無分支標識符的「正常」的版本號:
trunk: 1.1.0
branch: 1.1.0.MyBranch
branch: 1.1.0.AnotherBranch
原本我以爲有每個分支一個生成神器庫,併爲主幹一個主存儲庫。
但是,如果我的版本編號包含分支,那麼產品的版本號將是錯誤的(如果我正在從分支構建和釋放)。
解決此問題的方法是僅從主幹中釋放?
此外,我應該在什麼時間開始發貨,而不是從分行建立QA團隊?
我目前的想法是說服管理層將一個開發團隊分配到一個發佈命令(比如發佈一週的時間)並將他們的分支合併到主幹。然後QA開始獲取主幹構建而不是分支構建,並且已合併分支的開發團隊將任何錯誤直接固定在主幹中,而不是分支中。
* UPDATE *
更具體地說,我使用SVN的VCS和Artifactory的爲我的倉庫。我正在使用Ivy進行依賴管理。
放眼於倉庫佈局的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'"
這和Maven和常春藤的默認佈局建議,我認爲這是比較常見的:
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中正確的分支文件夾?
*更新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)
- 我怎麼一點在常春藤在構建時特定回購?對於發行版,我只需要從發行版回購中提取二進制文件。對於快照構建,如果它們出現在快照回購中,我可以將二進制文件拉出來,如果它們丟失了,我可以將它們從發佈回購中提取出來。我知道如何鏈接庫,我只是不明白如何切換它們。
在我的IvySettings。xml文件我有:
<settings defaultResolver="defaultresolvechain"/>
..但我不想缺省。我想指定當我調用Ivy解析命令時解析器的哪個鏈。這樣的事情:
<ivy:resolve transitive="false" resolveMode="snapshot-resolve" conf="compile,test"/>
這是錯誤的方式來切換我需要解決的回購協議?
發佈任務有一個「解析器」屬性,它以類似的方式完美地適用於我。
此外,在我的具體示例中,我可能有多個SVN分支對應多個Artifactory快照回購。我可以參數化我解決哪種回購方式的方式嗎?或者是將所有分支的快照放到一個回購中並使用常春藤分支功能的更正確方法?
請讓我知道,如果你需要任何其他信息來協助。