
لقد كنت منذ وقت طويل في إنشاء مستودعات على جيثب. هذا أكثر فاعلية بكثير من الاحتفاظ بكل شيء على Google Drive أو الأسوأ من ذلك على محرك الأقراص الثابتة. ولكن هنا السؤال الذي يطرح نفسه على الفور: كيفية نشر لخادم العمل؟
جلبتني معظم عمليات البحث إلى جنكينز وأدوات النشر المستمر الأخرى. لكنني أردت إيجاد حل مختلف. لذلك ذهبت إلى خدمة Webhook المجانية.
توصي Skillbox بما يلي: دورة عملية "Mobile Developer PRO" .
نذكرك: لجميع قراء "Habr" - خصم بقيمة 10،000 روبل عند التسجيل في أي دورة تدريبية في Skillbox باستخدام الرمز الترويجي "Habr".
الأساس التقني لـ Webhook هو قطرة المحيط الرقمي الجديدة مع Ubuntu 16.04 كخادم إنتاج. لتقليل عدد الخطوات المطلوبة لتنفيذ الخطة ، يتم تنفيذ جميع الإجراءات بواسطة المستخدم الجذر.
لنبدأ مع جيثب
إذا كان لديك مستودع وترغب في استخدامه ، فيمكنك تخطي هذه الخطوة - فقط استخدم SSH URI ، وهذا كل شيء. إذا لم يكن كذلك ، فقم بإنشاء واحد واستخدم SSH URI أيضًا.

تثبيت Go و Webhook (Digital Ocean قطرة).
قبل أن تبدأ ، الأمر يستحق التحديث السريع والترقية باستخدام برنامج تثبيت Ubuntu 16.04 الجديد.
sudo apt update -y && sudo apt upgrade -y
الآن لتثبيت WebHook ، تحتاج إلى تثبيت لغة البرمجة Go. في وقت كتابة هذا التقرير ، كان الإصدار 1.11.4 ذا صلة ، لذلك إذا كان لديك إصدار مختلف ، فيجب إجراء تغييرات.
wget https://dl.google.com/go/go1.11.4.linux-amd64.tar.gz sudo tar -C /usr/local -xzf go1.11.4.linux-amd64.tar.gz export PATH=$PATH:/usr/local/go/bin
حان الوقت لتنزيل أحدث إصدار من Webhook.
go get github.com/adnanh/webhook
لا يوجد شريط تقدم أثناء التنزيل ، لذلك عليك فقط الانتظار. بعد اكتمال العملية ، قم بتنفيذ ~ / go / bin / webhook.
تم تثبيت Webhook ، لكن يلزمك إنشاء دليل وبنية ملف بحيث يعمل كل شيء كما يجب.
mkdir ~/webhooks mkdir ~/webhooks/deployment-tutorial touch ~/webhooks/hooks.json touch ~/webhooks/deployment-tutorial/deploy.sh chmod +x ~/webhooks/deployment-tutorial/deploy.sh
يعد ملف hooks.json مسؤولاً عن التكوين والتوجيه ، كما أن publish.sh بمثابة أداة لتنفيذ الأوامر اللازمة للترقية من GitHub.
الخطوة الأولى هي تكوين hooks.json عن طريق فتحه في محرر نصي. يحتوي الملف على التكوين لنقاط النهاية التي سيتم إنشاؤها بعد إطلاق Webhook ، وهو عبارة عن مجموعة من الكائنات ، كل منها عبارة عن نقطة نهاية فريدة.
[{ "id": "deployment-tutorial", "execute-command": "/root/webhooks/deployment-tutorial/deploy.sh", "command-working-directory": "/root/deployed-site/", "response-message": "Executing deploy script...", "trigger-rule": { "match": { "type": "payload-hash-sha1", "secret": "The Returners", "parameter": { "source": "header", "name": "X-Hub-Signature" } } } }]
Id هو الاسم الفريد الذي سيتم استخدامه لعنوان URL لنقطة النهاية ؛
تنفيذ الأوامر - برنامج نصي سيتم تنفيذه عند تنشيط نقطة النهاية ؛
command-work-directory - الدليل الذي يتم استخدامه أثناء تنفيذ الأمر execute-command ؛
قاعدة التشغيل - خيار سيتم استخدامه لأغراض أمان المعلومات ، وهذه عبارة سرية لنقاط النهاية.
اسمحوا لي أن أذكرك بأنني أؤدي جميع الإجراءات من الجذر ، وبالتالي فإن عنوان البداية هو / الجذر. إذا قمت بتسجيل الدخول كمستخدم عادي ، فأنت بحاجة إلى التسجيل / home / اسم المستخدم ، حيث يكون اسم المستخدم ، المنطقي ، هو اسم هذا المستخدم. لا حاجة لاستخدام ~ / ، يجب أن يكون المسار مطلقًا ، وإلا فسوف تحصل على خطأ.
ربما لاحظت أننا أنشأنا مجلد عمل غير موجود بعد. قبل إنشائه ، ستحتاج إلى إنهاء مع publish.sh.
يجب أن يبدأ البرنامج النصي دائمًا بـ "shebang". قبل فتح الملف ، يجب تشغيل أي bash. حسنًا ، يتم تنفيذ الأوامر التالية في البرنامج النصي:
#!/bin/bash git fetch --all git checkout --force "origin/master"
الآن يتم تثبيت كل من Go و Webhook ، لذلك تحتاج إلى تكوين التكوين في hooks.json وكتابة برنامج نصي مسؤول عن النشر. سيقوم بتغيير دليل الوجهة ، بالعمل مع الفرع الرئيسي لمستودع جيثب.
أخيرًا ، حان الوقت لإحضار Webhook إلى الوضع النشط ، واستبدال 000،000،000،000 بـ IP العامل لـ Doplet.
/root/go/bin/webhook -hooks /root/webhooks/hooks.json -ip "000.000.000.000" -verbose
في وقت التشغيل ، قد تلاحظ إخراج عنوان URL مع {id} في النهاية. سيكون هذا هو معرف الكائن الذي تم إنشاؤه بالفعل في hooks.json: ملف تعليمي للنشر.
إعداد Git (Digital Ocean Droplet)
إعداد الخادم لم ينته بعد. لإكماله ، تحتاج إلى فتح نافذة طرفية جديدة والمصادقة مرة أخرى على الخادم ، بينما تعمل النافذة الأولى على تشغيل Webhook. في البداية ، قمنا بتعيين مستودع URI ، والآن نحتاج إلى استخدامه.
للقيام بذلك ، انتقل إلى دليل العمل المحدد في hooks.json واكتب ما يلي:
git init git remote add origin git@github.com:jhsu98/deployment-tutorial.git
في هذه الحالة ، تحتاج إلى استبدال URI الخاص بك بدلاً من ما أشرت إليه.
ستكون الخطوة الأخيرة هي إنشاء مفاتيح SSH من أجل الاتصال بـ GitHub بمساعدتهم. في نافذة المحطة الطرفية ، اكتب ssh-keygen وتأكيد بالضغط على Enter حتى يتم إنشاء المفاتيح. ثم تحتاج إلى عرض المفاتيح العامة عن طريق كتابة cat ~ / .ssh / id_rsa.pub. تحصل على شيء مثل هذا:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCyzJrPVOJqsTqD2R3xirTp3VNMwpmJMyLklzJg4sRQyslTUmbNNmDVO573EbXQQf2PqPQljqKDDlSaELdav4OTi1gPCoDary300yUqC/efLGHflZ6pMNuGsP2zTzerD/TMjzl1FXF1wOGTXqcC4TvGBS1bFyUY5n8wSOJ8ntZ6bBNv0zA2t7X1vH8ahIBJLKCayq9ipobKlHPYqxBt6zAoeh/ILQ0PWhGkmbGqqzqN1jcVWOefLgj4Dl8bZWORS1nkqrVg2wFC2nnibH97kZLsNrdQaeK8jUrkUWkJcUELI02mkkqh2RtBx9EwQEvsm9YuDBD9xF+HyuWoAeqcKerb root@github-webhook-tutorial
حسنًا ، كل ما تبقى الآن هو إعداد مستودع جيثب واختبار النشر.
تكوين مفتاح النشر و Webhook (GitHub)
في المستعرض ، انتقل إلى إعدادات المستودع. تحتاج أولاً إلى إضافة مفتاح النشر.

