Phê duyệt của bạn khi sử dụng git
để triển khai có vẻ hơi lạ, chủ yếu là vì git là hệ thống quản lý mã nguồn chính chứ không phải công cụ triển khai. Đúng là bạn có thể làm nhiều thứ kỳ lạ với móc git, nhưng vì một lý do nào đó, tôi cảm thấy những người đó có khuynh hướng trở lại ám ảnh bạn.
Thông thường tôi khuyên bạn nên sử dụng một số công cụ continuous integration cho công việc. Một luồng công việc có thể, mà tôi có thể sử dụng bản thân mình, sẽ là
- Lưu trữ các tệp chủ đề của bạn trong kho công cộng tại GitHub. Nó miễn phí, có lẽ không có bí mật tuyệt vời trong mã nguồn chủ đề của bạn, và như là một tiền thưởng bổ sung, bạn thậm chí có thể mở nguồn bạn chủ đề.
- Thiết lập công việc CI với Travis CI cho kho lưu trữ của bạn. Bạn cơ bản có được một cá thể máy xây dựng miễn phí trong đám mây và bạn có thể thực hiện tất cả các loại công cụ trước hoặc sau khi xây dựng. Bạn có thể ví dụ. chạy
gulp build
(hoặc bất kỳ tên công việc nào của bạn) ở đó, vì vậy bạn sẽ không phải lưu trữ thư mục build
trong repo git.
- Trong móc Travis
after_success
, bạn có thể sao chép thư mục xây dựng vào máy chủ đích, ví dụ bằng cách sử dụng scp
. Here is an example of doing the very same thing with FTP. Travis hỗ trợ encryption of sensitive data, vì vậy bạn không phải lo lắng (ít nhất là quá nhiều) về việc lưu trữ tên người dùng và mật khẩu trong repo git.
Luồng đó hữu ích khi bạn muốn triển khai xây dựng mọi lúc bạn cam kết điều gì đó với git repo.BTW, khi bạn sử dụng nó lần đầu tiên nó thực sự cảm thấy như ma thuật: "Tôi chỉ cần thực hiện điều này git push
, và bây giờ thay đổi đã được sống trên máy chủ của tôi."
Tuy nhiên, bạn đã đề cập rằng bạn muốn triển khai mã đến máy chủ thử nghiệm . Đúng là các công cụ CI (chẳng hạn như Travis) có thể được sử dụng để duy trì luồng giữa các bước triển khai khác nhau, trong đó có nhiều máy chủ thử nghiệm. Một ví dụ dòng chảy cho các dự án lớn có thể là
development -> tests passing? -> release -> tests passing? -> integration -> tests passing? -> staging -> tests passing? -> production
... nơi dòng chảy có thể được một phần hoặc hoàn toàn tự động với một công cụ CI.
Tuy nhiên, bạn đã làm như vậy trong trường hợp triển khai xây dựng của bạn là một điều một lần mà đôi khi bạn chỉ muốn thực hiện theo cách thủ công. (Tôi xin lỗi nếu tôi hiểu sai bạn.) Đối với các loại tác vụ một lần này, việc sử dụng các tập lệnh shell hoặc công cụ quản lý tác vụ phù hợp hơn.
Bạn đã đề cập rằng bạn đã sử dụng gulp
. Đó là một công cụ rất tiện dụng cho công việc, đặc biệt là vì bạn có thể dễ dàng kết hợp các "luồng công việc" khác nhau. Bạn có thể có một nhiệm vụ để xây dựng chủ đề (gulp build
) và một nhiệm vụ khác để triển khai máy chủ thử nghiệm (gulp deploy-test
), chỉ mở rộng nhiệm vụ build
với bước bổ sung để sao chép tệp vào máy chủ thử nghiệm. gulp-scp trông giống như một plugin tốt cho công việc (tôi đã không sử dụng nó bản thân mình mặc dù, nó chỉ là kết quả tìm kiếm đầu tiên từ google). Nếu điều đó không hiệu quả, bạn luôn có thể gọi scp
theo cách thủ công với gulp-shell hoặc tương tự.
Bạn có thể thậm chí parametrize the deployment tasks vì vậy bạn có thể làm điều gì đó như: gulp deploy --test
và gulp deploy --production
Có bạn đi, đây là bài học đầu tiên của bạn trong devops. Có cả một thế giới của những thứ để tìm hiểu nếu loại nhiệm vụ tự động hóa trong các dự án phần mềm nghe có vẻ thú vị với bạn.
Trong khi có một số thông tin tốt ở đây, nó không trả lời câu hỏi về việc sử dụng móc Git. – rnevius
Tôi upvoted câu trả lời này như tôi nghĩ rằng nó là một * hữu ích * phản ứng với truy vấn của OP liên quan đến "một cách hiệu quả hơn/phổ biến hơn" trong khi câu trả lời của jthill là hữu ích cho git hooks khía cạnh. –
cho một repo riêng để sử dụng miễn phí git https://bitbucket.org/ –