5

Điều tôi đang tìm kiếm là có CI và một bản dựng tự động cho tất cả các nhánh của tôi trong một kho lưu trữ. Tôi muốn mỗi bản dựng của các ứng dụng web này có dự án riêng và được đặt làm thư mục ảo (hoặc tương đương) trên một trang chi nhánh. Điều này sẽ là tuyệt vời để có thể tạo ra một chi nhánh mới và có nó bắt đầu tích hợp liên tục và xây dựng quy trình tự động. Thêm một thư mục ảo mới trong IIS không phải là một vấn đề lớn, tôi ổn với việc này nếu phần còn lại chỉ đặt chính nó vào vị trí.Xây dựng tự động các chi nhánh với SVN

Ví dụ:

http://branch.domain.com/branch101/

http://branch.domain.com/otherBranchName/

Hiện nay, tôi đang sử dụng SVN, Nant và CruiseControl.Net, nhưng tôi mở một máy chủ tích hợp liên tục hoặc xây dựng kịch bản nếu tình huống đòi hỏi nó.

+0

không chắc chắn tôi hiểu câu hỏi - bạn đang tìm kiếm một dự án CC.net mới sẽ được tạo tự động khi bạn chi nhánh mã?- hoặc chỉ là cách tốt nhất để thiết lập ccnet để xây dựng nhiều nhánh - bạn đề cập đến thư mục ảo - chúng ta đang nói về ứng dụng web? – Richard

+0

Có cho cả hai, tôi đã chỉnh sửa câu hỏi để rõ ràng hơn (hy vọng!) –

Trả lời

1

Tôi không hiểu câu hỏi thực sự. Dù sao tôi đề nghị bạn Hudson (http://hudson-ci.org/).

Rất dễ sử dụng. Dễ dàng định cấu hình với các tệp XML. Nó có API từ xa.

+0

+1 cho Hudson. (Hãy cẩn thận, tuy nhiên: Nếu bạn xây dựng trên nhiều nền tảng, Hudson sẽ không tiến hành xây dựng tiếp theo cho đến khi mọi nền tảng được hoàn thành. Điều đó có nghĩa là máy xây dựng/thử nghiệm chậm nhất làm chậm mọi người khác. Ít nhất, đây là trường hợp của năm ngoái khi chúng tôi thử nó.) – sbi

+0

Bạn có chắc chắn không? Đối với nền tảng bạn có nghĩa là công việc hudson? Bởi vì bạn có thể đặt nhiều hơn thì một "Build Executor". Tôi không bao giờ sử dụng nó, nhưng Hudson hỗ trợ chế độ "master/slave" để phân phối các bản dựng. –

+0

@ungarida: Hudson là một trong những công cụ CI hứa hẹn nhất mà chúng tôi đã đánh giá và ISTR rằng chúng tôi đã từ bỏ nó do điều này. Nhưng tôi thậm chí không nhớ "công việc" là gì cho Hudson nữa, vì vậy tôi đoán điều này có nghĩa là không, tôi không chắc chắn. – sbi

1

Tôi không nghĩ bạn muốn gì khi tự động thiết lập các dự án tích hợp liên tục của mình dựa trên phân nhánh. Tuy nhiên, nếu các nhánh của bạn khá chuẩn và không thay đổi mạnh đến mức sẽ dễ dàng viết một kịch bản PowerShell (hoặc bất kỳ kiểu chữ nào mà bạn thích) để thiết lập các dự án mới.

Tôi đặt câu hỏi là cần thiết, khi chúng tôi nhánh trong CC.NET phải mất ít hơn một phút để sao chép các dự án thân cây và tìm kiếm và thay thế các trường cần thiết. Lần duy nhất chúng tôi gặp phải sự cố là khi chúng tôi có các tập lệnh tùy chỉnh được sử dụng trong quá trình xây dựng, nếu chúng tồn tại, chúng tôi cũng cần phải sửa đổi những điều đó nhưng điều đó sẽ xảy ra với bất kỳ hệ thống tích hợp liên tục nào.

3

Điều này có thể được thực hiện, nhưng rất nhiều trong số đó sẽ tùy thuộc vào tập lệnh xây dựng của bạn. Nếu bạn yêu cầu cc.net giám sát thư mục svn cấp cao nhất, ví dụ như bạn có màn hình dự án:

http://myserver.com/svn/project thay vì http://myserver.com/svn/project/trunk. Nếu có bất kỳ thay đổi nào được nhìn thấy trong http://myserver.com/svn/project, nó sẽ khởi chạy một bản dựng.

Bây giờ, phụ thuộc vào kịch bản xây dựng của bạn để xác định nguồn nào đã lỗi thời hoặc nếu có chi nhánh mới để xây dựng. Kịch bản xây dựng sẽ tạo một VDir mới cho bất kỳ nhánh mới nào.

Một tùy chọn khác sẽ là có một dự án cc.net được thiết kế để không làm gì ngoài việc thêm dự án mới vào cc.net của bạn. (Gọi nó là dự án BranchBuilder) Tôi sẽ tận dụng bộ xử lý trước trong cc.net và có một tệp .config cấp cao nhất chỉ bao gồm dự án cho thân cây và mỗi nhánh. Dự án xây dựng nhánh sẽ đơn độc đường dẫn gốc trên svn. Nếu thấy bất kỳ thay đổi nào, nó sẽ xem xét xem có bất kỳ chi nhánh mới nào kể từ lần xây dựng cuối cùng không. Nếu có, nó có thể tạo một tệp ccnet-branchname.config cho nhánh đó, tạo tệp vdir và sau đó cập nhật tệp gốc ccnet.config với một bổ sung bao gồm.

Sau khi cấu hình CCnet đã được cập nhật cc.net sẽ nhận ra tệp cấu hình đã được sửa đổi và tải lại cấu hình thêm dự án nhánh mới của bạn. Dự án nhánh đó sẽ bắt đầu chạy và xây dựng nhánh mới của bạn.

+0

Đây là ý kiến ​​thực sự tồi tệ của tôi. Tôi nghĩ bạn đang tự động hóa quá nhiều. Có bao nhiêu rắc rối khi có thể thêm khối vào tệp ccnet.config so với giải pháp này? –

+1

Chúng tôi cũng làm điều đó bằng tay. Chỉ vì bạn có thể làm một điều, không có nghĩa là bạn nên làm. Tuy nhiên, nó sẽ thực hiện việc xây dựng tự động cho tính năng nhánh mà OP yêu cầu. Điều đó nói rằng, tôi không biết họ thường xuyên chi nhánh đến mức nào. Nó có thể là hàng chục lần một ngày. Máy tính được thiết kế để thực hiện các tác vụ lặp đi lặp lại, đúng không? – PilotBob

+1

@JoshKodroff Tôi nghĩ rằng đó là vấn đề quan điểm, phân nhánh "đắt tiền" là một lý do tại sao rất nhiều sự phát triển bị blobbed cùng nhau trong một dòng (tăng nguy cơ). Việc phải đăng nhập vào một máy để cấu hình lại quá trình xây dựng có vẻ như nó làm tăng thêm chi phí đáng kể cho phân nhánh. –

Các vấn đề liên quan