6

Các đề xuất để bao gồm trình biên dịch, thư viện và các công cụ khác trong chính hệ thống kiểm soát nguồn của bạn là gì?Làm cách nào để kiểm soát phiên bản công cụ và thư viện xây dựng?

Trước đây, tôi đã gặp phải sự cố, mặc dù chúng tôi có tất cả mã nguồn, việc xây dựng phiên bản cũ của sản phẩm là một bài tập trong việc tìm kiếm cấu hình chính xác của Visual Studio, InstallShield và các công cụ khác (bao gồm cả phiên bản vá chính xác) được sử dụng để tạo sản phẩm. Trong dự án tiếp theo của tôi, tôi muốn tránh điều này bằng cách kiểm tra các công cụ xây dựng này trong điều khiển nguồn, và sau đó xây dựng bằng cách sử dụng chúng. Điều này cũng sẽ đơn giản hóa mọi thứ trong việc thiết lập một máy xây dựng mới - 1) cài đặt công cụ kiểm soát nguồn của chúng tôi, 2) điểm tại nhánh bên phải và 3) xây dựng - đó là nó.

Tùy chọn Tôi đã xem xét bao gồm:

  • Sao chép cài đặt CD ISO để kiểm soát nguồn - mặc dù điều này cung cấp sao lưu chúng ta cần nếu chúng ta phải quay trở lại phiên bản cũ, nó không phải là một tốt tùy chọn để sử dụng "trực tiếp" (mỗi bản dựng sẽ cần phải bắt đầu bằng bước cài đặt, có thể dễ dàng biến một giờ được xây dựng thành 3 giờ).
  • Cài đặt phần mềm để kiểm soát nguồn. ClearCase ánh xạ nhánh của bạn với một ký tự ổ đĩa; chúng tôi có thể cài đặt phần mềm theo ổ đĩa này. Điều này không tính đến phần không phải là tệp của việc cài đặt các công cụ của bạn, như cài đặt đăng ký.
  • Cài đặt tất cả phần mềm và thiết lập quy trình xây dựng bên trong máy ảo, lưu trữ máy ảo trong điều khiển nguồn và tìm ra cách để máy ảo thực hiện xây dựng khi khởi động. Trong khi chúng tôi nắm bắt trạng thái của "máy xây dựng" một cách dễ dàng, chúng tôi nhận được chi phí của một máy ảo, và nó không giúp với "làm cho các công cụ tương tự có sẵn cho vấn đề phát triển."

Dường như đó là ý tưởng cơ bản về quản lý cấu hình, nhưng tôi không thể theo dõi bất kỳ tài nguyên nào về cách thực hiện việc này. Những gợi ý là gì?

+0

Lý do bạn phải quay lại và xây dựng lại phiên bản cũ hơn là gì? Là nó cho mục đích gỡ lỗi? Có phải vì bạn không lưu trữ sản phẩm cuối cùng? – JKueck

Trả lời

0

Tổ chức của tôi có hệ thống tệp "chỉ đọc", nơi mọi thứ được đưa vào bản phát hành và phiên bản. Releaselinks (về bản chất là các liên kết tượng trưng) trỏ tới phiên bản đang được dự án của bạn sử dụng. Khi một phiên bản mới xuất hiện, nó chỉ được thêm vào hệ thống tập tin và bạn có thể xoay liên kết tượng trưng của bạn vào nó. Có toàn bộ lịch sử kiểm toán của các liên kết tượng trưng và bạn có thể tạo các liên kết tượng trưng mới cho các phiên bản khác nhau.

Cách tiếp cận này hoạt động tốt trên Linux, nhưng nó không hoạt động tốt cho các ứng dụng Windows có xu hướng sử dụng những thứ cục bộ cho máy như đăng ký để lưu trữ những thứ như cấu hình.

5

