ฉันมีแอปพลิเคชันของฉัน (node.js) ที่ใช้งานบน VPS (linux) ฉันใช้ git hub เป็นที่เก็บ ฉันจะปรับใช้แอปพลิเคชันโดยอัตโนมัติบน git push ได้อย่างไร
ฉันมีแอปพลิเคชันของฉัน (node.js) ที่ใช้งานบน VPS (linux) ฉันใช้ git hub เป็นที่เก็บ ฉันจะปรับใช้แอปพลิเคชันโดยอัตโนมัติบน git push ได้อย่างไร
คำตอบ:
ตัวอย่างใน PHP:
ไปที่ github ในที่เก็บ github ของคุณเพิ่มคลิก "Admin"
คลิกแท็บ 'Service Hooks' => 'WebHook URLs'
และเพิ่ม
http://your-domain-name/git_test.php
จากนั้นสร้าง 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');
}
ใน build.sh คุณจะต้องใส่คำสั่งปกติเพื่อดึงไซต์ของคุณจาก github
มีการกล่าวถึง Git hooks เป็นคำตอบ / ข้อคิดเห็นซึ่งเคยใช้ได้ผลกับฉันในอดีต .. ดังนั้นนี่คือสูตรอาหารของฉันหากคนอื่นต้องการข้อมูลที่เฉพาะเจาะจงมากกว่านี้
ฉันใช้การรวมกันของgit post-receiver hookและnode-Supervisorเพื่อทำการปรับใช้อัตโนมัติอย่างง่ายให้สำเร็จ (สมมติว่าคุณกำลังใช้ที่เก็บ git ระยะไกลบนเครื่องนั้น)
ตั้งค่าตะขอหลังรับของคุณ
ในที่เก็บของคุณ: sudo vi hooks/post-receive
และควรมีลักษณะดังนี้:
#!/bin/sh
GIT_WORK_TREE=/home/path/to/your/www
export GIT_WORK_TREE
git checkout -f
ตั้งค่าการอนุญาตไฟล์: chmod +x hooks/post-receive
Git จะรีเฟรชไฟล์ในไดเรกทอรีแอปของคุณหลังจากกดไปที่ repo
รันโหนดด้วย Node-Supervisor
คุณจะต้องติดตั้ง Node-Supervisor บนเครื่องของคุณเป็นโมดูลโหนดส่วนกลาง: sudo npm install supervisor -g
ตอนนี้เพียงแค่เรียกใช้แอปโหนดของคุณด้วยผู้ดูแลโหนดและจะคอยดูการเปลี่ยนแปลงไฟล์ในไดเรกทอรีการทำงานของคุณ:
supervisor /home/path/to/your/www/server.js
(หมายเหตุsupervisor
แทนnode
)
npm install -l
บนเซิร์ฟเวอร์ระยะไกลนั้นชาญฉลาด แน่นอนว่าสิ่งนี้สามารถควบคู่ไปกับวิธีการของคุณโดยใช้ตะขอหลังรับ
อาจจะสายมากที่จะกลับมาที่นี่ แต่ฉันพบโปรเจ็กต์นี้ใน github และดูเหมือนจะทำในสิ่งที่คุณอยากทำ แต่ด้วยวิธีที่สะอาดกว่า
https://github.com/logsol/Github-Auto-Deploy
ลองดูสิ นอกจากนี้ยังสนใจที่จะรู้ว่าคนอื่นคิดอย่างไรกับเรื่องนี้ในแง่ของความคิดเห็นและการโหวตเพิ่ม
ไชโย
เอส
ในโครงการที่ฉันกำลังพัฒนาอยู่ฉันปฏิบัติตามแนวทางที่ครอบคลุมในหนังสือ "การจัดส่งแบบต่อเนื่อง" ที่ยอดเยี่ยมของ Jez Humble (ควรค่าแก่การอ่าน)
ซึ่งหมายถึงการสร้างไปป์ไลน์การปรับใช้โดยใช้เซิร์ฟเวอร์การรวมแบบต่อเนื่องบางรูปแบบ (ฉันใช้Goรุ่นชุมชนฟรีของ Thoughtworks ) ซึ่งมีหน้าที่ในการตรวจสอบโค้ดของคุณก่อนเพื่อหาคุณภาพความซับซ้อนและการทดสอบหน่วย จากนั้นสามารถทำตามขั้นตอนการปรับใช้ซึ่งส่งผลให้เกิดการพุชไปยังเซิร์ฟเวอร์ที่ใช้งานจริงของคุณ
ฟังดูซับซ้อนมาก แต่ไม่จำเป็นต้องเป็นและทำให้ขั้นตอนการเขียนโค้ดทั้งหมดและทำให้การผลิตปลอดภัยไร้กังวล (ไม่มีวันวางจำหน่ายที่น่ากลัว!)
ฉันใช้ไปป์ไลน์การปรับใช้เต็มรูปแบบสำหรับระบบสดและเวอร์ชันที่ถูกตัดลงสำหรับโมดูล npm ที่ฉันเขียนและทั้งสองใช้เทคนิคการปรับใช้ 1 คลิกเดียวกัน
ฉันเพิ่งเผยแพร่โซลูชันที่ใช้โหนดสำหรับปัญหาของคุณ: node-cd
ประกอบด้วยในแอปโหนดธรรมดาที่ทำงานบน VPS ของคุณซึ่งจะได้รับGithub post-รับ Hooksและเรียกใช้สคริปต์ที่คุณต้องการ (ตัวอย่างเช่นเชลล์สคริปต์ที่จะฆ่าแอปของคุณ git pull และรีสตาร์ท)
นี่คืออีกหนึ่งการใช้งาน nodeJS ง่ายๆ
เป็นเซิร์ฟเวอร์โหนดที่เรียบง่ายมากที่ทำงานบนชื่อโฮสต์และพอร์ตที่คุณกำหนดค่าและสามารถตั้งค่าเพื่อจัดการโพสต์ GitHub รับเว็บตะขอ และการดำเนินการ Pul / test / deploy ที่แท้จริงสามารถปรับแต่งให้ทำอะไรก็ได้ ในการนำไปใช้งานปัจจุบันเป็นคำสั่งเชลล์ที่ระบุแบบอินไลน์ในสคริปต์เซิร์ฟเวอร์ nodeJS และมีรูปแบบการรักษาความปลอดภัยที่ใช้ secret_key ที่เรียบง่ายมากเช่นกัน
https://github.com/shyam-habarakada/rscds
เซิร์ฟเวอร์การจัดเตรียมของฉันมีโหนดติดตั้งและทำงานอยู่แล้วดังนั้นการเขียนสิ่งนี้จึงทำได้ง่ายและรวดเร็ว
ฉันพบว่าโครงการสำหรับการปรับใช้งานง่ายโดยใช้ git
ฉันคิดว่ามันเป็นวิธีที่เหมาะสมสำหรับคุณ
ลองดูสิ
หากคุณต้องการแก้ไขหลาม / พายุทอร์นาโดตามที่ผมเขียนสคริปต์เพื่อจัดการแสดงโพสต์จาก Github ของWebhook บริการ คุณสามารถค้นหาได้ที่https://github.com/Akobi/ops/tree/master/autodeploy
โดยทั่วไปจะใช้ไฟล์กำหนดค่า JSON เพื่อแสดงรายการ repos ที่คุณคาดหวังว่าจะพุชจากคำสั่งใดที่คุณต้องการเรียกใช้ในการปรับใช้และไดเรกทอรีใดที่คำสั่งต้องรันสิ่งที่คุณต้องทำคือแก้ไขไฟล์ config ตามที่คุณต้องการและเรียกใช้ สคริปต์!
นอกจากนี้ฉันใช้ Nginx เป็น reverse proxy เพื่อส่งต่อ POST เหล่านี้ไปยังสคริปต์ของฉัน คุณสามารถค้นหาการกำหนดค่า Nginx ใน Github repo เดียวกันภายใต้โฟลเดอร์ 'nginx'
ดันมีความสุข!
คำตอบของ PHP นั้นถูกต้องตามกฎหมายในความคิดของฉัน แต่ถ้าคุณชอบ Ruby ฉันก็บล็อกวิธีแก้ปัญหา มันเหมือนกับคำตอบของ PHP เพียง แต่เป็นภาษาอื่น คุณใช้เว็บเบ็ดและคุณมีสคริปต์ง่ายๆสำหรับฟังคำขอ HTTP ที่เกี่ยวข้อง
http://gilesbowkett.blogspot.com/2012/06/heroku-style-deployment-on-ec2.html
ฉันได้สร้างเครื่องมือปรับใช้พื้นฐานของตัวเองซึ่งจะดึงการอัปเดตใหม่จาก repo โดยอัตโนมัติ - https://github.com/jesalg/SlimJim - โดยทั่วไปแล้วจะฟัง github post-received-hook และใช้พร็อกซีเพื่อทริกเกอร์ อัปเดตสคริปต์
ฉันเป็นผู้ก่อตั้งhttps://commando.ioและเมื่อเร็ว ๆ นี้เราได้ประกาศการรวมเข้ากับ GitHub ผ่านบริการ การรวมช่วยให้คุณรันการดำเนินการบนเซิร์ฟเวอร์เมื่อคุณพุชไปยังที่เก็บ GitHub นี่เป็นโอกาสที่ดีในการเรียกใช้สคริปต์การปรับใช้โดยอัตโนมัติเมื่อคุณพุชโค้ด
การเรียกใช้งานคือสคริปต์ที่คุณเขียนภายใน Commando.io ซึ่งสามารถเขียนด้วย bash, perl, python, Ruby, go หรือ node.js หากต้องการอ่านเพิ่มเติมและดูตัวอย่างสคริปต์การเรียกใช้งานgit pull
โปรดดูประกาศโพสต์บล็อกของเรา: http://blog.commando.io/run-executions-via-github-push/
Deepl.ioดูเหมือนจะเป็นคู่แข่งรายใหม่และมีแนวโน้มในพื้นที่นี้
คุณสมบัติ (นำมาจากเว็บไซต์):
นอกจากนี้โปรดทราบว่ามีบริการฟรี / ราคาไม่แพงเช่นREPOMAN.IOที่เกือบทั้งหมดนี้ให้คุณโดยอัตโนมัติ