Saya memiliki aplikasi saya (node.js) yang diterapkan di VPS (linux). Saya menggunakan git hub sebagai repositori. Bagaimana cara menerapkan aplikasi secara otomatis, di git push?
Saya memiliki aplikasi saya (node.js) yang diterapkan di VPS (linux). Saya menggunakan git hub sebagai repositori. Bagaimana cara menerapkan aplikasi secara otomatis, di git push?
Jawaban:
Contoh di PHP:
Arahkan ke github ke dalam repositori github Anda, tambahkan klik "Admin"
klik tab 'Service Hooks' => 'URL WebHook'
dan tambahkan
http://your-domain-name/git_test.php
lalu buat 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');
}
Di build.sh Anda harus meletakkan perintah biasa untuk mengambil situs Anda dari github
Ada beberapa penyebutan Git hooks sebagai jawaban / komentar, yang telah berhasil untuk saya di masa lalu .. jadi inilah resep saya jika orang lain membutuhkan lebih spesifik.
Saya menggunakan kombinasi git post-accept hook dan node-supervisor untuk menyelesaikan penerapan otomatis sederhana (dengan asumsi Anda menggunakan repositori jarak jauh git pada mesin itu).
Siapkan Hook Pasca-Terima Anda
Di repositori Anda: sudo vi hooks/post-receive
Dan itu akan terlihat seperti:
#!/bin/sh
GIT_WORK_TREE=/home/path/to/your/www
export GIT_WORK_TREE
git checkout -f
Setel izin file: chmod +x hooks/post-receive
Git akan menyegarkan file di direktori aplikasi Anda setelah didorong ke repo.
Jalankan Node dengan Node-Supervisor
Anda harus menginstal Node-Supervisor di komputer Anda sebagai modul node global: sudo npm install supervisor -g
Sekarang jalankan aplikasi node Anda dengan node-supervisor dan itu akan mengawasi perubahan pada file di direktori kerja Anda:
supervisor /home/path/to/your/www/server.js
(catatan supervisor
bukan node
).
npm install -l
di server jarak jauh adalah cerdas. Ini tentu saja dapat digabungkan dengan metode Anda menggunakan kait pasca-terima.
Mungkin sangat terlambat untuk membalas di sini. Tetapi saya menemukan proyek ini di github dan tampaknya melakukan apa yang ingin Anda lakukan tetapi dengan cara yang jauh lebih bersih.
https://github.com/logsol/Github-Auto-Deploy
Saksikan berikut ini. Akan juga tertarik untuk mengetahui pendapat orang lain tentang hal ini dalam hal komentar dan suara positif.
Cheers,
S
Dalam sebuah proyek yang sedang saya kembangkan, saya mengikuti pedoman yang tercakup dalam buku brilian Jez Humble "Pengiriman Berkelanjutan" (layak dibaca).
Ini berarti menciptakan pipa penyebaran menggunakan beberapa bentuk server integrasi berkesinambungan (saya menggunakan Thoughtworks edisi komunitas gratis Go ), yang bertanggung jawab untuk pertama memeriksa kode Anda untuk kualitas, kompleksitas dan menjalankan tes unit. Itu kemudian dapat mengikuti pipeline penerapan yang menghasilkan dorongan ke server produksi Anda.
Ini terdengar sangat rumit, tetapi tidak harus begitu, dan memang membuat seluruh proses penulisan kode dan itu membuat jalan produksi menjadi aman dan bebas khawatir (tidak ada hari rilis yang menakutkan!).
Saya menggunakan pipeline penerapan penuh untuk sistem langsung, dan versi yang dipotong untuk modul npm yang saya tulis, dan keduanya berbagi teknik penerapan 1-klik yang sama.
Saya baru saja menerbitkan solusi berbasis node untuk masalah Anda: node-cd
Ini terdiri dari aplikasi node sederhana yang berjalan di VPS Anda yang akan menerima Hooks pasca- terima Github dan menjalankan skrip yang Anda suka (misalnya skrip shell yang akan mematikan aplikasi Anda, git pull, dan memulai ulang).
Berikut implementasi nodeJS sederhana lainnya.
Ini adalah server node yang sangat sederhana yang berjalan pada nama host dan port yang Anda konfigurasikan dan dapat disiapkan untuk menangani posting GitHub yang menerima web hook. Dan tindakan pul / test / deploy yang sebenarnya dapat disesuaikan untuk melakukan apa pun yang Anda inginkan. Dalam implementasi saat ini, ini adalah perintah shell yang ditentukan secara inline dalam skrip server nodeJS. Dan ada skema keamanan berbasis secret_key yang sangat sederhana juga.
https://github.com/shyam-habarakada/rscds
Server pementasan saya sudah menginstal dan menjalankan node, jadi menulis ini cepat dan mudah.
Saya menemukan proyek untuk penerapan mudah menggunakan git.
Saya pikir itu cara yang tepat untuk Anda.
Saksikan berikut ini.
Jika Anda menginginkan solusi berbasis python / tornado, saya menulis skrip untuk menangani permintaan POST dari Layanan Webhook Github . Anda dapat menemukannya di https://github.com/Akobi/ops/tree/master/autodeploy
Ini pada dasarnya menggunakan file konfigurasi JSON untuk mendaftar repo mana yang Anda harapkan akan didorong, perintah mana yang ingin Anda jalankan saat menerapkan, dan direktori mana perintah harus dijalankan. Yang harus Anda lakukan adalah memodifikasi file konfigurasi sesuai keinginan Anda dan menjalankan naskah!
Selain itu, saya menggunakan Nginx sebagai proxy terbalik untuk meneruskan POST ini ke skrip saya. Anda dapat menemukan konfigurasi Nginx di repo Github yang sama di bawah folder 'nginx'.
Selamat mendorong!
jawaban PHP benar-benar sah menurut saya, tetapi jika Anda lebih suka Ruby, saya membuat blog solusinya. Itu sama saja dengan jawaban PHP, hanya dalam bahasa yang berbeda. Anda menggunakan web hook dan Anda memiliki skrip sederhana untuk mendengarkan permintaan HTTP yang relevan.
http://gilesbowkett.blogspot.com/2012/06/heroku-style-deployment-on-ec2.html
Saya telah membuat alat penerapan dasar saya sendiri yang secara otomatis akan menarik pembaruan baru dari repo - https://github.com/jesalg/SlimJim - Pada dasarnya alat ini mendengarkan github pasca-terima-kait dan menggunakan proxy untuk memicu perbarui skrip.
Saya adalah pendiri https://commando.io dan baru-baru ini kami mengumumkan integrasi dengan GitHub melalui sebuah layanan. Integrasi memungkinkan Anda menjalankan eksekusi di server saat Anda melakukan push ke repo GitHub. Ini adalah peluang sempurna untuk menjalankan skrip penerapan secara otomatis saat Anda memasukkan kode.
Eksekusi adalah skrip yang Anda tulis di dalam Commando.io yang dapat ditulis dalam bash, perl, python, ruby, go, atau node.js. Untuk membaca lebih lanjut, dan melihat contoh skrip eksekusi berjalan git pull
, lihat pengumuman entri blog kami: http://blog.commando.io/run-executions-via-github-push/
Deepl.io tampaknya menjadi pesaing baru dan menjanjikan di ruang ini.
Fitur (diambil dari situsnya):
Perhatikan juga ada layanan gratis / murah di luar sana seperti REPOMAN.IO yang mengotomatiskan hampir semua ini untuk Anda.