Tôi nghĩ VM là giải pháp tốt nhất của bạn. Chúng tôi luôn sử dụng máy xây dựng chuyên dụng để có được tính nhất quán. Trong ngày COM DLL Hell cũ, đã có sự phụ thuộc vào (COMCAT.DLL, bất kỳ ai) trên phần mềm không phát triển được cài đặt (Office). Hai tùy chọn đầu tiên của bạn không giải quyết bất kỳ thứ gì đã chia sẻ thành phần COM. Nếu bạn không có bất kỳ vấn đề thành phần được chia sẻ nào, có thể chúng sẽ hoạt động.

Không có lý do gì khiến các nhà phát triển không thể lấy bản sao của cùng một máy ảo để có thể gỡ lỗi trong môi trường trong sạch. Các vấn đề của bạn sẽ phức tạp hơn nếu có nhiều lớp vật lý trong kiến ​​trúc của bạn, như máy chủ thư, máy chủ cơ sở dữ liệu, v.v.

0

Bạn có sử dụng công cụ tích hợp liên tục (CI) như NAnt để xây dựng không?

Là ví dụ .Net, bạn có thể chỉ định các khuôn khổ cụ thể cho từng công trình.

Có lẽ công cụ CI phổ biến cho bất kỳ thứ gì bạn đang phát triển có các tùy chọn cho phép bạn tránh lưu trữ một số IDE trong hệ thống kiểm soát phiên bản của bạn.

2

Tôi chắc chắn sẽ xem xét các vấn đề pháp lý/cấp phép xung quanh ý tưởng. Nó sẽ được cho phép theo các giấy phép khác nhau của toolchain của bạn?

Bạn đã coi bóng ma là một máy phát triển mới có khả năng xây dựng bản phát hành, nếu bạn không thích ý tưởng về hình ảnh VM? Tất nhiên, việc giữ hình ảnh ma quái đó chạy dưới dạng thay đổi phần cứng có thể gặp nhiều rắc rối hơn giá trị của nó ...

4

Đây là điều rất cụ thể đối với môi trường của bạn. Đó là lý do tại sao bạn sẽ không thấy hướng dẫn để xử lý tất cả các tình huống. Tất cả các cửa hàng khác nhau mà tôi đã làm việc đã xử lý điều này một cách khác nhau. Tôi chỉ có thể cung cấp cho bạn ý kiến ​​của tôi về những gì tôi nghĩ rằng đã làm việc tốt nhất cho tôi.

  • Đặt mọi thứ cần thiết để tạo ứng dụng trên máy trạm mới trong điều khiển nguồn.
  • Giữ các ứng dụng ngoài tầm kiểm soát nguồn, các công cụ như IDE, SDK và cơ sở dữ liệu động cơ. Giữ chúng trong một thư mục dưới dạng tập tin ISO.
  • Duy trì tài liệu văn bản, với mã nguồn, có danh sách các tệp ISO cần thiết để tạo ứng dụng.
0

Trong nhiều trường hợp, bạn có thể buộc xây dựng của bạn sử dụng trình biên dịch và thư viện được kiểm tra nguồn của bạn thay vì dựa vào cài đặt máy chung sẽ không lặp lại được trong tương lai. Ví dụ, với trình biên dịch C#, bạn có thể sử dụng công tắc/nostdlib và tự tay/tham khảo tất cả các thư viện để trỏ đến các phiên bản được kiểm tra trong điều khiển nguồn. Và dĩ nhiên kiểm tra bản thân trình biên dịch vào kiểm soát nguồn.

0

Theo dõi câu hỏi của riêng tôi, tôi đã xem qua số this posting được tham chiếu trong câu trả lời cho một câu hỏi khác. Mặc dù nhiều hơn một cuộc thảo luận về vấn đề hơn một aswer, nó không đề cập đến ý tưởng VM.

0

