Mô tả môi trường triển khai tốt nhất bạn đã làm việc với [đã đóng]


8

Bài kiểm tra Joel bao gồm câu hỏi:

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

Điều này rất quan trọng, nhưng tôi tự hỏi, làm thế nào để sắp xếp hợp lý một số quy trình triển khai ?

Tất cả phần mềm từ thu nhỏ đến web đều được áp dụng: môi trường triển khai tốt nhất bạn đã làm việc với những bước nào?


Có phải bài kiểm tra Joel bao gồm câu hỏi: "có một bể bơi ngoài trời & sân tennis riêng dành cho nhân viên không?"

1
@Pierre 303 Không, nhưng nếu bạn đã có, tôi có thể gửi hồ sơ của mình ở đâu? :)
Steven Evers

swift.com : gửi CV của bạn tại HQ ở Bỉ


Điều đáng kinh ngạc nhất tôi từng thấy.

Câu trả lời:


6

Đó là môi trường tôi đã thiết lập trong công ty của mình và hiện đang làm việc với.

Mô tả môi trường

Chúng tôi là một nhóm gồm 4 nhà phát triển , làm việc trong một dự án máy tính để bàn Java . Mã nguồn nằm dưới Mercurial , với repo chính được lưu trữ trên máy chủ phát triển của chúng tôi. Chúng tôi chủ yếu sử dụng TortoiseHg để làm việc với Mercurial. Các dự án mà chúng tôi mở nguồn là trên BitBucket . Dự án được xây dựng với Maven . IDE chúng tôi sử dụng là Netbeans , hoạt động rất ấn tượng với Maven (nó cũng hoạt động tốt với Mercurial).

Máy chủ dev của chúng tôi chạy Archiva , một kho lưu trữ Maven proxy. Chúng tôi sử dụng maven để xây dựng dự án, nhưng chúng tôi cũng sử dụng nó để thực hiện nó (mvn exec), để triển khai các tạo phẩm được tạo ra cho Archiva (phát hành mvn) và để tạo ra một hội đồng từ các tạo phẩm được lưu trữ bởi Archiva (lắp ráp mvn).

Chúng tôi cũng có một bugtracker Redmine , và nó biết về repos Mercurial. Chúng tôi sử dụng máy khách RSS để được thông báo về hoạt động của dự án (từ Redmine và Mercurial). Chúng tôi cũng có một máy chủ Jabber để gửi tin nhắn và tệp cho nhau.

Chúng tôi thiết lập một máy chủ Hudson (tích hợp liên tục) và máy chủ Sonar (số liệu mã). Nhưng trong thực tế, chúng tôi không thực sự sử dụng nó.

Chúng tôi có quyền lựa chọn sử dụng Windows hoặc Linux

Các bước để phát hành

Ví dụ để phát hành phiên bản 1.1.3

# tags the VCS, updates all the version numbers in the maven config file
mvn --batch-mode release:prepare -DreleaseVersion=1.1.3 -DdevelopmentVersion=1.1.4-SNAPSHOT
# performs a clean build, runs all tests, deploys to the server
mvn release:perform
# creates a unique jar (the final product) from the previously deployed artifacts (no recomilation involved)
<update the version number in a config file to 1.1.3>
mvn assembly:assembly

+1 cho phát hành mvn: thực hiện
Fil

+1 để có Sonar trong quá trình xây dựng của bạn. -1 vì không sử dụng nó.
mhaller

Thật ra, tôi đơn giản là không biết phải làm gì với dữ liệu mà Sonar đưa cho tôi. Nhìn vào số liệu thống kê của codebase rất thú vị, nhưng nó không giúp tôi trong công việc hàng ngày. Ồ, và tôi không thích các công cụ phân tích tĩnh: chúng mang lại quá nhiều thông tin sai lệch có ích.
barjak

3

Tôi đã sử dụng vải để thiết lập triển khai trong khởi động mới của tôi.

Cập nhật máy chủ trực tiếp đơn giản như:

fab prod upgrade

Điều này nhận được tất cả các nguồn mới nhất, thiết lập trang bảo trì, di chuyển cơ sở dữ liệu, thiết lập mã mới, nhận tất cả các phụ thuộc, dừng / bắt đầu mọi thứ, v.v. Tất cả thông tin thích hợp (mật khẩu, tên người dùng, v.v.) tất cả hỏi trước.

Tôi chỉ cần chạy lệnh, nhập một số thông tin và đi lấy một tách cà phê. Mọi thứ đều sống khi tôi trở lại.


Điều đó nghe thật tuyệt vời.
Steven Evers

2

Tôi không chắc chắn tôi đồng ý với Joel về điều này - chắc chắn không có bước nào tốt hơn một bước?

Chúng tôi sử dụng Hudson để tạo kịch bản cho các bản dựng của mình (liên tục trên cả Mac và Windows), bao gồm trình cài đặt tòa nhà và hình ảnh CD trong vài lần chúng tôi thực sự gửi một hộp thực. Chúng tôi luôn kiểm tra từ trình cài đặt trong QA.

