গিট পুশ (গিটহাব এবং নোড.জেএস) পরে আমি কীভাবে আমার অ্যাপ্লিকেশনটি স্বয়ংক্রিয়ভাবে স্থাপন করতে পারি?


92

আমি আমার অ্যাপ্লিকেশন (নোড.জেএস) একটি ভিপিএস (লিনাক্স) এ স্থাপন করেছি। আমি গিট হাবটি সংগ্রহস্থল হিসাবে ব্যবহার করছি। গিট পুশ করে কীভাবে আমি স্বয়ংক্রিয়ভাবে অ্যাপ্লিকেশন স্থাপন করব?


4
আপনি কি গিট হুকগুলি প্রগিট.আর / পুস্তক / চিচ -3-৩.এইচটিএমএল পরীক্ষা করেছেন এবং গিথুব হেল্প.github.com/test-webhooks এও চেক করেছেন
পাভেল

4
উপরোক্ত অগ্রগতির লিঙ্কের জন্য আপডেট করুন: git-scm.com/book/en/Customizing-Git-Git- হুকস
কোড

ধাক্কা বিকল্পগুলি: git 2.10 একটি আকর্ষণীয় বৈশিষ্ট্য যোগ করা হবে stackoverflow.com/a/38770670/6309
VonC

উত্তর:


64

পিএইচপি উদাহরণ:

আপনার গিথুব সংগ্রহস্থলে গিথুব নেভিগেট করুন "অ্যাডমিন" ক্লিক করুন

ট্যাব ক্লিক করুন 'পরিষেবা হুকস' => 'ওয়েবহুক ইউআরএল'

এবং যোগ কর

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');
}

বিল্ট.শে আপনাকে গিথব থেকে আপনার সাইট পুনরুদ্ধার করতে স্বাভাবিক কমান্ডগুলি লাগাতে হবে


6
হাই, আপনাকে অনেক ধন্যবাদ বব আমার ডিপ্লোয়মেন্ট স্ক্রিপ্ট কার্যকর করতে বাধা দেয় কি?
উন্নত

16
@ অ্যাডভান্সড 1 সম্ভবত স্ক্রিপ্ট অনুমতি, এক্সিকিউশন ফ্ল্যাগ ... 2 পিএইচপি-তে ক্লোজিং ট্যাগ যুক্ত করা একটি খারাপ অভ্যাস।
পাভেল ডুবিয়েল

4
@ অ্যাডভান্সড একটি কৌশল বব আপনার স্ক্রিপ্টটি কার্যকর করে না তা নিশ্চিত করার জন্য যে پوুস্ট অনুরোধটি গিথুবের সার্ভার থেকে এসেছে make অনুরোধ করার সময় তারা যে HTTP শিরোনাম প্রেরণ করে তা পরীক্ষা করে দেখুন। এছাড়াও আপনি এমন একটি 'গোপন' URL তৈরি করতে পারেন যা অনুমানযোগ্য নয় ess
jayap

4
@Purefan না একটি তামাশা :) stackoverflow.com/questions/3219383/...
Pawel Dubiel

4
@ এরিয়াস2038 কখনও শুনেছেন "আপনি প্রতিদিন নতুন কিছু শিখেন"? আজ এটি আমার "নতুন কিছু"। ভাগ করে নেওয়ার জন্য ধন্যবাদ!
খাঁটিফান

23

উত্তর / মন্তব্য হিসাবে গিট হুকের কয়েকটি উল্লেখ ছিল, যা অতীতে আমার জন্য কাজ করেছে .. সুতরাং আমার রেসিপিটির জন্য অন্য কারও কাছে আরও সুনির্দিষ্ট হওয়া দরকার।

আমি সাধারণ অটো ডিপ্লোয়মেন্ট সম্পন্ন করতে গিট পোস্ট-রিসিভ হুক এবং নোড-সুপারভাইজারের সংমিশ্রণটি ব্যবহার করি (ধরে নিই যে আপনি সেই মেশিনে গিট রিমোট রিপোজিটরি ব্যবহার করছেন)।


