2010-04-21 31 views
9

Tôi đang trong quá trình tìm kiếm cách hợp lý hóa việc triển khai một trong các ứng dụng web php của chúng tôi (nếu nó hoạt động, tôi sẽ chuyển sang các ứng dụng khác).Triển khai tự động Mercurial

Tôi rất thích giao diện này: http://www.springloops.com/, nhưng đó là SVN và chúng tôi đang sử dụng tính năng siêu việt.

Thật không may là chúng tôi không có quyền truy cập shell vào máy chủ hiện tại của chúng tôi, vì vậy một điều gì đó hoạt động trên FTP sẽ là tốt nhất, nếu có ai có ý tưởng gì?

Trả lời

9

Bạn sẽ muốn sử dụng lệnh của mercurial hg archive từ móc. Nó có một bản chụp của bản sửa đổi bạn chỉ ra (thông qua thẻ, vv) và sau đó xuất khẩu nó.

Trong "sản xuất" HGRC kho của bạn, bạn có thể có một cái gì đó như thế này:

[hooks] 
changegroup = ./doDeploy.sh 

và sau đó ./doDeploy.sh sẽ có trong nó:

hg archive -r tip /tmp/deployme 
ftp /tmp/deployme ftp://remoteserver 

Bạn sẽ kết thúc phải làm việc xung quanh tất cả các loại lỗi nhỏ như quyền truy cập tệp, tệp đã bị xóa khỏi repo nhưng vẫn tồn tại trên máy chủ, v.v. nhưng nói chung cung cấp khung tốt cho hệ thống, khi có thay đổi được người quản lý phát hành tự động tải lên như napshot để sống hệ thống.

+0

Im giả định trên một hệ thống cửa sổ này sẽ chỉ là tập tin bat thay vào đó? – richzilla

+0

Đó là chắc chắn có thể, hoặc bạn có thể làm điều đó inprocess trong python. Xem chương 10 của cuốn sách thủy ngân miễn phí để biết chi tiết. –

+0

lưu trữ, bởi vì nó xuất khẩu toàn bộ kho lưu trữ, không phải là IMHO một cách tốt nhất để tiếp tục triển khai (kích thước chuyển) –

2

Đó là 5 xu của tôi: Phần ftp của câu trả lời chỉ hoạt động cho các dự án không có thư mục con (FTP không hỗ trợ) nếu bạn muốn thực sự đồng bộ hóa ở đây là kịch bản sh của tôi (nó sử dụng LFTP, Tùy chọn -e sẽ xóa các tệp từ xa không còn hiện diện tại địa phương):

#!/bin/sh 
rm -rf /home/user/tmp/deploy/* 
hg archive -r tip /home/user/tmp/deploy/ 
lftp -u username,password your.ftpsite.com << END_SCRIPT 
set ftp:ssl-allow no 
cd httpdocs/yoursite/ 
mirror -R -e --only-newer --log=/home/user/lftp.log /home/user/tmp/deploy . 
END_SCRIPT 
echo "#--- $(date)" >> /home/user/lftp.log 
exit 0 
Các vấn đề liên quan