2009-02-06 28 views
12

Tôi đang cố gắng tự động hóa quá trình xây dựng cho nhóm kỹ thuật. Là một phần của tự động hóa đó, tôi đang cố gắng đạt đến điểm mà hành động áp dụng một thẻ cụ thể tuân thủ một mẫu sẽ bắt đầu một quá trình tự động sẽ thực hiện như sau:Tự động hóa các bản dựng từ các thẻ lật đổ

  • Kiểm tra mã nguồn
  • Tạo một xây dựng kịch bản từ một mẫu
  • Xây dựng dự án

tôi khá chắc chắn tôi có thể làm điều này với một hậu móc trong lật đổ, nhưng tôi đang cố gắng tìm ra một cách để làm điều này với một cái gì đó khác hơn là một móc lật đổ.

  • Bạn có nên theo dõi thư mục thẻ trong kho lưu trữ lật đổ để bắt đầu luồng công việc của mình không?
  • Có công cụ nào phù hợp để trợ giúp điều này (.NET sẽ tuyệt vời nếu có thể).
  • Tôi có nên viết một động cơ để làm điều này không?

sở thích của tôi:

  • hiện sản phẩm mà làm tất cả hoặc một phần của việc này
  • Nếu công việc phát triển cần phải xảy ra, .NET là một lợi thế
  • trình với Windows (chúng tôi đã có một Linux dựa trên repo, nhưng xây dựng tất cả xảy ra trên cửa sổ)

Trả lời

5

Tôi thích hudson - DỄ DÀNG thiết lập và hoạt động ngoài hộp với SVN.

Bạn có thể định cấu hình để xây dựng trên mọi cam kết.

Tôi đã tải xuống và bắt đầu xây dựng nó trong vòng một ngày. Nó đã trải qua rất nhiều điều chỉnh, nhưng tôi muốn giới thiệu nó cho bất cứ ai.

Tôi cũng đã sử dụng kiểm soát hành trình nhưng không hài lòng với điều đó. Tôi không có bất kỳ lý do cụ thể nào khác ngoài vấn đề đa nền tảng.

EDIT

thời gian gần đây tôi đã thêm một công việc trên hudson xây dựng máy chủ của tôi là lắng nghe cho một google/gmail Jabber chat. Tôi có thể "quảng cáo" bản dựng "thông thường" cho bản phát hành được xây dựng với cơ chế này. Tôi vừa thiết lập một công việc mới thực hiện các bước cần thiết để quảng cáo/xuất bản một bản xây dựng riêng tư thành một ứng cử viên phát hành.

2

Một sản phẩm thương mại đã được quảng cáo trên trang web này cho mục đích này chính xác!

http://www.finalbuilder.com/Default.aspx?tabid=314

Bạn có thể cần thêm một hậu móc để SVN để kích hoạt việc xây dựng bắt đầu, trừ khi bạn muốn nó được chạy một lịch trình thời gian.

1

Tôi đang sử dụng NAnt (và NAntContrib) để tạo tự động. Nó sẽ tự động kiểm tra một kho lưu trữ subversion cho các thay đổi và (nếu có) sẽ có phiên bản mã nguồn mới nhất và bắt đầu xây dựng.

Tôi không chắc liệu các tác vụ hiện tại có cho phép thực hiện chính xác những gì bạn muốn hay không, nhưng có thể bạn sử dụng nó như là một khởi đầu và nếu được yêu cầu, hãy mở rộng nó với các nhiệm vụ cho các nhu cầu đặc biệt của bạn (Nó được phát triển với .NET).

3

CruiseControl.Net có thể dễ dàng tự động hóa các bản dựng tự động từ kho lưu trữ lật đổ.

Nó có thể giám sát kho lưu trữ (Svn và một số loại khác) và bắt đầu xây dựng tự động bằng nhiều công cụ khác nhau. (NAnt, MSBuild, vv)

4

Âm thanh như bạn sau khi tích hợp công cụ tích hợp liên tục như CruiseControl hoặc Hudson (hudson viết bằng java nhưng rất dễ sử dụng trong cửa sổ).

Giờ đây, bạn có thể sử dụng các tập lệnh xây dựng của mình để xem các thư mục thẻ, nhưng điều đó sẽ hơi chống lại hạt khi chúng định xem một vị trí cụ thể và xây dựng dự án tại vị trí đó.Nếu bạn xem toàn bộ thư mục thẻ, bạn có thể dễ dàng kết thúc với tất cả các thẻ sẽ được kiểm tra trên máy xây dựng và bạn sẽ cần một kịch bản cấp cao nhất để quyết định nên tạo thẻ nào.

