Tôi đã triển khai ứng dụng của mình (node.js) trên VPS (linux). Tôi đang sử dụng git hub làm kho lưu trữ. Làm cách nào tôi có thể triển khai ứng dụng tự động trên git push?
Tôi đã triển khai ứng dụng của mình (node.js) trên VPS (linux). Tôi đang sử dụng git hub làm kho lưu trữ. Làm cách nào tôi có thể triển khai ứng dụng tự động trên git push?
Câu trả lời:
Ví dụ trong PHP:
Điều hướng đến github vào kho lưu trữ github của bạn, nhấp vào "Quản trị viên"
nhấp vào tab 'Service Hooks' => 'WebHook URL'
và thêm vào
http://your-domain-name/git_test.php
sau đó tạo git_test.php
<?php
try
{
$payload = json_decode($_REQUEST['payload']);
}
catch(Exception $e)
{
exit(0);
}
//log the request
file_put_contents('logs/github.txt', print_r($payload, TRUE), FILE_APPEND);
if ($payload->ref === 'refs/heads/master')
{
// path to your site deployment script
exec('./build.sh');
}
Trong build.sh, bạn sẽ cần đặt các lệnh thông thường để truy xuất trang web của mình từ github
Đã có một vài đề cập về móc Git dưới dạng câu trả lời / nhận xét, điều này đã hiệu quả với tôi trong quá khứ .. vì vậy đây là công thức của tôi nếu người khác yêu cầu chi tiết cụ thể hơn.
Tôi sử dụng kết hợp git post-accept hook và node-supervisor để triển khai tự động đơn giản (giả sử bạn đang sử dụng kho lưu trữ từ xa git trên máy đó).
Thiết lập Hook sau khi nhận của bạn
Trong kho lưu trữ của bạn: sudo vi hooks/post-receive
Và nó sẽ trông giống như sau:
#!/bin/sh
GIT_WORK_TREE=/home/path/to/your/www
export GIT_WORK_TREE
git checkout -f
Đặt quyền đối với tệp: chmod +x hooks/post-receive
Git sẽ làm mới các tệp trong thư mục ứng dụng của bạn sau khi đẩy đến repo.
Chạy Node với Node-Supervisor
Bạn sẽ cần cài đặt Node-Supervisor trên máy của mình dưới dạng mô-đun nút chung: sudo npm install supervisor -g
Bây giờ chỉ cần chạy ứng dụng nút của bạn với trình giám sát nút và nó sẽ theo dõi các thay đổi đối với các tệp trong thư mục làm việc của bạn:
supervisor /home/path/to/your/www/server.js
(ghi chú supervisor
thay cho node
).
npm install -l
trên máy chủ từ xa là một điều thông minh. Điều này tất nhiên có thể được kết hợp với phương pháp của bạn bằng cách sử dụng các móc sau nhận.
Có lẽ rất muộn để trả lời ở đây. Nhưng tôi đã tìm thấy dự án này trên github và dường như làm những gì bạn muốn nhưng theo một cách gọn gàng hơn nhiều.
https://github.com/logsol/Github-Auto-Deploy
Kiểm tra nó ra. Cũng sẽ quan tâm để biết những người khác nghĩ gì về điều này dưới dạng nhận xét và lượt ủng hộ.
Chúc mừng,
S
Trong một dự án mà tôi hiện đang phát triển, tôi tuân theo các nguyên tắc được đề cập trong cuốn sách tuyệt vời của Jez Humble "Giao hàng liên tục" (rất đáng đọc).
Điều này có nghĩa là tạo một quy trình triển khai bằng cách sử dụng một số dạng máy chủ tích hợp liên tục (Tôi sử dụng phiên bản cộng đồng miễn phí của Thoughtworks của Go ), chịu trách nhiệm kiểm tra mã của bạn trước tiên về chất lượng, độ phức tạp và chạy thử nghiệm đơn vị. Sau đó, nó có thể đi theo một đường ống triển khai dẫn đến việc đẩy đến các máy chủ sản xuất của bạn.
Điều này nghe có vẻ rất phức tạp, nhưng không nhất thiết phải như vậy, và nó làm cho toàn bộ quá trình viết mã và đưa nó vào sản xuất an toàn và không phải lo lắng (không có ngày phát hành đáng sợ!).
Tôi sử dụng đường ống triển khai đầy đủ cho các hệ thống đang hoạt động và một phiên bản cắt giảm cho các mô-đun npm mà tôi viết và cả hai đều chia sẻ cùng một kỹ thuật triển khai bằng 1 cú nhấp chuột.
Tôi vừa xuất bản một giải pháp dựa trên nút cho vấn đề của bạn: nút-cd
Nó bao gồm một ứng dụng nút đơn giản chạy trên VPS của bạn, sẽ nhận được Hooks sau khi nhận Github và thực thi một tập lệnh bạn thích (ví dụ: một tập lệnh shell sẽ giết ứng dụng của bạn, git pull và khởi động lại nó).
Đây là một cách triển khai nodeJS đơn giản khác.
Đó là một máy chủ nút rất đơn giản chạy trên tên máy chủ và cổng mà bạn định cấu hình và có thể được thiết lập để xử lý các móc web nhận bài đăng GitHub. Và các hành động pul / thử nghiệm / triển khai thực tế có thể được tùy chỉnh để làm bất cứ điều gì bạn muốn. Trong cách triển khai hiện tại, nó là một lệnh shell được chỉ định nội tuyến trong tập lệnh máy chủ nodeJS. Và cũng có một chương trình bảo mật dựa trên khóa bí mật rất đơn giản.
https://github.com/shyam-habarakada/rscds
Máy chủ dàn của tôi đã được cài đặt và đang chạy nút, vì vậy việc viết lên này rất nhanh chóng và dễ dàng.
Tôi tìm thấy dự án để triển khai dễ dàng sử dụng git.
Tôi nghĩ đó là cách thích hợp cho bạn.
Kiểm tra nó ra.
Nếu bạn muốn có một giải pháp dựa trên python / tornado, tôi đã viết một tập lệnh để xử lý các yêu cầu POST từ Dịch vụ Webhook của Github . Bạn có thể tìm thấy nó tại https://github.com/Akobi/ops/tree/master/autodeploy
Về cơ bản, nó sử dụng tệp cấu hình JSON để liệt kê kho mà bạn mong đợi được đẩy từ đó, lệnh nào bạn muốn chạy khi triển khai và thư mục lệnh phải chạy trong đó. Tất cả những gì bạn phải làm là sửa đổi tệp cấu hình theo ý muốn của bạn và chạy kịch bản!
Ngoài ra, tôi sử dụng Nginx làm proxy ngược để chuyển tiếp các POST này tới tập lệnh của tôi. Bạn có thể tìm cấu hình Nginx trong cùng repo Github trong thư mục 'nginx'.
Chúc vui vẻ!
câu trả lời PHP là hoàn toàn hợp pháp theo quan điểm của tôi, nhưng nếu bạn thích Ruby, tôi đã viết blog một giải pháp. nó giống với câu trả lời PHP, chỉ bằng một ngôn ngữ khác. bạn sử dụng một móc web và bạn có một tập lệnh đơn giản lắng nghe các yêu cầu HTTP có liên quan.
http://gilesbowkett.blogspot.com/2012/06/heroku-style-deployment-on-ec2.html
Tôi đã tạo công cụ triển khai thô sơ của riêng mình, công cụ này sẽ tự động kéo xuống các bản cập nhật mới từ repo - https://github.com/jesalg/SlimJim - Về cơ bản nó lắng nghe github post-accept-hook và sử dụng proxy để kích hoạt cập nhật tập lệnh.
Tôi là người sáng lập https://commando.io và gần đây chúng tôi đã công bố tích hợp với GitHub thông qua một dịch vụ. Việc tích hợp cho phép bạn chạy các thực thi trên máy chủ khi bạn chuyển sang repo GitHub. Đây là cơ hội hoàn hảo để tự động chạy các tập lệnh triển khai khi bạn đẩy mã.
Thực thi là một tập lệnh bạn viết bên trong Commando.io có thể được viết bằng bash, perl, python, ruby, go hoặc node.js. Để đọc thêm và xem kịch bản thực thi ví dụ về cách chạy git pull
, hãy xem thông báo bài đăng trên blog của chúng tôi: http://blog.commando.io/run-executions-via-github-push/
Deepl.io dường như là ứng cử viên mới và đầy hứa hẹn trong không gian này.
Các tính năng (lấy từ trang web của nó):
Cũng lưu ý rằng có những dịch vụ miễn phí / không tốn kém như REPOMAN.IO tự động hóa hầu như tất cả những điều này cho bạn.