2011-10-14 37 views
28

Chúng tôi có 3 môi trường:Các phương pháp hay nhất của Team City để triển khai nhiều tầng là gì?

  • Phát triển: Đội bóng thành phố triển khai vào đây để Subversion cam kết trên thân cây.
  • Dàn dựng: Chấp nhận của người dùng được thực hiện ở đây, trên các bản dựng là ứng cử viên phát hành.
  • Sản xuất: Khi UAT được thông qua, bộ mã thông báo được triển khai tại đây.

Chúng tôi đang sử dụng Team City và chỉ có cài đặt Tích hợp liên tục với môi trường phát triển của chúng tôi. Tôi không muốn lưu các đồ tạo tác cho mọi triển khai phát triển mà Team City thực hiện. Tôi muốn một người được chỉ định có thể kích hoạt cấu hình xây dựng sẽ triển khai một triển khai phát triển thành công nhất định cho máy chủ dàn dựng của chúng tôi.

Sau đó, tôi muốn mỗi triển khai dàn dựng để lưu các tạo phẩm. Khi triển khai dàn dựng vượt qua UAT, tôi muốn triển khai gói đó thành Sản xuất.

Tôi không chắc chắn cách thiết lập điều này trong Thành phố nhóm. Tôi đang sử dụng phiên bản 6.5.4 và tôi biết rằng có một hành động/kích hoạt "Quảng cáo ...", nhưng tôi nghĩ nó phụ thuộc vào các tạo phẩm đã lưu. Tôi không muốn lưu các triển khai phát triển mỗi lần như các tạo phẩm, nhưng tôi muốn người đó chạy triển khai dàn dựng để có thể chỉ định triển khai phát triển thành công nào để triển khai dàn dựng.

Tôi biết có thể có nhiều cách để thực hiện việc này, có cách nào hay nhất không? Thiết lập của bạn là gì và tại sao bạn giới thiệu nó?

Cập nhật:

Tôi có một câu trả lời cho đến nay, và đó là một ý tưởng chúng tôi đã xem xét trong nội bộ. Tôi thực sự muốn biết liệu có ai có cách tự động hóa để triển khai một môi trường dàn dựng/sản xuất thông qua Team City, chỉ những người có vai trò/quyền nhất định mới có thể chạy kịch bản triển khai để sản xuất thay vì phải xử lý thủ công loại gói tạo tác. Bất kỳ ai?

Cập nhật 2

tôi vẫn có 1 ngày để săn tiền thưởng giải thưởng, và tôi nghĩ câu trả lời dưới đây không trả lời câu hỏi của tôi, nhưng sau khi đọc lại nó tôi thấy rằng câu hỏi của tôi không phải là những gì tôi nghĩ nó là.

Có cách nào để sử dụng Team City cho một số loại triển khai tự động cho môi trường Dàn dựng/Sản xuất không?

+0

