Những lợi thế nào các công cụ tích hợp liên tục cung cấp cho một dự án solo?


18

Nếu bạn đang thực hiện một dự án solo - bạn có sử dụng các công cụ CI để xây dựng từ kho lưu trữ không? Tôi đã sử dụng Hudson và Cruise Control trong môi trường nhóm, nơi cần thiết để xây dựng ngay khi có ai kiểm tra mọi thứ.

Tôi nghĩ rằng giá trị của kiểm soát phiên bản vẫn rõ ràng, nhưng tôi có cần phải xây dựng sau mỗi lần cam kết, xem như tôi sẽ xây dựng trên máy cục bộ của mình và không ai khác cam kết?

Câu trả lời:


12

Vâng, tôi dự định sử dụng một công cụ tích hợp liên tục vào một dự án và tôi là nhà phát triển duy nhất. Nhu cầu đến vì

  1. Một mục tiêu là làm cho nó đa nền tảng và có một công cụ tích hợp giúp bạn kiểm tra ngầm (cơ bản) kiểm tra ứng dụng của bạn trên một số nền tảng sau khi bạn đã thay đổi các kho lưu trữ tích hợp (hoặc trung tâm hoặc bất cứ thứ gì là sẽ được sử dụng như có thẩm quyền).
  2. Dự án được xây dựng lâu dài nên tôi sẽ cần phải làm việc với một nhóm sau này. Tôi không có kế hoạch tuyển dụng bất cứ ai cho đến năm 2012 vì vậy điều tích hợp liên tục có thể chờ đến lúc này, cho đến khi 1. trở thành ưu tiên.

Khác với chuẩn bị đa nền tảng và làm việc theo nhóm, tôi không thấy sự cần thiết. Điều chính là có một số loại phần mềm kiểm soát nguồn và có một số kho lưu trữ để giữ bản sao lưu. Điều đó sẽ giúp bạn thiết lập các công cụ xây dựng xung quanh nó khi cần thiết.

Về thời gian xây dựng, tôi đang sử dụng Mercurial và thiết lập kho lưu trữ tích hợp không phải là kho lưu trữ làm việc theo nhóm. Vì vậy, thúc đẩy thay đổi trong repo làm việc theo nhóm cho đến khi tôi cảm thấy đã đến lúc phải làm cho hệ thống tích hợp cố gắng xây dựng. Sau đó, tôi chuyển từ repo làm việc theo nhóm sang repo tích hợp và điều đó sẽ kích hoạt việc xây dựng. Sau đó, tôi cũng thêm một kịch bản sẽ kéo repo làm việc theo nhóm trong repo tích hợp một lần mỗi ngày.

Ở đây tôi giả sử rằng tôi làm việc gần như tất cả các ngày trong dự án của mình nhưng điều đó không phải lúc nào cũng đúng. Bạn phải đặt thời gian xây dựng liên quan đến tần suất bạn cần xây dựng. Trong một công ty trò chơi mà tôi đã làm việc trước đây, chúng tôi đã sử dụng CruiseControle và nó đã xây dựng một bản dựng hoàn chỉnh mỗi giờ. Chúng tôi cũng có thể buộc xây dựng bất cứ khi nào chúng tôi muốn nếu cần.

Đối với một dự án nhà, một lần một ngày có thể đã "thường". Yêu cầu chính sẽ là dễ dàng cho phép người dùng buộc khởi chạy một bản dựng.


20

Sau khi suy ngẫm ngắn gọn, tôi sẽ đề xuất rằng nó thậm chí còn quan trọng hơn đối với một nhà phát triển solo so với một nhóm.

Ở cấp độ cơ bản nhất, máy chủ CI chứng minh rằng bạn có thể xây dựng ứng dụng của mình từ đầu từ nguồn đã cam kết - kết hợp với một bộ kiểm tra hợp lý, nó sẽ chứng minh rằng bạn có thể xây dựng và chạy từ đầu.

Vì một trong những điều tôi cố gắng làm là đảm bảo rằng bản dựng của tôi bao gồm gói có thể triển khai, bạn cũng biết rằng bạn có thể lấy thứ gì đó để triển khai (sạch và từ trạng thái / phiên bản đã biết).

Thực tế bây giờ, khi bạn thực hiện File | Dự án mới, có lẽ bạn nên bao gồm việc tạo hoặc thêm vào kho lưu trữ của mình và thiết lập tập lệnh xây dựng CI và thiết lập triển khai (ngay cả khi đó chỉ để nén một đống nội dung để triển khai xcopy)


Phụ lục (2016) - ngày nay, hệ thống CI của tôi cũng sẽ là một phần không thể thiếu trong quá trình triển khai của tôi, vì vậy giá trị của nó đã tăng lên và tôi hoàn toàn không chạy bất kỳ dự án có thể giao nào mà không có nó. Việc triển khai nút ấn tự động làm mất rất nhiều căng thẳng trong quá trình và theo một cách nào đó, hình dạng hoặc hình thành một máy chủ xây dựng là không thể thiếu.


10
+1 với tư cách là nhà phát triển solo, bạn có nhiều nguy cơ 'hoạt động trên các vấn đề của máy của tôi'
jk.

Downvote không có lý do là không hữu ích - có gì sai ở trên?
Murph

+1, tôi phải đối mặt với một tình huống rất giống nhau ở đây - rất nhiều dự án đủ nhỏ để duy trì mỗi dự án chỉ bởi một nhà phát triển và một dự án lớn được duy trì bởi một nhóm. Đối với các dự án nhỏ, chúng tôi thường phải đối mặt với vấn đề ai đó quên kiểm tra một tệp mã nguồn cụ thể. Đối với dự án lớn, điều này chưa bao giờ trở thành vấn đề, vì nếu một trong các nhóm quên thêm tệp mới vào kiểm soát nguồn, những người khác sẽ ngay lập tức phàn nàn về điều này. Tôi nên thêm chúng tôi sẽ cài đặt một máy chủ CI vào tháng tới - bắt đầu với các dự án nhỏ!
Doc Brown

7

Khi tôi là người duy nhất cam kết, tôi chỉ cần xây dựng và kiểm tra trước khi thực sự cam kết. Tôi thường sử dụng một mục tiêu makefile như:

make sense

Nó cấu hình, xây dựng, chạy tất cả các bài kiểm tra (nhận thức về valgrind), chạy các gợi ý, v.v. Theo tôi biết tôi sẽ là người duy nhất thúc đẩy, tôi không thực sự cần sức mạnh của thứ gì đó như Hudson.

Ngoài ra, trong một môi trường nơi bạn có một vài chi nhánh cung cấp một kho lưu trữ chính, nếu mọi người luôn luôn theo dõi trước khi bạn cam kết hoặc đẩy, máy chủ CI có thể sẽ bị giết một chút. Một quy tắc được viết tốt rằng tác giả của bất cứ điều gì đã phá vỡ bản dựng cuối cùng mua pizza vào thứ Sáu thường giữ cho mọi thứ hoạt động rất trơn tru :)

Nếu nó rơi vào tình huống trong đó một dự án được phân chia rõ ràng thành các hệ thống phụ có các nhà lãnh đạo riêng của chúng, bạn thực sự cần phải suy nghĩ bằng cách sử dụng một cái gì đó như Hudson. Ai đó có thể kiểm tra cục bộ, thua cuộc đua với một hệ thống phụ khác và cuối cùng đẩy thứ gì đó độc hại.

Ngoài ra, nếu bạn đang duy trì một nhánh của dự án chuyển động nhanh (ví dụ: bộ bản vá của riêng bạn cho nhân Linux), bạn thực sự nên cân nhắc sử dụng một cái gì đó như Hudson, mặc dù bạn đang 'solo' trong dự án đó. Điều này đặc biệt đúng nếu bạn phân nhánh / tái cơ sở trực tiếp từ tuyến chính.


11
Hãy nhớ ghi mã mục tiêu 'giác quan' của bạn, nếu không bạn có thể nhận được make: don't know how to make sense. Stop. Argh!
Alan Pearce

@Alan - Họ đã đi và làm hỏng tất cả niềm vui của chúng tôi trong các phiên bản sau (ít nhất là GNU tạo ra) .. bây giờ bạn chỉ cần "make: *** Không có quy tắc để tạo mục tiêu 'có ý nghĩa'. Dừng lại."
Tim Post

1
Đề nghị bạn chuyển sang FreeBSD rồi. :)
Alan Pearce

1

Tôi sẽ không nói đây chỉ là một phần thưởng tuyệt vời, tôi muốn nói rằng nó rất quan trọng đối với công nghệ phần mềm chất lượng cao cho các nghệ sĩ solo ngoài kia. Hầu hết chúng ta sẽ để tiêu chuẩn chất lượng của họ trượt một chút nếu vội vàng nếu họ nghĩ rằng nó đủ dễ để sửa chữa sau này. Nếu bạn cam kết phần mềm ở trạng thái đó, về cơ bản bạn có một cơ sở mã vô giá trị được lưu trữ trong kiểm soát nguồn của bạn.

Nếu tuân thủ đúng (nghĩa là bạn không bỏ qua các bài kiểm tra và bạn chắc chắn rằng nó sẽ được xây dựng mỗi khi bạn cam kết) CI buộc bạn phải tuân thủ một tiêu chuẩn chất lượng cao hơn bạn nếu bạn chỉ cam kết.


Tôi quản lý để chạy một ứng dụng cơ sở dữ liệu nội bộ thành công mà không cần bất kỳ chi phí nào của máy chủ CI. Nó cần một chút kỷ luật trong một số lĩnh vực, nhưng ít hơn chi phí thiết lập tất cả những thứ đó.
wobbily_col

0

Điều quan trọng là bạn muốn giảm thời gian chờ đợi để xem mọi thứ có còn tốt không. Mặc dù bạn có thể yêu cầu IDE biên dịch công cụ cho bạn ngay khi bạn lưu, nhưng nó không tự động chạy thử nghiệm đơn vị, vì vậy tôi có máy chủ CI của tôi chạy thử nghiệm đơn vị và báo cáo phạm vi kiểm tra trường hợp và phân tích chất lượng khác của mã của tôi ngay khi Tôi đẩy nó.

Kích hoạt duy nhất tôi phải làm là đẩy các thay đổi hiện tại của mình sang kiểm soát phiên bản và tôi có thể quay lại mã hóa. Và trong khi tôi đang suy nghĩ về tiền mã hóa, hệ thống CI đang bận rộn thực hiện các báo cáo chất lượng dài hơi mà tôi sẽ xem xét một lần khi bộ não của tôi rơi vào trạng thái tạm lắng.

Tôi có một máy VMWare riêng trên cùng một máy tính xách tay có mã xây dựng mã mà tôi nhập vào. Để thực hiện điều này, tôi chỉ cần lấy hình ảnh Turnkey Linux VMWare và cài đặt jenkins bằng apt-get và thực hiện một vài thay đổi nhỏ về cấu hình.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.