Chúng tôi cũng sử dụng Hudson để sao chép các trình cài đặt vào khu vực "beta" trên trang web trực tiếp của chúng tôi một lần mỗi ngày.

Vì vậy, về cơ bản chúng tôi có thể triển khai cho người dùng mỗi ngày không theo các bước. Khi chúng tôi phát hành chính thức, chúng tôi chỉ cần chuyển tên tệp của trình cài đặt trong CMS để biến trình cài đặt beta hiện tại thành phiên bản phát hành và thay đổi tập lệnh xây dựng Ant để chuyển sang số phiên bản mới (trở thành phiên bản beta mới).

Việc thiết lập và làm việc này làm cho ngày phát hành trở thành một sự kiện hoàn chỉnh (đó chính xác là những gì nó cần phải có). Chúng tôi đã không có một lỗi trong ngày phát hành trong một thời gian bây giờ (nó đã từng xảy ra thường xuyên)!


Khi nào bản dựng của trình cài đặt được kích hoạt, nếu không phải bằng tay? Định kỳ ? Trên một sự kiện cam kết?
barjak

1

Tại một trong những khách hàng của tôi, chúng tôi làm việc trong Rails và có mọi thứ được thiết lập để việc triển khai lấy từ git. Chúng tôi không "xây dựng", mặc dù, vì đó là Rails.

Vì vậy, quá trình triển khai là một cái gì đó như

git checkout review
git merge whatever-that-was
git push
cap review deploy:migrations

Sự pha trộn giữa Capistrano và GIT hoạt động khá tốt.

Tất nhiên, kịch bản tiếp theo sẽ là để bỏ qua một số bước này.


1

Quy trình làm việc hiện tại của tôi là như thế này.

  1. Phát triển trên VM cục bộ
  2. Kiểm tra, Cam kết thay đổi, đẩy lên github
  3. ssh vào EC2 và thay đổi kéo

Tất cả điều này có thể được viết thành một bước.


8
Bạn có thể kịch bản bước 1, thực sự? :)
barjak

kho github công cộng hay riêng tư? Nếu sau này, kinh nghiệm của bạn là gì?

Tôi đang sử dụng một kho lưu trữ công cộng, nhưng đối với một dự án trước đây tôi đang sử dụng Kiln từ Fogcux như một repo riêng.
mc Bông

@ ThorbjørnRavnAndersen: Tôi đang sử dụng repos github riêng. Nó hoạt động tốt, giống hệt như công khai, ngoại trừ chỉ bạn mới có thể truy cập nó. :)
Bjarke Freund-Hansen

1

Chúng tôi có ứng dụng Java Web Start - chúng tôi sắp xây dựng lại quy trình triển khai thành tệp WAR với tệp JNLP được điều chỉnh theo URL được yêu cầu khi người dùng yêu cầu.

Tôi hy vọng rằng sẽ đi vô cùng trơn tru.

Gần đây chúng tôi đã sử dụng git rất nhiều. Ý tưởng đăng ký triển khai trong kho git để bạn có thể chỉ cần yêu cầu git kiểm tra phiên bản bạn muốn chạy. Cập nhật nền, thời gian kiểm tra rất ngắn để cập nhật các tập tin thực tế, thời gian kiểm tra rất ngắn để quay lại phiên bản trước trong trường hợp có vấn đề. Tôi nghĩ rằng nó có thể làm việc rất tốt cho chúng tôi.


1

Cấp điều này bây giờ khá là ngày, nhưng tôi đã từng có các bước sau đây để triển khai mã của mình nhiều lần trước đây mà tôi thấy là tốt nhất tôi từng có:

  1. Đăng ký mã của tôi thay đổi thành Visual SourceSafe.
  2. Nhận phiên bản mới nhất trên máy của sếp tôi.
  3. Biên dịch giải pháp tạo ra một vài DLL.
  4. Cho thấy rằng mã mới làm việc như nó nên.
  5. Ngắt kết nối máy chủ sản xuất khỏi Internet để cập nhật mà không bị can thiệp.
  6. Sao chép các tệp nhị phân vào máy chủ sản xuất.
  7. Bắt đầu IIS.
  8. Quay số lại vào internet trên dòng ISDN được sử dụng.

Điều này đã trở lại vào cuối những năm 1990 khi tôi đang lập trình Visual C ++ trên NT 4.0 cho một dot-com. Hầu hết các quy trình triển khai vì điều này đã trở nên phức tạp hơn khi có các nhiệm vụ nAnt và các công cụ bổ sung khác như xử lý các máy chủ sản xuất cân bằng tải trong khi trước đó chúng ta chỉ có một hộp sản xuất.

Khóa học bàn giao quy trình cho một kỹ sư phát hành thì tốt hơn nhưng không hoàn toàn giống như khi tôi đặt mã vào tự nhiên.


0

Không phải là không có gì, nhưng nhấp chuột phải vào ứng dụng web ASP.NET và chọn Xuất bản là một bất ngờ thú vị, thú vị khi tôi phải triển khai một ứng dụng. Cấp, tôi đã phải thiết lập thư mục ảo và như vậy trên IIS trước, nhưng việc triển khai các phiên bản mới chỉ là một vài cú nhấp chuột.

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.