আপনার পোস্ট-রিসিভ হুক সেটআপ করুন

আপনার ভাণ্ডারে: 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

গিট আপনার অ্যাপ ডিরেক্টরিতে ফাইলগুলি রিফ্রেশ করবে রেপোতে চাপ দেওয়ার পরে।


নোড-সুপারভাইজারের সাথে নোড চালান

আপনাকে গ্লোবাল নোড মডিউল হিসাবে আপনার মেশিনে নোড-সুপারভাইজার ইনস্টল করতে হবে: sudo npm install supervisor -g

এখন কেবল নোড-সুপারভাইজারের সাহায্যে আপনার নোড অ্যাপটি চালান এবং এটি আপনার কার্যকরী ডিরেক্টরিতে থাকা ফাইলগুলিতে পরিবর্তনের জন্য নজর রাখবে:

supervisor /home/path/to/your/www/server.js( supervisorপরিবর্তে নোট node)


এটি ঠিক আছে, তবে সচেতন হওয়ার একটি বিষয় আপনি যদি নিজের স্থানীয় অ্যাপটিতে একটি নতুন এনপিএম যুক্ত করেন তবে আপনাকে সার্ভারের সেই মডিউলটির জন্য একটি এনপিএম ইনস্টলও করতে হবে। আপনি যদি তা না করেন তবে আপনার সম্ভবত একটি ক্রাশিং অ্যাপ রয়েছে।
k00k

4
নাহ .. আমার স্থানীয় অ্যাপের উপর নির্ভর করে যে কোনও নোড মডিউলগুলি আমার প্রকল্পের নোড_মডিউলগুলি সাব ডিরেক্টরিতে ইনস্টল করা আছে, এটি আমার স্থানীয় জিআইটি রেপো, অতএব আমি যুক্ত করার পরে, প্রতিশ্রুতিবদ্ধ করব, তারপরে তারাও অনুলিপি থাকা সার্ভারে অনুলিপি করবে।
ওয়েস জনসন

8
ঠিক আছে, তবে এর অর্থ হ'ল যদি সেই মডিউলগুলির মধ্যে এমন কোনও কোড থাকে যা সংকলিত ছিল (উদাহরণস্বরূপ মহাশের মতো), এটি অন্য কোনও সার্ভারে না চলে যা অন্য একটি ওএস এবং / অথবা আর্কিটেকচারের মতো। আপনার নির্ভরতাগুলির উপর নজর রাখতে প্যাকেজ.জসন ব্যবহার করা এবং তারপরে npm install -lরিমোট সার্ভারে একটি ডিপ্লাই কৌশল প্রয়োগ করা স্মার্ট। এটি অবশ্যই পোস্ট-রিসিভ হুক ব্যবহার করে আপনার পদ্ধতির সাথে মিলিত হতে পারে।
k00k

