Uygulamam (node.js) bir VPS (linux) üzerinde konuşlandırılmış durumda. Git hub'ı depo olarak kullanıyorum. Uygulamayı git push üzerinde otomatik olarak nasıl dağıtabilirim?
Uygulamam (node.js) bir VPS (linux) üzerinde konuşlandırılmış durumda. Git hub'ı depo olarak kullanıyorum. Uygulamayı git push üzerinde otomatik olarak nasıl dağıtabilirim?
Yanıtlar:
PHP'deki örnek:
Github deponuza gidin ve "Yönetici" yi tıklayın
'Service Hooks' => 'WebHook URL'leri' sekmesine tıklayın
ve Ekle
http://your-domain-name/git_test.php
sonra git_test.php oluştur
<?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 dosyasında, sitenizi github'dan almak için normal komutlar koymanız gerekecektir.
Geçmişte benim için işe yaramış olan, cevaplar / yorumlar olarak birkaç Git kancasından bahsediliyordu ... bu yüzden, başka birinin daha fazla ayrıntı gerektirmesi durumunda benim tarifim burada.
Basit otomatik dağıtımı gerçekleştirmek için git sonrası alma kancası ve düğüm denetleyicisinin bir kombinasyonunu kullanıyorum (bu makinede bir git uzak deposu kullandığınızı varsayarak).
Alım Sonrası Kancanızı Kurun
Deponuzda: sudo vi hooks/post-receive
Ve şunun gibi görünmelidir:
#!/bin/sh
GIT_WORK_TREE=/home/path/to/your/www
export GIT_WORK_TREE
git checkout -f
Dosya izinlerini ayarlayın: chmod +x hooks/post-receive
Git, depoya yapılan bir göndermenin ardından uygulama dizininizdeki dosyaları yenileyecektir.
Düğümü Node-Supervisor ile Çalıştırın
Node-Supervisor'ı makinenize global bir düğüm modülü olarak kurmanız gerekir: sudo npm install supervisor -g
Şimdi düğüm uygulamanızı node-supervisor ile çalıştırın ve çalışma dizininizdeki dosyalardaki değişiklikleri izleyecektir:
supervisor /home/path/to/your/www/server.js
( supervisor
yerine not edin node
).
npm install -l
uzak sunucuda bir uygulama yapan bir dağıtım stratejisi akıllıca olur. Bu, elbette, alma sonrası kancaları kullanarak yönteminizle birleştirilebilir.
Muhtemelen burada yanıtlamak için çok geç. Ama bu projeyi github'da buldum ve yapmak istediğinizi çok daha temiz bir şekilde yapıyor gibi görünüyor.
https://github.com/logsol/Github-Auto-Deploy
Bunu kontrol et. Başkalarının bunun hakkında yorum ve olumlu oylar açısından ne düşündüğünü bilmek de ilginizi çekecektir.
Şerefe,
S
Şu anda geliştirmekte olduğum bir projede Jez Humble'ın harika kitabı "Continuous Delivery" (okumaya değer) kapsamındaki yönergeleri takip ediyorum.
Bu , ilk önce kodunuzu kalite, karmaşıklık ve çalıştırma birimi testleri açısından kontrol etmekten sorumlu bir tür sürekli tümleştirme sunucusu kullanarak (Thoughtworks ücretsiz Go topluluk sürümünü kullanıyorum) bir dağıtım hattı oluşturmak anlamına gelir . Daha sonra, üretim sunucularınıza bir itme ile sonuçlanan bir dağıtım hattını izleyebilir.
Bu kulağa çok karmaşık geliyor, ancak olması gerekmiyor ve kod yazma sürecini tümüyle güvenli ve endişesiz hale getiriyor (korkutucu yayın günleri yok!).
Canlı sistemler için tam bir dağıtım ardışık düzeni ve yazdığım npm modülleri için kısaltılmış bir sürüm kullanıyorum ve her ikisi de aynı tek tıklamayla dağıtım tekniğini paylaşıyor.
Sorununuza düğüm tabanlı bir çözüm yayınladım: node-cd
VPS'nizde çalışan ve Github sonradan Hook'ları alacak ve beğendiğiniz bir komut dosyasını çalıştıracak (örneğin uygulamanızı öldürecek bir kabuk betiği, git çekme ve yeniden başlatacak bir kabuk betiği) çalıştıran basit bir düğüm uygulamasından oluşur .
İşte başka bir basit nodeJS uygulaması.
Yapılandırdığınız bir ana bilgisayar adı ve bağlantı noktası üzerinde çalışan ve GitHub post alım web kancalarını işlemek için ayarlanabilen çok basit bir düğüm sunucusudur. Ve gerçek darbe / test / dağıtım eylemleri, istediğiniz her şeyi yapmak için özelleştirilebilir. Mevcut uygulamada, nodeJS sunucu betiğinde satır içinde belirtilen bir kabuk komutudur. Ve yerinde çok basit bir gizli anahtar tabanlı güvenlik şeması da var.
https://github.com/shyam-habarakada/rscds
Evreleme sunucumda zaten düğüm kurulmuş ve çalışıyordu, bu yüzden bunu yazmak hızlı ve kolaydı.
Kolay dağıtım için git kullanan projeyi buldum.
Senin için uygun bir yol olduğunu düşünüyorum.
Bunu kontrol et.
Python / tornado tabanlı bir çözüm istiyorsanız, Github'un Webhook Hizmetlerinden POST isteklerini işlemek için bir komut dosyası yazdım . Bunu https://github.com/Akobi/ops/tree/master/autodeploy adresinde bulabilirsiniz.
Temel olarak, hangi depolardan itmeyi beklediğinizi, dağıtmada hangi komutları çalıştırmak istediğinizi ve komutların hangi dizinde çalışması gerektiğini listelemek için bir JSON yapılandırma dosyası kullanır. senaryo!
Ek olarak, bu POST'leri betiğime iletmek için Nginx'i bir ters proxy olarak kullanıyorum. Nginx yapılandırmasını aynı Github deposunda 'nginx' klasörü altında bulabilirsiniz.
Mutlu itme!
PHP cevabı bence tamamen yasal, ancak Ruby'yi tercih ederseniz, bir çözüm bloguna yazdım. PHP yanıtıyla aynı şey, sadece farklı bir dilde. bir web kancası kullanırsınız ve ilgili HTTP isteklerini dinleyen basit bir betiğiniz vardır.
http://gilesbowkett.blogspot.com/2012/06/heroku-style-deployment-on-ec2.html
Depodan yeni güncellemeleri otomatik olarak aşağı çekecek kendi temel dağıtım aracımı oluşturdum - https://github.com/jesalg/SlimJim - Temelde github kancayı aldıktan sonra dinliyor ve bir proxy'yi tetiklemek için betiği güncelle.
Ben kurucusuyum https://commando.io ve yakın zamanda bir servisi ile GitHub'dan ile entegrasyonunu açıkladı. Entegrasyon, bir GitHub deposuna gönderdiğinizde sunucularda yürütme çalıştırmanıza olanak tanır. Bu, kodu ittiğinizde dağıtım komut dosyalarını otomatik olarak çalıştırmak için mükemmel bir fırsattır.
Yürütme, Commando.io içinde yazdığınız ve bash, perl, python, ruby, go veya node.js ile yazılabilen bir betiktir. Daha fazlasını okumak ve örnek bir çalıştırma komut dosyası git pull
görmek için blog yazısı duyurumuza bakın: http://blog.commando.io/run-executions-via-github-push/
Deepl.io bu alanda yeni ve gelecek vaat eden bir rakip gibi görünüyor.
Özellikler (web sitesinden alınmıştır):
Ayrıca REPOMAN.IO gibi neredeyse tüm bunları sizin için otomatikleştiren ücretsiz / ucuz hizmetler olduğunu da unutmayın .