Bạn có thể thực hiện xây dựng trong một bước?


14

Từ bài kiểm tra joel :

Bạn có thể thực hiện xây dựng trong một bước?

Tôi phải nói rằng tôi không thể. Tôi hiện đang làm việc trên một ứng dụng web có danh sách bảng tính các mục phải được thực hiện để triển khai. Vì vậy, câu hỏi của tôi là làm thế nào tôi có thể tự động hóa điều này ? Nó có phải là tổ chức rộng? Mẹo / kỹ thuật?


3
Nó phụ thuộc vào các mục trong danh sách là gì? Lý tưởng nhất là có bạn sẽ có thể tự động hóa nó.
Không ai vào

4
vi.wikipedia.org/wiki/Build_automation BTW: Một số người ở lại một bước là quá nhiều :)
Mchl

Tất cả các loại - di chuyển các tập tin, kịch bản ra các thủ tục được lưu trữ vv - có 14 bước!
billy.bob

2
Từ một góc độ khác nhau, những gì trong danh sách bạn cảm thấy bạn không thể tự động hóa?
Tyanna

1
Câu hỏi về cách tự động hóa bản dựng không chủ quan và nên được hỏi trên Stack Overflow. Câu hỏi cũng cần có thêm thông tin về các nhiệm vụ cần thiết, để có được câu trả lời hữu ích.
David Thornley

Câu trả lời:


10

Make có thể tự động hóa quá trình xây dựng thành một bước. Làm có thể làm khá nhiều những gì bạn muốn. Tôi không chắc tại sao sapporo nghĩ rằng Make chỉ áp dụng cho C / C ++. Bạn có thể sử dụng make để chạy bất kỳ loại lệnh nào. Nó thậm chí không gắn liền với lập trình mặc dù đó là những gì nó thường được sử dụng cho.


2
làm là một trong những loại công cụ "dao quân đội Thụy Sĩ"; thích làm việc với nó. Một điều khác để chỉ ra nơi thực hiện sẽ hữu ích là nếu bạn đang tự động hóa quá trình xây dựng / quy trình / vv của mình và một hoặc nhiều bước phụ thuộc vào việc hoàn thành thành công khác, thực hiện sẽ dừng nếu bước đó thất bại, không cho phép các bước khác tiến hành và có thể gây ra vấn đề
Sẽ

1
Vì nhiều ứng dụng / hệ thống nix được cài đặt với './cool; làm; thực hiện cài đặt 'Tôi nghĩ làm cho cũng tăng gấp đôi như một công cụ cài đặt. Nếu nó có thể làm điều đó, tôi cũng chắc chắn rằng nó có thể giải quyết được vấn đề khó khăn của OP.
JBRWilkinson

Thực hiện, nhưng cú pháp khá tối nghĩa. Đến nay tôi đã gặp phải 2 lựa chọn thay thế: SCons (dễ dàng hơn nhiều so với Make + makenepend) và một công cụ để tự động hóa việc tạo Makefile (độc quyền).
Matthieu M.

@JbRWilkinson ... như tôi đã nói make có thể làm được khá nhiều thứ bạn muốn;)
Pemdas

3

Tùy thuộc vào môi trường của bạn, bạn có thể muốn xem Make (C / C ++), Ant / Maven (Java), Gradle (Groovy) - đó là những thứ tôi quen thuộc. Rất có thể có một giải pháp phổ biến cho môi trường của bạn.


Đó là môi trường ASP.NET / SQL
billy.bob

@ m.edmondson - sau đó cruisecontrol.sourceforge.net có lẽ là con đường của bạn để đi
bobah

Một môi trường tích hợp liên tục tốt khác cho ASP.NET là TeamCity. Tôi đã sử dụng CruiseControl và TeamCity và tôi thấy TeamCity dễ sử dụng hơn một chút và mạnh hơn một chút. Nhưng đó có thể không còn là trường hợp nữa.
RationalGeek

NANT là biến thể .NET ANT mà chúng tôi đã sử dụng cũng như bổ sung cho Cruise Control mà tôi sẽ không sử dụng để xây dựng mã để triển khai khi bạn có xu hướng muốn thêm một vài thứ được bao gồm / điều chỉnh / tham số và thay đổi, v.v. . Đó là những gì ANT / NANT giỏi.
Jon Hopkins

Tôi đề nghị thứ hai @Jon Hopkinds - nant là một kết hợp tuyệt vời cho môi trường của bạn.
JBRWilkinson


0

Chắc chắn có một cách để tự động hóa điều này. Với các công cụ như Chef , việc thiết lập một máy chủ hoàn toàn mới được cài đặt hoàn toàn có thể dễ dàng như:

knife bootstrap ip.address -N aNameForTheServer -r "role[some functionality]"