4
এবং আপনি কেবল গিট ওয়ার্ক ট্রিটিকে গিট চেকআউট কমান্ডে সরাসরি যুক্ত করতে পারেন: গিট - ওয়ার্ক-ট্রি = / ভার / www / ট্রি --git-dir = / var / repo / deploy.git চেকআউট -f (তৈরির পরিবর্তে পরিবর্তনশীল এবং এটি আপনার স্ক্রিপ্টে রফতানি করে
জেসনবি

প্রশ্নটি যদিও গিথুবকে নিয়ে।
নোহ

18

সম্ভবত এখানে প্রত্যাবর্তন করতে খুব দেরী। তবে আমি এই প্রকল্পটি গিথুবটিতে পেয়েছি এবং আপনি যা করতে চান তা করছেন বলে মনে করছেন তবে আরও পরিষ্কার উপায়ে।

https://github.com/logsol/Github- অটো- ডিপ্লোয়

এটা দেখ. মন্তব্যগুলি এবং অগ্রগতির ক্ষেত্রে অন্যরা কী ভাববে তা জানতে আগ্রহী হবে।

চিয়ার্স,
এস


15
"সম্ভবত এখানে প্রত্যাবর্তন করতে খুব দেরি হয়েছে।" দেরি করোনা. :) আপনি প্রকৃতপক্ষে পুরো সম্প্রদায়কে অবদান রাখছেন (আমাদের বেশিরভাগ গুগলরা; বাহ, কেবলমাত্র এই 20k মতামতটি দেখছেন!), একক লোক "কিছুক্ষণ আগে" প্রশ্নটি করেনি। সময়, নিজে থেকেই, অপ্রাসঙ্গিক: যতক্ষণ প্রশ্নে প্রযুক্তি প্রাসঙ্গিক হয় ততক্ষণ আপনার উত্তরও হবে। (টিপটির জন্য ধন্যবাদ, বিটিডাব্লু, এটি পরীক্ষা করে
দেখছি

4
আপনার মাথা খারাপ করার জন্য ধন্যবাদ! ;) এটি আমার জন্য দুর্দান্ত কাজ করেছিল তখন। এখন আমি স্বয়ংক্রিয় মোতায়েনের জন্য ট্র্যাভিস (travis-ci.org), ( আমি যেখানেই পারি ) ব্যবহার করতে পছন্দ করি । @ লুনাকীদ
সৌরভ কুমার

8

একটি প্রকল্পে আমি বর্তমানে বিকাশ করছি আমি জেজ হাম্বলের উজ্জ্বল বই "কন্টিনিউয়াস ডেলিভারি" (ভালভাবে পড়ার পক্ষে মূল্যবান) এর কভার গাইডলাইন অনুসরণ করি।

একটি নিয়োজন পাইপলাইন তৈরি একটানা ইন্টিগ্রেশন সার্ভার (আমি Thoughtworks বিনামূল্যে সম্প্রদায়ের সংস্করণ ব্যবহার কিছু ফর্ম ব্যবহার করে এই অর্থ যান ), যে প্রথম মান, জটিলতা জন্য আপনার কোড চেক এবং ইউনিট পরীক্ষা চালানোর জন্য দায়ী। এরপরে একটি ডিপ্লোয়মেন্ট পাইপলাইন অনুসরণ করতে পারে যার ফলস্বরূপ আপনার উত্পাদন সার্ভারগুলিতে ধাক্কা।

এটি খুব জটিল মনে হচ্ছে, তবে তা হওয়ার দরকার নেই, এবং কোড লেখার পুরো প্রক্রিয়াটি তৈরি করে এবং এটি উত্পাদনকে নিরাপদ করে এবং উদ্বেগ মুক্ত করে তোলে (কোন ভয়ঙ্কর মুক্তির দিন নয়!)।

আমি লাইভ সিস্টেমগুলির জন্য একটি সম্পূর্ণ ডিপ্লোয়মেন্ট পাইপলাইন এবং আমার লেখা এনপিএম মডিউলগুলির একটি কাটা ডাউন সংস্করণ ব্যবহার করি এবং উভয়ই একই 1-ক্লিক ডিপ্লোয়মেন্ট কৌশল ভাগ করে।


বইয়ের সুপারিশের জন্য আরও একটি +1! আমি সিআই আবিষ্কার করছি যে আকস্মিকভাবে যোগাযোগ করা উচিত নয়।
মেরিক

ভাল, লোকেরা একটি সাধারণ প্রশ্ন জিজ্ঞাসা করে, আপনি একটি সম্পূর্ণ সমাধান দিন :)। আমাকে বলতে হবে এটি একটি ওভারকিল। তবে আপনি যদি ইতিমধ্যে ক্রমাগত বিতরণ ব্যবহার করে থাকেন তবে সম্ভবত এটিই যাওয়ার পথ।
উইন্ডমায়াও

8

আমি আপনার সমস্যার একটি নোড-ভিত্তিক সমাধান প্রকাশ করেছি: নোড-সিডি

এটি আপনার ভিপিএসে চলমান একটি সহজ নোড অ্যাপের মধ্যে রয়েছে যা গিথুব পোস্ট- রিসিভ হুকগুলি গ্রহণ করবে এবং আপনার পছন্দ মতো একটি স্ক্রিপ্ট কার্যকর করবে (উদাহরণস্বরূপ একটি শেল স্ক্রিপ্ট যা আপনার অ্যাপ্লিকেশনটিকে মেরে ফেলবে, গিট টানবে এবং এটি পুনরায় চালু করবে)।


+1 কারণ এটি খাঁটি নোড.জেএস, তাই পোস্টারটিকে তাদের স্ট্যাকের জন্য কিছু যুক্ত করতে হবে না বা এমন ভাষা ব্যবহার করতে হবে যা তারা স্বাচ্ছন্দ্যবোধ করে না। এছাড়াও, সত্যিই খুব সুন্দরভাবে
কোডযুক্ত

3

এখানে অন্য একটি সহজ নোডজেএস বাস্তবায়ন।

এটি একটি খুব সাধারণ নোড সার্ভার যা আপনার কনফিগার করা হোস্টনাম এবং পোর্টে চলে এবং গিটহাব পোস্টটি ওয়েব হুকগুলি গ্রহণ করতে পরিচালনা করতে পারেন। এবং প্রকৃত পাল / পরীক্ষা / মোতায়েনের ক্রিয়াগুলি আপনার পছন্দসই কিছু করতে কাস্টমাইজ করা যায়। বর্তমান প্রয়োগে, এটি একটি শেল কমান্ড যা নোডজেএস সার্ভার স্ক্রিপ্টে ইনলাইন নির্দিষ্ট করা হয়। এবং পাশাপাশি একটি খুব সাধারণ গোপন_কি ভিত্তিক সুরক্ষা স্কিম রয়েছে।

https://github.com/shyam-habarakada/rscds

আমার স্টেজিং সার্ভারটিতে ইতিমধ্যে নোড ইনস্টল এবং চলমান রয়েছে, তাই এগুলি লেখা দ্রুত এবং সহজ ছিল।


" yourdomain.com:8088/… " - সত্যিই ?! "সিক্রেট" কীটি ইউআরএল সাফ হয়ে গেছে !!!! কেউ এটি ব্যবহার করা উচিত নয়।
জুলিয়ান নাইট

4
একটি অ্যাসপিরিন আছে এবং জুলিয়ান সেটেল করুন। Https ব্যবহার করার সময় প্যারামিটারগুলি এনক্রিপ্ট করা হয়।
গ্যাভিন

3

আমি সহজেই স্থাপনার জন্য গিট ব্যবহারের জন্য প্রকল্পটি পেয়েছি।

গিট-প্লে

আমি মনে করি এটি আপনার পক্ষে সঠিক উপায়।

এটা দেখ.


2

আপনি যদি একটি পাইথন / টর্নেডো-ভিত্তিক সমাধান চান, আমি গিটহাব থেকে পোষ্ট অনুরোধ পরিচালনা করতে একটি স্ক্রিপ্ট লিখেছিলেন Webhook সার্ভিস । আপনি এটি https://github.com/Akobi/ops/tree/master/autodeploy এ খুঁজে পেতে পারেন

এটি কোন জপসন কনফিগারেশন ফাইলটি ব্যবহার করে আপনি কোন রেপোসের কাছ থেকে পুশ করবেন, কোন আদেশটি আপনি মোতায়েন করতে চান এবং কমান্ডগুলি অবশ্যই পরিচালনা করতে হবে তা তালিকাভুক্ত করতে ব্যবহার করে you আপনাকে যা করতে হবে তা হল কনফিগারেশন ফাইলটি আপনার পছন্দ অনুযায়ী চালানো এবং চালানো এই পান্ডুলিপি!

এছাড়াও, আমি আমার স্ক্রিপ্টে এই পোস্টগুলি ফরোয়ার্ড করতে বিপরীত প্রক্সি হিসাবে Nginx ব্যবহার করি। আপনি 'এনগিনেক্স' ফোল্ডারের নীচে একই গিথুব রেপোতে এনগিনেক্স কনফিগারেশনটি পেতে পারেন।

শুভ ঠেলা!


1

পিএইচপি উত্তরটি আমার মতে সম্পূর্ণরূপে বৈধ, তবে আপনি যদি রুবিকে পছন্দ করেন তবে আমি একটি সমাধান ব্লগ করেছি। এটি পিএইচপি উত্তর হিসাবে একই জিনিস, ঠিক একটি ভিন্ন ভাষায়। আপনি একটি ওয়েব হুক ব্যবহার করেন এবং প্রাসঙ্গিক এইচটিটিপি অনুরোধগুলির জন্য আপনার কাছে একটি সহজ স্ক্রিপ্ট রয়েছে।

http://gilesbokett.blogspot.com/2012/06/heroku-style-depدام-on-ec2.html


1

আমি আমার নিজস্ব প্রাথমিক ডিপোরিয়াল সরঞ্জাম তৈরি করেছি যা রেপো থেকে স্বয়ংক্রিয়ভাবে নতুন আপডেটগুলি সরিয়ে ফেলতে পারে - https://github.com/jesalg/SlimJim - মূলত এটি গিথুব পোস্ট-রিসিভ-হুক শোনায় এবং একটি প্রক্সি ব্যবহার করে একটি ট্রিগার স্ক্রিপ্ট আপডেট করুন।


1

আমি https://commando.io এর প্রতিষ্ঠাতা এবং সম্প্রতি আমরা একটি পরিষেবার মাধ্যমে গিটহাবের সাথে একীকরণের ঘোষণা দিয়েছি। ইন্টিগ্রেশন আপনাকে যখন গিটহাব রেপোতে চাপ দেয় তখন সার্ভারগুলিতে মৃত্যুদন্ড কার্যকর করার অনুমতি দেয়। আপনি কোড চাপলে এই ডিগ্রি স্ক্রিপ্টগুলি স্বয়ংক্রিয়ভাবে চালনার উপযুক্ত সুযোগ।

এক্সিকিউশন হ'ল স্ক্রিপ্ট যা আপনি কমান্ডো.ইও-র ভিতরে লিখেছেন যা বাশ, পারল, পাইথন, রুবি, গো, বা নোড.জেজে লেখা যেতে পারে inside আরও পড়তে, এবং দৌড়ের উদাহরণ কার্যকর করার স্ক্রিপ্টটি git pullদেখতে, আমাদের ব্লগ পোস্ট ঘোষণাটি দেখুন: http://blog.commando.io/run-exections-via-github-push/


1

ডিপল.ইও এই স্থানটিতে নতুন এবং প্রতিশ্রুতিবদ্ধ প্রতিযোগী বলে মনে হচ্ছে।

বৈশিষ্ট্য (এর ওয়েবসাইট থেকে নেওয়া):

  • গিটল্যাব এবং গিটহাব থেকে ওয়েবহুকগুলি ধরুন
  • একাধিক সংগ্রহস্থল কনফিগার করুন
  • সংগ্রহস্থল প্রতি একাধিক শাখা কনফিগার করুন
  • পিএইচপি, শেল বা উভয়ই আপনার নিজস্ব ডিপ্লয় স্ক্রিপ্ট ব্যবহার করুন
  • নিশ্চিতকরণ ইমেল প্রেরণ

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.