2008-08-20 35 views

Trả lời

6

Đối với một số dự án sử dụng tôi Capistrano để đẩy ra để sống. Nó được xây dựng trên đầu trang của ruby ​​và làm cho việc triển khai kịch bản viết siêu dễ dàng và sử dụng ssh.

Trên các dự án khác, tôi có một ứng dụng triển khai nhỏ sử dụng bash để xuất svn sang thư mục tạm thời và sau đó rsync nó lên máy chủ trực tiếp. Bạn có thể làm cho rsync sử dụng ssh.

Tôi rất thích phương pháp Capistrano, ngay cả khi dự án của bạn không có trong ruby ​​/ ray.

0

Bạn luôn có thể viết ứng dụng khách/máy chủ nhỏ mã hóa nguồn, đẩy tệp và sau đó giải mã tại đích. Đó là một chút công việc, nhưng có lẽ là một số lượng nhỏ. Và đó là kịch bản miễn là công cụ tự động hóa của bạn hỗ trợ thực hiện một cái gì đó trong hệ thống tập tin (mà tôi nghĩ rằng tất cả làm).

Nhược điểm duy nhất là bạn có thể không nhận được thông báo lỗi có ý nghĩa về lỗi trong môi trường tích hợp mà không làm việc nhiều hơn một chút (mặc dù tùy thuộc vào thiết lập của bạn, điều này có thể đơn giản như gửi thông báo lỗi đến stdout).

0

hm, xung quanh ở đây chúng tôi sử dụng "máy chủ" dàn dựng cho mục đích thử nghiệm trên môi trường trực tiếp (thực tế, máy chủ ảo apache trên máy chủ sản xuất) và araxis merge (công cụ so sánh tệp theo dòng thực sự thông minh) để đồng bộ hóa phát triển và dàn dựng.

sau khi thử nghiệm, chỉ; thay thế các tập tin trên webroot sản xuất :)

/mp

4

Điều này có vẻ như đại loại như vậy mà có thể được thực hiện dễ dàng với SFTP. Hãy xem PuTTY (psftp và pscp) hoặc WinSCP cho Windows hoặc rsyncOpenSSH cho Unixes.

1

Tạo bản sao thư mục trang web trực tiếp, sử dụng rsync để cập nhật bản sao đó bằng phiên bản mới nhất, sau đó đổi tên thư mục trực tiếp và cập nhật để phiên bản cập nhật hiện đang hoạt động.

Trong bash:

#!/bin/bash 

set -e 
cp -R /var/livesite /var/newversion 
rsync [email protected]:/var/readytogolive /var/newversion 
mv /var/livesite /var/oldlivesite 
mv /var/newversion /var/livesite 

Viola!

Chỉnh sửa: @Ted Percival - Đó là một ý tưởng hay. Tôi thậm chí không biết về "set -e". Đã cập nhật tập lệnh. Chỉnh sửa: cập nhật một lần nữa tại đề nghị của Ted (mặc dù tôi nghĩ rằng nó sẽ vẫn làm việc nếu bằng cách nào đó lệnh cp thất bại, và nếu cp không bạn có thể có vấn đề nghiêm trọng hơn.)

1

@Neall, tôi muốn thêm một set -e vào thứ hai bởi vì bạn không muốn trang web đang được thay thế nếu rsync không thành công vì bất kỳ lý do gì. set -e làm cho tập lệnh thoát ra nếu bất kỳ lệnh nào của nó không thành công.

Chỉnh sửa: set -e phải là điều đầu tiên trong tập lệnh, ngay sau #!/bin/bash.

1

Tôi sẽ đề xuất thứ hai cho Capistrano, mặc dù nếu bạn đang tìm kiếm giải pháp dựa trên GUI, bạn có thể thử kết thúc giao diện Webistrano. Sạch sẽ, ssh dựa trên, sane triển khai và rollback ngữ nghĩa và dễ dàng scripting và mở rộng thông qua ruby.

0

Trên một công việc tự do tôi đã làm, chúng tôi thiết lập ba môi trường riêng biệt.

  • Máy chủ Dev, chạy tiếp tục được xây dựng bằng CruiseControl. Bất kỳ đăng ký nào cũng sẽ kích hoạt bản dựng. Kiểm tra QA đã được thực hiện ở đây.
  • Máy chủ thử nghiệm, kiểm tra chấp nhận của người dùng đó đã được thực hiện.
  • Sản xuất.

Các công việc là như sau:

  1. kiểm tra phát triển trong những thay đổi để SourceControl.
  2. CruiseControl xây dựng và triển khai bản dựng cho Dev.
  3. Dev được QA'ed
  4. Sau khi vượt qua QA, tập lệnh robocopy được chạy triển khai Dev build to Test.
  5. Kiểm tra được UAT'ed
  6. Sau khi kiểm tra trôi qua, tập lệnh robocopy được chạy triển khai Kiểm tra tới PRD.
Các vấn đề liên quan