Trong trường hợp của tôi, một số bước được thực hiện bởi lệnh đơn đó là:

  • Cài đặt các thư viện, chương trình và mô-đun Python cần thiết
  • Tạo người dùng mới với quyền truy cập được chỉ định
  • Tạo cơ sở dữ liệu mới, tải lược đồ cần thiết, đặt quyền sở hữu và quyền truy cập
  • Tải xuống và giai đoạn mã dự án và sau đó viết ra thông tin cấu hình
  • Đưa mọi thứ vào chế độ sản xuất bằng cách khởi chạy các máy chủ cơ sở dữ liệu, thiết lập các công việc định kỳ, v.v.

Tôi không chắc chắn Chef sẽ hoạt động như thế nào trong môi trường của bạn vì hỗ trợ Windows được liệt kê là "sơ bộ", nhưng đối với hệ thống dựa trên UNIX thì đó là đầu gối của con ong.

Puppet là một hệ thống tương tự cũ hơn một chút so với đầu bếp và có thể cung cấp hỗ trợ Windows tốt hơn.


0

Điều đó đơn giản với Maven trong thế giới Java

mvn clean deploy

Trong cấu hình của chúng tôi, đây là tất cả các cấu trúc cần thiết của tệp WAR (kéo theo các phụ thuộc JAR khi cần), triển khai đến máy chủ web dev và tạo dữ liệu thử nghiệm đóng hộp trên cơ sở dữ liệu dev. Khi đó, Maven xử lý kiểm tra chức năng toàn diện thông qua SeleniumRC để xác minh ứng dụng hoạt động.

Lệnh đơn này giúp ứng dụng được triển khai đầy đủ vào cụm máy chủ dev để các nhà phát triển khác sẵn sàng làm việc ngay lập tức (giả sử nó đã vượt qua các bài kiểm tra). Thật không bình thường khi triển khai dev thất bại vì các nhà phát triển đã xác minh nó hoạt động cục bộ vớimvn clean install .

Tạo phẩm chụp nhanh (WAR) sau đó được sao chép vào kho lưu trữ Maven để chia sẻ với các nhà phát triển khác (theo deployhành vi Maven tiêu chuẩn ).

OK, nhưng bạn chỉ triển khai một ảnh chụp nhanh để phát triển, còn về thử nghiệm và sản xuất thì sao?

Việc phân phối cho các máy chủ sản xuất thử nghiệm và (sau này) được xử lý thông qua quy trình phát hành Maven mà chúng tôi muốn xử lý thủ công để đảm bảo rằng ai đó đang theo dõi bất kỳ đầu ra đáng ngờ nào. Người kiểm tra chỉ làm việc với các tạo phẩm được phát hành, không phải ảnh chụp nhanh.

Khi nó được phát hành, một tập lệnh xây dựng đơn giản được sử dụng để SFTP tệp WAR đến cụm máy chủ thử nghiệm, một lần nữa với ai đó đang xem quá trình để đảm bảo không có gì sai.

Cuối cùng, sau khi tất cả những người kiểm tra đều hài lòng, tệp WAR không thay đổi là SFTP cho đến cụm máy chủ sản xuất dự phòng, với một người nào đó theo dõi sát sao và vị trí quay ngược ngay lập tức trong trường hợp thảm họa.


0

Tôi hình dung tôi có thể kiểm tra xem cái đó có trong bài kiểm tra Joel của chúng tôi không ...

Tôi đã tạo một máy chủ xây dựng trong python tự động nó bằng cách sử dụng py sync .

Mã được đồng bộ hóa với VSS từ dòng lệnh, được xây dựng bằng borland make (hầu hết các IDE sẽ tạo tệp cho bạn dù họ có gọi chúng như vậy hay không. Delphi đã sử dụng để tạo tệp và gọi chúng là tệp .BPG, bây giờ chúng ' lại các tệp XML của MSBuild và bạn có thể sử dụng MSBuild) và các lỗi đã được đặt trong một tệp XML mà tôi vẫn tiếp tục thêm vào.

Vì vậy, chỉ cần viết một tập tin hàng loạt và làm những điều này.

  1. Đồng bộ hóa mã từ kiểm soát nguồn
  2. Xóa các công cụ câm (các tệp cấu hình riêng lẻ cho các dự án) mà bạn biết sẽ ngăn bạn có thể xây dựng mọi thứ.
  3. Xây dựng mọi thứ (Tôi sẽ xây dựng mọi thứ, làm cho tất cả anh em).
  4. Ghi nhật ký lỗi và cảnh báo và công cụ của bạn, nhưng không ngừng xây dựng. (Nếu bạn thực sự thông minh, bạn sẽ trích xuất tên của người cuối cùng để kiểm tra tệp khiến bản dựng bị phá vỡ và gửi cho anh ta một chương trình khó chịu)
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.