عند إضافة مفتاح ، تحتاج إلى تحديد اسمه وإدخاله في إخراج المفتاح أعلاه. GitHub يسمح لك بالعمل فقط مع المفاتيح العامة ، لذلك إذا لزم الأمر ، تحتاج إلى تحديد عدة مفاتيح. بمجرد الانتهاء من كل شيء ، يصبح قسم Webhook هو دوره.

الحقول الثلاثة في هذا القسم تحتاج إلى عناية خاصة. هذه هي عناوين URL للحمولة ، ونوع المحتوى والسرية. عنوان URL الخاص بالتحميل - نقطة النهاية التي يستمع إليها Webhook ، ونوع المحتوى - تنسيق البيانات ، والسرية - السطر المخصص من ملف hooks.json. في حالتنا ، هو "العائدون".

بعد إنشاء Webhook ، يجب أن تظهر علامة مقابلة في الإعدادات ، والتي تشير إلى أن الخادم متاح. إذا قمت بفحص الجهاز باستخدام Webhook عاملة ، يمكنك أن ترى أن المستودع قيد التشغيل بالفعل.
للتحقق من سير العمل ، انسخ مستودع التخزين إلى الجهاز المحلي ، إن لم يكن قد تم بالفعل ، وقم بإجراء تغييرات على الفرع الرئيسي. بعد ذلك ، يجب عرضها على الخادم. القيام به.
يقضي المطور ، الذي قام بكل هذا بالفعل عدة مرات ، حوالي 10 دقائق على التهيئة. ولكن هذا بعد ساعات من التجربة والخطأ. تذكر هذه الميزات التخصيص الأربعة الهامة:
- تأكد من استخدام المسار المطلق لـ hooks.json.
- لا تجعل نشر. قابل للتنفيذ.
- قم بتأكيد اتصالات SSH أثناء أول "جهة اتصال" لـ GitHub وخادم الإنتاج.
- لا تستخدم "shebang" الخاطئة في البرنامج النصي bash.
توصي Skillbox بما يلي: