2008-08-18 31 views
26

Hoặc, thực sự thiết lập quy trình xây dựng khi không có nhiều nơi để bắt đầu.Cải thiện quy trình xây dựng của bạn

Hiện tại, đó là tình huống mà nhóm của tôi phải đối mặt. Chúng tôi phát triển ứng dụng web chủ yếu (nhưng không phát triển trên máy tính để bàn tại thời điểm này). Triển khai phần mềm là xấu xí và khó sử dụng ngay cả với các ứng dụng khiêm tốn của chúng tôi, và chúng tôi đã có quá nhiều vấn đề nảy sinh trong hai năm tôi đã là một phần của nhóm này (và công ty). Đó là thời gian qua để làm điều gì đó về điều đó, và upshot là chúng ta sẽ có thể giết hai con chim Joel Test với một viên đá (xây dựng hàng ngày và xây dựng một bước, không ai trong số đó tồn tại dưới bất kỳ hình thức nào).

Những gì tôi sau đây là một số thông tin tổng quát về những thứ tôi cần phải làm hoặc suy nghĩ, từ những người đã phát triển phần mềm lâu hơn tôi và cũng có bộ não lớn hơn. Tôi tự tin rằng hầu hết mọi người hiện đang đăng trong bản beta.

cụ liên quan: trực quan xây dựng Source Safe 6.0 (Tôi biết, nhưng tôi không thể làm bất cứ điều gì về việc có hay không chúng tôi sử dụng Source Safe lúc này Đó có thể là cuộc chiến tiếp theo tôi chiến đấu..)

Dự kiến, tôi đã có dự án Visual Build thực hiện điều này:

  1. Nhận nguồn và địa điểm trong thư mục địa phương, bao gồm các DLL cần thiết cho dự án.
  2. Nhận tệp cấu hình và đổi tên khi cần (chúng tôi lưu trữ chúng trong một thư mục con đặc biệt không phải là một phần của ứng dụng thực tế và chúng được đặt tên theo sử dụng).
  3. xây dựng sử dụng Visual Studio
  4. tiền biên dịch sử dụng dòng lệnh, sao chép vào những gì sẽ là một "xây dựng" thư mục
  5. Chép đến đích.
  6. Nhận bất kỳ tài nguyên bổ sung cần thiết nào - chủ yếu là những thứ như tài liệu, hình ảnh và báo cáo được liên kết với dự án (và được đưa vào thư mục từ bước 5). Có rất nhiều thứ này, và tôi không muốn bao gồm nó trước đây. Tuy nhiên, tôi sẽ chỉ sao chép các mục đã thay đổi, vì vậy có thể nó không liên quan. Tôi không chắc liệu tôi có thực sự muốn đưa nội dung này vào các bước trước đó hay không.

Tôi vẫn cần phải rút một số đăng xuất khỏi Visual Build cho tất cả điều này, nhưng tôi không phải lúc tôi cần làm điều đó.

Có ai có lời khuyên hoặc gợi ý nào để thực hiện không? Chúng tôi hiện không sử dụng Dự án triển khai, tôi sẽ lưu ý. Nó sẽ loại bỏ một số bước cần thiết trong bản dựng này mà tôi đoán (như trao đổi web.config).

Trả lời

18

Khi thực hiện dự án chưa bao giờ có quy trình xây dựng tự động, việc thực hiện theo các bước sẽ dễ dàng hơn. Đừng cố gắng nuốt nhiều cùng một lúc, nếu không nó có thể cảm thấy áp đảo.

  1. Trước tiên, hãy biên dịch mã bằng một bước bằng chương trình xây dựng tự động (tức là nant/msbuild). Tôi sẽ không tranh luận cái nào tốt hơn. Tìm một cái cảm thấy thoải mái với bạn và sử dụng nó. Có các kịch bản xây dựng trực tiếp với dự án trong kiểm soát nguồn.
  2. Tìm hiểu cách bạn muốn xây dựng tự động của mình được kích hoạt. Cho dù đó là hooking nó lên đến CruiseControl hoặc chạy một nhiệm vụ xây dựng hàng đêm bằng cách sử dụng tác vụ theo lịch trình. CruiseControl hoặc TeamCity có lẽ là lựa chọn tốt nhất cho điều này, bởi vì chúng bao gồm rất nhiều công cụ bạn có thể sử dụng để làm cho bước này dễ dàng hơn. CruiseControl là miễn phí và TeamCity được tự do đến một điểm, nơi bạn có thể phải trả tiền cho nó tùy thuộc vào dự án lớn như thế nào.
  3. Ok, đến thời điểm này bạn sẽ khá thoải mái với các công cụ. Bây giờ bạn đã sẵn sàng thêm nhiều công việc hơn dựa trên những gì bạn muốn làm để thử nghiệm, triển khai và v.v.

Hy vọng điều này sẽ hữu ích.

9

Tôi có một tập hợp các kịch bản Powershell làm tất cả những điều này cho tôi.

Kịch bản 1: Xây dựng - cái này đơn giản, chủ yếu được xử lý bằng lệnh gọi đến msbuild và cũng tạo ra tập lệnh cơ sở dữ liệu của tôi.

Kịch bản 2: Gói - Gói này lấy các đối số khác nhau để đóng gói bản phát hành cho các môi trường khác nhau, chẳng hạn như kiểm tra và tập con của môi trường sản xuất, bao gồm nhiều máy.

Script 3: Triển khai - Đây được chạy trên mỗi máy tính cá nhân từ bên trong thư mục được tạo bởi kịch bản trọn gói (kịch bản triển khai được sao chép vào như một phần của bao bì)

Từ kịch bản triển khai, tôi làm tỉnh táo kiểm tra những thứ như tên máy để mọi thứ không vô tình bị triển khai sai địa điểm.

Đối với file web.config, tôi sử dụng các tính năng

<appSettings file="Local.config"> 

có ghi đè đã có trên các máy sản xuất, và họ đang read-only để họ không vô tình bị ghi đè lên. Các tệp Local.config không được đăng ký và tôi không phải thực hiện bất kỳ chuyển đổi tệp nào tại thời gian xây dựng.

[Chỉnh sửa] Tương đương với tập tin appSettings = cho một phần cấu hình là configSource = "Local.config"

1

tôi đã chỉ làm việc trên một vài dự án Net (tôi đã thực hiện chủ yếu là Java) nhưng một điều tôi muốn giới thiệu là sử dụng một công cụ như NAnt. Tôi có một vấn đề thực sự với việc ghép nối xây dựng của tôi với IDE, nó kết thúc làm cho nó trở thành nỗi đau thực sự để thiết lập các máy chủ xây dựng trên đường vì bạn phải thực hiện cài đặt VS đầy đủ trên bất kỳ hộp nào mà bạn muốn xây dựng từ Tương lai.

Điều đó đang được nói, bất kỳ bản dựng tự động nào tốt hơn là không có bản dựng tự động.

5

Chúng tôi đã chuyển từ sử dụng tập lệnh perl sang MSBuild hai năm trước và chưa xem xét lại. Xây dựng các giải pháp studio trực quan có thể được thực hiện bằng cách chỉ định chúng trong tệp xml chính.

Đối với bất kỳ điều gì phức tạp hơn (nhận mã nguồn, thực hiện kiểm tra đơn vị, xây dựng gói cài đặt, triển khai trang web), bạn chỉ có thể tạo một lớp mới trong .net bắt nguồn từ Tác vụ ghi đè hàm Execute và sau đó tham chiếu điều này từ tệp xml xây dựng của bạn.

Có một giới thiệu khá tốt ở đây: introduction

1

quá trình xây dựng của chúng tôi là một loạt các kịch bản Perl cây nhà lá vườn mà đã tiến hóa hơn một thập kỷ hoặc lâu hơn, không có gì lạ mắt nhưng nó được công việc làm. Một kịch bản nhận mã nguồn mới nhất, một đoạn mã khác xây dựng nó, một giai đoạn thứ ba nó đến một vị trí mạng. Chúng tôi phát triển ứng dụng trên máy tính để bàn để quá trình dàn dựng của chúng tôi cũng xây dựng các gói cài đặt để thử nghiệm và cuối cùng là giao hàng cho khách hàng.

Tôi khuyên bạn nên chia nhỏ các bước riêng lẻ bởi vì sẽ có những lúc bạn muốn xây dựng lại nhưng không nhận được mới nhất hoặc có thể chỉ cần quay lại giai đoạn. Kịch bản của chúng tôi cũng có thể xử lý việc xây dựng từ các nhánh khác nhau, do đó hãy xem xét rằng với bất kỳ giải pháp nào bạn phát triển.

Cuối cùng, chúng tôi có một máy xây dựng chuyên dụng để xây dựng lại các chi nhánh thân cây và bảo trì mỗi đêm và gửi một email với bất kỳ vấn đề hoặc nếu nó hoàn thành thành công.

0

Hệ thống xây dựng của chúng tôi là một makefile (hoặc hai). Nó đã được khá thú vị nhận được nó làm việc vì nó cần phải chạy trên cả hai cửa sổ (như là một nhiệm vụ xây dựng theo VS) và dưới Linux (như một công việc bình thường "làm bla"). Điều thực sự thú vị là việc xây dựng nhận danh sách tệp thực tế từ tệp .csproj, xây dựng (một) tệp makefile khác từ đó và chạy nó. Trong quá trình thực hiện các tập tin thực sự gọi nó là tự.

Nếu suy nghĩ đó không làm người đọc sợ hãi, thì (hoặc là họ điên hoặc) họ có thể có thể làm cho + "người quản lý chuỗi yêu thích của bạn" làm việc cho họ.

1

Một điều tôi khuyên bạn nên đảm bảo tập lệnh xây dựng của bạn (và dự án trình cài đặt, nếu có liên quan trong trường hợp của bạn) nằm trong kiểm soát nguồn. Tôi có xu hướng có một kịch bản rất đơn giản mà chỉ cần kiểm tra \ mới nhất là "chính" xây dựng kịch bản sau đó khởi chạy nó.

Tôi nói điều này b/c Tôi thấy các đội chỉ chạy phiên bản mới nhất của tập lệnh xây dựng trên máy chủ nhưng không bao giờ đưa nó vào kiểm soát nguồn hoặc khi họ chỉ kiểm tra nó một cách ngẫu nhiên. Nếu bạn thực hiện quá trình xây dựng để "lấy" từ kiểm soát nguồn, nó sẽ buộc bạn phải giữ tập lệnh xây dựng mới nhất và lớn nhất trong đó.

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