Một chút trễ ở đây nhưng, có vẻ như bạn thực sự được hưởng lợi từ một chuỗi công cụ [DevOps được xác định] (https://en.wikipedia.org/wiki/DevOps_toolchain) và chắc chắn là một công cụ tự động phát hành ứng dụng. Điều này đang trở thành các công cụ sử dụng tiêu chuẩn như TeamCity of CI và liên kết với các công cụ ARA để phối hợp và triển khai. https://en.wikipedia.org/wiki/Application_release_automation –

Trả lời

15

Tôi nghĩ bạn đang thực sự đặt hai câu hỏi khác nhau tại đây; một là về kiểm soát quyền truy cập để xây dựng TeamCity và một là về hậu cần của quản lý tạo tác.


quyền Về, tôi giả sử những gì bạn có ý nghĩa bởi "chỉ những người có vai trò nhất định/giấy phép có thể chạy một kịch bản triển khai để sản xuất" và phản ứng của bạn để Julien là bạn có lẽ không muốn devs triển khai trực tiếp cho sản xuất nhưng bạn làm muốn họ có thể xem các bản dựng khác trong dự án. Điều này có thể cũng tương tự như kịch bản của Julien khi IT thực hiện quá trình "offline" từ TeamCity (hoặc chỉ là IT làm những gì IT làm và nhấn mạnh họ phải sử dụng một quá trình riêng biệt, hoàn toàn không hiệu quả vì "đó chỉ là cách chúng ta làm "- không làm cho tôi bắt đầu trên đó)

vấn đề chỉ đơn giản là tất cả các quyền trong TeamCity được áp dụng đối với các dự án và không bao giờ là build vì vậy nếu bạn đã có một dự án với tất cả xây dựng của bạn! , không có khả năng áp dụng mức độ chi tiết quyền đối với dev so với các bản dựng sản phẩm. Trước đây tôi đã xử lý vấn đề này theo hai cách:

  1. Xử lý nó một cách xã hội. Mọi người đều biết trách nhiệm của họ là gì và bạn không chạy những gì bạn không có ý định chạy. Nếu bạn làm như vậy, nó được kiểm tra và truy nguyên lại cho bạn. Làm việc tốt khi có sự trưởng thành, ý tưởng rõ ràng về trách nhiệm và không phải là yêu cầu tuân thủ nghiêm cấm.
  2. Tạo các dự án riêng biệt. Tôi không thích phải làm điều này nhưng nó không khắc phục sự cố. Bạn vẫn có thể sử dụng các tạo tác từ một dự án khác và có nghĩa là bạn chỉ cần kết thúc với một dự án có chứa các bản dựng triển khai cho các môi trường mà bạn hài lòng với tất cả các dev để truy cập và một dự án khác đến các môi trường nhạy cảm. Nhược điểm là nếu việc xây dựng sản xuất thất bại, những người bạn có thể muốn hỗ trợ từ sẽ không thể truy cập nó!

Về quản lý vật, không có vấn đề với giữ lại những trong việc phát triển xây dựng, chỉ cần xác định một chính sách dọn dẹp mà chỉ giữ hiện vật từ X cuối cùng xây dựng nếu bạn đang lo lắng về năng lực. Rất nhiều người muốn chắc chắn họ đang triển khai cùng một đầu ra được biên dịch cho mọi môi trường có nghĩa là khi bạn xây dựng nó, bạn muốn giữ nó xung quanh để sử dụng sau này.

Khi bạn có các đồ tạo tác này từ triển khai nhà phát triển, bạn có thể triển khai lại chúng đến các môi trường khác của bạn thông qua các bản dựng riêng biệt.Bạn sẽ gặp vấn đề với việc chuyển đổi cấu hình (giả sử bạn đang sử dụng chúng), nhưng hãy đọc số this 2 part series để biết một số ý tưởng về cách giải quyết vấn đề đó (tôi chưa hấp thụ chi tiết nhưng tôi tin rằng anh ấy đang đi đúng hướng)).

Điều đó có trả lời câu hỏi của bạn không? Có điều gì vẫn còn thiếu?

+0

Cảm ơn bạn đã có câu trả lời tuyệt vời. Tôi rất rõ ràng về quyền hạn. Tôi sẽ phải đọc rằng 2 phần loạt bạn liên kết đến liên quan đến các biến đổi cấu hình. Thật không may, hiện tại chúng tôi có rất ít dự án .NET 4.0. Hầu hết các ứng dụng của chúng tôi là 2.0 framework, và chúng tôi đang dựa vào rất mỏng manh và may mắn "Don't copy over web.config" để quản lý các tập tin cấu hình. Do đó, tôi chỉ có một đơn giản NAnt (vì nó có vẻ dễ dàng hơn MSBuild cho tôi) kịch bản để xóa các tập tin cũ và sao chép hơn với những cái mới, ngoại trừ web.config. – JustinP8

+0

Hãy nhớ rằng bạn vẫn có thể giữ cho các dự án của bạn trong .NET 2 * và * sử dụng các biến đổi cấu hình, bạn chỉ cần có Visual Studio 2010. Đó có thể là nền tảng trung gian tốt nhất của bạn. –

+0

Thú vị ... Chúng tôi có chúng chạy trong một giải pháp 2010 bây giờ, nhưng đối với một số lý do tôi không thể tìm ra cách để có được các biến đổi cấu hình làm việc. Tôi nghĩ đó là vì nó đang chạy trong 2.0 Framework, không phải 4.0. – JustinP8

8