Đối với "tìm hiểu cách xây dựng khi khởi động": Tôi đã phát triển bằng cách sử dụng hệ thống xây dựng trang trại được tạo tùy chỉnh rất nhanh bởi một sysadmin và một nhà phát triển. Xây dựng các nô lệ truy vấn một taskmaster cho các yêu cầu xây dựng xếp hàng phù hợp. Nó khá đẹp.

Yêu cầu là 'phù hợp' cho một nô lệ nếu yêu cầu về chuỗi công cụ của nó khớp với phiên bản chuỗi công cụ trên slave - kể cả hệ điều hành nào, vì sản phẩm là đa nền tảng và bản dựng có thể bao gồm kiểm tra tự động. Thông thường, đây là "trạng thái hiện tại của nghệ thuật", nhưng không nhất thiết phải như vậy.

Khi một nô lệ sẵn sàng để xây dựng, nó chỉ bắt đầu bỏ phiếu cho công cụ kiểm tra, cho biết nó đã được cài đặt cái gì. Nó không phải biết trước những gì nó dự kiến ​​sẽ xây dựng. Nó lấy một yêu cầu xây dựng, yêu cầu nó kiểm tra các thẻ nhất định từ SVN, sau đó chạy một tập lệnh từ một trong các thẻ đó để lấy nó từ đó. Các nhà phát triển không phải biết có bao nhiêu nô lệ xây dựng có sẵn, những gì họ đang gọi, hoặc cho dù họ đang bận, chỉ cần làm thế nào để thêm một yêu cầu vào hàng đợi xây dựng. Hàng đợi xây dựng chính nó là một ứng dụng web khá đơn giản. Tất cả đều rất mô-đun.

Các nô lệ không phải là máy ảo, nhưng thường là. Số lượng nô lệ (và các máy vật lý mà chúng đang chạy) có thể được thu nhỏ để đáp ứng nhu cầu. Slaves rõ ràng có thể được thêm vào hệ thống bất cứ lúc nào, hoặc nuked nếu toolchain treo. Đó thực sự là điểm chính của kế hoạch này, chứ không phải là vấn đề của bạn với việc lưu trữ trạng thái của chuỗi công cụ, nhưng tôi nghĩ nó có thể áp dụng được.

Tùy thuộc tần suất bạn cần một chuỗi công cụ cũ, bạn có thể muốn hàng đợi xây dựng có khả năng khởi động máy ảo khi cần thiết, vì nếu không ai đó muốn tạo lại phiên bản cũ cũng phải sắp xếp một nô lệ phù hợp xuất hiện. Không phải là điều này nhất thiết phải khó khăn - nó có thể chỉ là một câu hỏi bắt đầu VM đúng trên máy tính mà họ chọn.

1

Chỉ cần một ghi chú trên versionning các thư viện trong hệ thống kiểm soát phiên bản của bạn:

  • nó là một giải pháp tốt nhưngngụ ý bao bì (tức là giảm số lượng các tập tin của thư viện đó ở mức tối thiểu)
  • nó không giải quyết được 'khía cạnh cấu hình' (nghĩa là "những dự án '3.2' cần thiết của thư viện nào?").
    Đừng quên tập hợp đó sẽ phát triển với mỗi phiên bản mới của dự án của bạn. UCM và 'đường cơ sở tổng hợp' của nó có thể cung cấp cho sự bắt đầu của một câu trả lời cho điều đó.

Các bao bì khía cạnh (số lượng tối thiểu các tập tin) là rất quan trọng bởi vì:

  • bạn không muốn truy cập thư viện của bạn thông qua mạng (như mặc dù nhìn năng động), bởi vì thời gian biên dịch là lâu hơn nhiều so với khi bạn sử dụng các tệp thư viện được truy cập cục bộ.
  • bạn muốn nhận các thư viện đó trên đĩa, nghĩa là xem nhanh, có nghĩa là tải xuống các tệp đó ... và đây là nơi bạn có thể đánh giá cao việc đóng gói thư viện của mình: ;)
Các vấn đề liên quan