Phát triển/phân nhánh song song trong hiệu ứng VCS của bạn như thế nào trong việc xây dựng kho lưu trữ và phát hành cho QA?Các nhánh phát triển song song, Xây dựng các kho lưu trữ đồ tạo tác và phát hành QA
Tại công ty chúng tôi, chúng tôi phân nhánh VCS cho các nỗ lực phát triển song song và chúng tôi thường không có nhiều cảnh báo về chi nhánh sẽ giao hàng theo thứ tự nào.
Để đánh số phiên bản, tôi muốn đặt một mã định danh chi nhánh để hiển thị QA nhánh nào xây dựng đến từ đó. Bất kỳ xây dựng từ thân cây sẽ có một số phiên bản 'bình thường' không có nhận dạng chi nhánh trong đó:
trunk: 1.1.0
branch: 1.1.0.MyBranch
branch: 1.1.0.AnotherBranch
Nguyên Tôi nghĩ để có một kho vật build mỗi chi nhánh, và một kho lưu trữ chính cho thân cây.
Nhưng nếu số phiên bản của tôi bao gồm chi nhánh, thì số phiên bản sẽ sai đối với sản phẩm (nếu tôi đang xây dựng và phát hành từ chi nhánh).
Cách này chỉ để giải phóng khỏi thân cây?
Ngoài ra, tại thời điểm nào tôi nên bắt đầu giao hàng nhóm QA xây dựng từ thân cây thay vì xây dựng từ chi nhánh?
Ý tưởng hiện tại của tôi là thuyết phục ban quản lý chỉ định một nhóm phát triển cho một lệnh phát hành (nói một tuần từ bản phát hành) và hợp nhất nhánh của họ với thân cây. Sau đó, QA bắt đầu xây dựng thân cây thay vì xây dựng chi nhánh, và nhóm dev có chi nhánh đã được sáp nhập sửa chữa bất kỳ lỗi trực tiếp trong thân cây và không phải là chi nhánh.
* CẬP NHẬT *
Cụ thể hơn, tôi đang sử dụng SVN cho VCS, và Artifactory cho kho của tôi. Tôi đang sử dụng Ivy để quản lý sự phụ thuộc.
Nhìn vào sự giúp đỡ Artifactory trên Repository Layouts (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'"
này và bố trí mặc định cho Maven và Ivy gợi ý với tôi rằng đây là phổ biến hơn:
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
Đây có phải là cách bố trí repo điển hình cho việc sử dụng Ivy? Tôi sẽ giả định rằng điều này sẽ yêu cầu sử dụng tính năng chi nhánh của Ivy để giải quyết các phụ thuộc vào thời gian xây dựng vào thư mục nhánh chính xác trong repo?
* CẬP NHẬT 2 *
Dưới đây là cấu trúc Artifactory hiện tại của tôi:
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)
- Làm thế nào để chỉ Ivy tại một repo cụ thể tại thời gian xây dựng? Để phát hành, tôi chỉ cần kéo các tệp nhị phân từ repo phát hành. Đối với một bản dựng snapshot, tôi có thể kéo các tập tin nhị phân nếu chúng hiển thị trong repo snapshot, nếu chúng bị thiếu, tôi có thể kéo chúng từ repo phát hành. Tôi hiểu làm thế nào để chuỗi kho, tôi chỉ không hiểu làm thế nào để chuyển đổi chúng.
Trong IvySettings của tôi.tệp xml tôi có:
<settings defaultResolver="defaultresolvechain"/>
.. nhưng tôi không muốn mặc định. Tôi muốn chỉ định chuỗi giải quyết nào cần giải quyết khi tôi gọi lệnh giải quyết Ivy. Một cái gì đó như thế này:
<ivy:resolve transitive="false" resolveMode="snapshot-resolve" conf="compile,test"/>
Đây có phải là cách sai để chuyển repos mà tôi cần phải giải quyết không?
Tác vụ xuất bản có thuộc tính "trình phân giải" hoạt động hoàn hảo cho tôi theo cách tương tự.
Ngoài ra, trong ví dụ cụ thể của tôi, tôi có thể có nhiều chi nhánh SVN tương ứng với nhiều bản sao lưu ảnh chụp nhanh. Tôi có thể tham số hóa cách tôi giải quyết cho bản repos nào không? Hoặc là cách chính xác hơn để đặt ảnh chụp nhanh từ tất cả các chi nhánh vào một repo, và sử dụng tính năng chi nhánh Ivy?
Vui lòng cho tôi biết nếu bạn cần bất kỳ thông tin nào khác để hỗ trợ.