Chúng tôi cũng sử dụng TeamCity làm máy chủ xây dựng của chúng tôi vì vậy hãy để tôi giải thích về thiết lập của chúng tôi. Chúng tôi có 4 môi trường

  • phát triển được sử dụng bởi Dev để xác minh cam kết trong một môi trường máy chủ
  • QA cho mục đích thử nghiệm
  • Staging để kiểm tra việc triển khai và một số UAT
  • Sản

Chúng tôi chỉ sử dụng TeamCity để triển khai cho Phát triển (Xây dựng ban đêm) và QA (theo yêu cầu). Dev build sử dụng nhánh trunk và QA build sử dụng một nhánh khác được sử dụng cho RC.

Triển khai cho dàn dựng và sản xuất do nhóm CNTT quản lý và do đó không được tự động hóa.

Điều chúng tôi làm thay vào đó là chúng tôi sử dụng TeamCity để tạo ra các tạo phẩm từ bản dựng QA. Các tạo tác là các bộ triển khai được gửi để triển khai dàn dựng/sản xuất.

Điều đó nói rằng, tôi không chắc liệu TeamCity có cung cấp cho bạn quyền kiểm soát hoàn toàn mà xây dựng có thể được quảng bá cho môi trường nào không. Về cơ bản chúng tôi kiểm soát điều này ở phía SVN với các chi nhánh và có các bản dựng khác nhau cho các nhánh đó. Bạn có thể (nên) có thể quản lý nó theo cùng một cách. Do đó, bạn có thể đảm bảo những gì đang được triển khai.

Tôi hiểu rằng nhu cầu của bạn có thể hơi khác so với chúng tôi nhưng tôi hy vọng điều này sẽ giúp bạn tìm được thiết lập tốt nhất.

+1

Đồng nghiệp của tôi và tôi đã thảo luận bằng cách sử dụng một nhánh QA, và sau đó nó sẽ có ý nghĩa để xử lý triển khai dàn dựng/sản xuất với các tạo phẩm. Tôi vẫn thực sự muốn chỉ có thể cung cấp cho một nhóm người nhất định quyền chạy một bản dựng để triển khai sản xuất, theo cách đó chúng tôi có một lịch sử tốt về triển khai sản xuất như một bản ghi bên trong Team City. Ý nghĩ của tất cả việc sáp nhập trong Subversion đã khiến tôi đau đầu! :) Chúng tôi đang cố gắng chuyển sang DVCS ... điều này sẽ giúp việc thiết lập này trở nên dễ dàng hơn nhiều. – JustinP8

3

Tôi nghĩ bạn có thể muốn xem nội dung nào đó như Octopus Deploy hoặc BuildMaster. Chúng cung cấp một cấu trúc tốt đẹp cho các thực tiễn triển khai mà bạn đang cố gắng tự động hóa. Cả hai công cụ tích hợp với TeamCity độc đáo. Về cơ bản, bạn sẽ tiếp tục sử dụng TeamCity cho CI, và bạn cũng có thể tiếp tục triển khai với môi trường phát triển của mình với TeamCity, nhưng bạn sẽ sử dụng một trong những công cụ triển khai để quảng bá (hiện có) để dàn dựng và sản xuất.

Sửa 2014/02/05 - Cập nhật

Các nhà sản xuất BuildMaster có một tính năng triển khai mới - ProGet Deploy - cho công cụ máy chủ NuGet của họ, ProGet. Nó rất giống với Octopus Deploy, tho mà tôi chưa từng chơi với nó, vì vậy Octopus có thể có một hình ảnh tốt hơn về những phiên bản đã được triển khai cho môi trường nào; Tôi vẫn sử dụng BuildMaster vì tính năng quan trọng đó.

Ngoài ra, tôi hiện đang sử dụng cả TeamCity, BuildMaster và ProGet và tôi không bao giờ muốn quay lại không có bản dựng tự động. Hiện tại, tất cả các ứng dụng của tôi đều được xây dựng và triển khai thông qua BuildMaster. Tất cả các dự án thư viện của tôi đều được xây dựng trong TeamCity và được triển khai cho ProGet. Có thể quản lý các phụ thuộc nội bộ của tôi thông qua cơ sở hạ tầng NuGet là đẹp.

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