Đối với những gì bạn muốn, một công cụ xây dựng có thể xem một vị trí cụ thể (nói '/ chi nhánh/phát hành'). Nếu sau đó bạn hợp nhất vào nhánh đó, Hudson sẽ tự động xây dựng dự án, lưu trữ các tạo phẩm và tạo một thẻ cho bạn nếu nó thành công (xem Plugin gắn thẻ Subversion).

Tôi không thích làm điều này từ một móc hậu cam kết vì nó làm cho giai đoạn cam kết mất quá nhiều thời gian. Tuy nhiên, TeamCity là một hệ thống kiểm soát nguồn có một tính năng thực hiện chính xác mà không cần giữ bạn trong khi nó cam kết.

Tôi muốn giới thiệu Hudson cho việc này.

+0

Vâng, tôi nghĩ bạn sẽ thấy những gì tôi đang thực sự tự động hoá cách cơ chế phát hành hoạt động. Nếu tôi chỉ đơn giản là mô hình, nó có nghĩa là tất cả các dev không là tag phát hành và phần còn lại là tự động hóa quy trình làm việc. Tôi sẽ xem Hudson. Tôi đã sử dụng CC.NET và nó thực sự không xây dựng để làm công việc này. – Ajaxx

1

Giống như những người khác nói, bạn muốn có một máy chủ tích hợp liên tục (CruiseControl, CruiseControl.Net, Hudson, v.v ...). Trong khi bạn có thể làm việc trên kịch bản xây dựng của bạn và cam kết móc để làm các chức năng bạn mô tả, cuối cùng bạn sẽ tìm thấy bạn tái phát minh ra bánh xe (Continuous Integration Server). Không cần, có những giải pháp có sẵn miễn phí cho mục đích này.

Quy trình sẽ hoạt động hơi khác so với mô tả ở trên. Việc xây dựng máy chủ sẽ:

  1. Phát hiện mới cam kết
  2. Thanh toán mã nguồn của bạn
  3. Chạy xây dựng của bạn kịch bản
  4. Tag trên thành công xây dựng

Các cam kết gây nên quá trình này và tạo ra thẻ thay vì thẻ kích hoạt quá trình. Các máy chủ hiện điều này của tôi giám sát kho svn chứ không phải là một móc cam kết.

Kiểm tra tài liệu CruiseControl.Net về chủ đề này, đặc biệt là tùy chọn tagOnSuccess và tagBaseUrl. Hudson và CruiseControl nên có các tùy chọn tương tự.

http://confluence.public.thoughtworks.org/display/CCNET/Subversion+Source+Control+Block

8

Tôi đã thực hiện việc này bằng Hudson. Trong khe lật đổ thanh toán thường xuyên Tôi có một thanh toán cho thân cây:

http://dryad.googlecode.com/svn/trunk/dryad

Sau đó là việc xây dựng hành động đầu tiên, tôi có một "thực thi shell" và trong vỏ mà sử dụng một công tắc svn để thay đổi mới nhất trong kho lưu trữ:

svn switch http://dryad.googlecode.com/svn/tags/ 'svn ls http://dryad.googlecode.com/svn/tags | tail -n 1 'dryad

Bước xây dựng tiếp theo là lệnh maven' clean install 'bắt đầu xây dựng bằng cách sử dụng mã từ phiên bản được gắn thẻ.

Tôi chưa tìm ra cách để khiến Hudson bắt đầu với phiên bản được gắn thẻ mới nhất thay vì phải thực hiện chuyển đổi, nhưng công tắc sẽ hoạt động. Sau đó, bạn có thể kích hoạt khi thư mục thẻ được cập nhật.

Nó tự động ... một chút của một kludge, nhưng nó hoạt động ...

nút chuyển phải bao gồm backtick cho lệnh svn thứ hai nhưng phải sử dụng 'vì backtick không hiển thị ở đây.

2

Tôi cũng muốn giới thiệu Hudson cho việc này. Tôi đã tìm cách để làm một cái gì đó tương tự, tạo ra một thẻ và có khởi động một xây dựng. Thay vào đó tôi chọn sử dụng plugin này cho hudson:

http://wiki.hudson-ci.org/display/HUDSON/Release+Plugin

Và sử dụng để lái xe tạo ra các thẻ và một bản phát hành xây dựng rõ ràng.

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