خادم رد الاتصال عبر الويب Git (github/gitee) لجلب رمز جديد (الرجل الفقير CI)
هذه الأداة الصغيرة ولدت من مشاريع حقيقية. استمر في نشر الموقع التجريبي وإعداده وما إلى ذلك. لماذا تهتم إذا كنت تمتلك حساب git؟ كل ما تحتاجه هو شهادة جديدة من github، أضفها إلى مشروعك، وقم بالإعداد وفقًا لذلك، وفيولا، ستحصل على CI الخاص بك :)
$ npm install --save git-webhook-ci
أو
$ yarn add git-webhook-ci
قم بإنشاء ملف js (عادةً في الدليل الجذر لمشروعك). دعنا نسميها webhook.js
.
const gitWebhook = require ( 'git-webhook-ci' ) ;
const config = {
"secret" : "your-github-webhook-secret" ,
"path" : "/webhook" ,
"port" : 8081 ,
"branch" : "refs/heads/master" , // New in 0.4.1 you can pass * wildcard to listen to all branches
"cmd" : "git pull origin master --no-edit"
} ;
/*
*/
gitWebhook ( config ) ;
الحد الأدنى من الإعداد يمكن أن يكون مثل هذا:
// Default is github
gitWebhook ( { secret : "your-github-webhook-secret" } ) ;
// For Gitee
gitWebhook ( { secret : 'your-gitee-password' , provider : 'gitee' } ) ;
// For Gitlab
gitWebhook ( { secret : 'your-gitlab-token' , provider : 'gitlab' } ) ;
يقبل خيار التكوين cmd
الآن وظيفة.
التوقيع على النحو التالي
{
secret : 'your-secret-between-you-and-github' ,
cmd : ( result , opt , ref ) => {
// result has 3 properties
// 1. payload
// 2. host
// 3. event - from github / gitee
// opt is an environment variable that you can pass to the spawn
}
}
مثال على كيفية الجمع بين خيار فرع البدل واستدعاء الوظيفة
const gitWebhook = require ( 'git-webook-ci' ) ;
const { spawn } = require ( 'child_process' ) ;
const server = gitWebhook ( {
secret : 'your-secret-between-you-and-github' ,
branch : '*' ,
cmd : ( result , opt , ref ) => {
switch ( ref ) {
case 'refs/heads/master' :
const e1 = spawn ( 'npm' , [ 'run' , 'something' ] , opt ) ;
break ;
case 'refs/heads/develop' :
const e2 = spawn ( 'npm' , [ 'run' , 'something-else' ] , opt ) ;
break ;
default :
// do special stuff using the result object
specialFunc ( result . payload , opt ) ;
}
}
} ) ;
كما ترون من مثال الكود أعلاه. تقوم الطريقة gitWebhook
بإرجاع مثيل server
من http.createServer
. حتى تتمكن من إيقافه وإعادة تشغيله وما إلى ذلك بسهولة.
يمكنك الآن تمرير provider
خيار التكوين الجديد:
{
secret : 'your-password-between-you-and-gitee' ,
provider : 'gitee'
}
تحتاج فقط إلى تغيير الموفر إلى gitlab
:
{
secret : 'your-gitlab-token' ,
provider : 'gitlab'
}
لقد أضفنا موفرًا جديدًا هنا - إنه ليس git repo. وهو يدعم رد اتصال Wechat.
هناك العديد من الاختلافات بين رد اتصال wechat ومقدمي الخدمات الآخرين
هناك خاصية جديدة تحتاج إلى توفيرها عند بدء خطاف الويب الخاص بك باستخدام Wechat. لأن هذه عملية من خطوتين. بمجرد التحقق من الخادم الخاص بك مع خادم Wechat. سوف يقومون فقط بدفع البيانات إلى عنوان url. لذلك تحتاج إلى تشغيل هذا مرة واحدة مثل ذلك.
تحتاج أولاً إلى التشغيل باستخدام inited:false
(افتراضي)
{
secret : 'the-token-you-setup-with-wechat' ,
provider : 'wechat' ,
inited : false // this is default
}
ثم أعد تكوين خطاف الويب الخاص بك لتشغيل العملية العادية:
{
secret : 'the-token-you-setup-with-wechat' ,
provider : 'wechat' ,
inited : true // default: false
}
يوجد مثال كامل في الويكي لتوضيح كيفية القيام بذلك تلقائيًا، مع الوحدة الإضافية fs-extra
و nodemon
و node-config
.
إذا كنت تستخدم function كخاصية cmd
، فلن يتوفر سوى معلمتين عند تنفيذ رد الاتصال.
{
cmd : ( result , opt ) => {
// there is no ref
}
}
اسم العقار | وصف | تقصير | يكتب |
---|---|---|---|
دير | حيث يوجد دليل جذر git، يكون المكان الافتراضي هو المكان الذي يتم الاتصال فيه | process.cwd() | خيط |
سر | ممر مفتاح سري لتشفير البيانات بين جيثب والخادم الخاص بك | '' | خيط |
طريق | المسار الذي يتصل به خطاف الويب بالخادم الخاص بك | /webhook | خيط |
ميناء | رقم المنفذ الذي يعمل عليه خادم رد الاتصال هذا | 8081 | عدد صحيح |
فرع | الفرع الذي ستطلق فيه الإجراء عند تلقي حدث من جيثب. يمكنك تمرير * حرف البدل للاستماع إلى جميع الفروع | refs/heads/master | خيط |
كمد | الأمر الذي يجب تنفيذه عند حدوث رد الاتصال. يمكنك أيضًا تمرير هذا كدالة (انظر أعلاه للتوقيع) وهو مفيد بشكل خاص عند استخدام * للفرع | git pull origin master --no-edit | خيط |
بدأ | متاح فقط مع مزود wechat | false | منطقية |
داخليًا، نستخدم debug
لتتبع ما يحدث. لذلك يمكنك فقط تمرير env أثناء بدء تشغيل البرنامج النصي لتصحيح أخطاء الإعداد.
DEBUG= * node ./webhook.js
إذا قمت بذلك، سترى كمية هائلة من المعلومات. جميع علامات تصحيح الأخطاء لدينا مسبوقة بـ git-webhook-ci
، وإليك قائمة بجميع المفاتيح التي نستخدمها في npm هذا.
على سبيل المثال:
DEBUG=git-webhook-ci:main,git-webhook-ci:wechat node ./webhook.js
بعد ذلك سترى فقط الواجهة الرئيسية (الواجهة العلوية) ورسائل التصحيح الداخلي لـ Wechat.
يمكنك تثبيت هذه الأدوات على مستوى العالم.
$ npm install git-webhook-ci --global
ثم يمكنك الاتصال به من سطر الأوامر مثل ذلك
$ git-webhook-ci /path/to/your/git --secret secret-you-setup
أو في package.json
الخاص بك
{
"scripts" : {
"webhook" : "git-webhook-ci ./ --secret secret-you-setup"
}
}
ثم قم فقط بتشغيله باستخدام npm run webhook
راجع Wiki الخاص بنا للحصول على مزيد من المعلومات حول كيفية إعداد تطبيقك.
معهد ماساتشوستس للتكنولوجيا © NEWBRAN.CH
الطاقة عن طريق عقدة المولد.