Git Deploy
اربط خادمك بمستودع على GitHub أو GitLab أو Gitea أو Forgejo وانشر تلقائيًا عند كل push أو إصدار أو وسم، مع المسارات المحمية وإعادة التشغيل وفحوص CI والتراجع بنقرة واحدة.
يربط تبويب Git Deploy في Portal خادمك بمستودع Git على GitHub أو GitLab أو Gitea أو Forgejo. تُنسخ ملفاته إلى خادمك تلقائيًا — عند كل push، أو عند نشر إصدار (release)، أو عند دفع وسم (tag)، أو بنقرة زر. وإن أردت، يُوقَف خادمك بشكل نظيف قبل النشر ويُعاد تشغيله بعده.
باختصار: ادفع كودك، وبعد ثوانٍ قليلة يعمل على خادمك. لا مزيد من الرفع عبر SFTP، ولا فك ملفات ZIP في مدير الملفات، ولا إعادة تشغيل منسية.
ما ستتعلمه
- كيف تربط مستودعًا، عبر تطبيق Daki Git Deploy على GitHub أو عبر توكن وصول
- متى يعمل النشر وكيف تشغّله بنفسك
- كيف تحافظ على العوالم وقواعد البيانات وملفات
.envبأمان باستخدام المسارات المحمية - كيف تعمل إعادة التشغيل وسجل النشر والتراجع والحالة في مستودعك
- كيف تمنح فريقك الصلاحيات المناسبة
لمن هذه الميزة
- مطورو بوتات Discord وتطبيقات Node.js أو Python أو Java الذين يعيش كودهم بالفعل على GitHub أو GitLab.
- شبكات Minecraft وفرق خوادم الألعاب التي تحتفظ بالإضافات أو الإعدادات أو الـ datapacks في مستودع، وتريد أن تُطبَّق التغييرات بطريقة قابلة للتتبع.
- الفرق: يعمل عدة أشخاص في المستودع، والخادم محدّث دائمًا، وصلاحيات المستخدمين الفرعيين تحدد بدقة من يستطيع النشر.
- المشاريع القائمة على الإصدارات: لا يصل إلى الخادم إلا الإصدارات المنشورة (مثل ملف
.jarجاهز من إصدار)، لا كل عمل قيد التطوير.
قبل أن تبدأ
- خادم في Portal يعرض تبويب Git Deploy. يظهر في شريط تنقل الخادم ضمن Essentials، مباشرةً بعد Files افتراضيًا.
- مستودع على GitHub (github.com) أو GitLab (gitlab.com أو نسختك الخاصة، مع المجموعات الفرعية مثل
group/subgroup/project) أو Gitea أو Forgejo (مثل Codeberg أو نسختك الخاصة). المستودعات العامة والخاصة تعمل كلاهما.
يحدد Daki لكل نوع خادم (egg) ما إذا كان التبويب يظهر. إذا لم ترَ Git Deploy، فهو غير مفعّل لنوع خادمك.
يستخدم هذا الدليل التسميات الإنجليزية لتبويب Git Deploy. يتوفر التبويب بـ 19 لغة ويتبع اللغة التي اخترتها في Portal — الأزرار في المكان نفسه في كل اللغات.
البدء السريع مع GitHub (موصى به)
الطريقة الأسرع: الاتصال عبر Daki Git Deploy، تطبيق GitHub الرسمي من Daki Hosting. تسجّل الدخول إلى GitHub وتختار مستودعاتك — دون الحاجة إلى توكن أو webhook.
افتح تبويب Git Deploy
في Portal، افتح خادمك وانتقل إلى تبويب Git Deploy. ضمن Git service، اختر GitHub.
اتصل بـ GitHub
في مربع GitHub access، انقر Connect with GitHub. سجّل الدخول إلى GitHub ووافق على التطبيق.
في المرة الأولى، ينقلك GitHub مباشرةً بعد ذلك إلى اختيار المستودعات التي يُسمح للتطبيق بالوصول إليها (All repositories أو المستودعات المحددة فقط) — خطوة واحدة بدلًا من خطوتين. بعدها تعود إلى Portal، ويُظهر مربع GitHub access العبارة Connected via Daki Git Deploy as متبوعةً باسمك على GitHub. ويؤكد مربع Webhook أنه لا شيء يحتاج إلى إعداد: تصل عمليات push والإصدارات عبر التطبيق تلقائيًا.
اختر مستودعك وفرعك
انقر Choose from my repositories واختر مستودعك — أو الصق رابطه على الويب أو رابط الاستنساخ، أو اكتب المسار. انقر Load branches واختر الفرع الذي تريد نشره. اترك الحقل فارغًا لاستخدام الفرع الافتراضي للمستودع.
اختر متى وكيف تنشر
ضمن When to deploy، اختر وضعًا (مثل Every push). ثم حدّد مجلد الهدف، والمسارات المحمية وسلوك إعادة التشغيل.
احفظ
انقر Save settings في الشريط أسفل الصفحة. هذا كل شيء: يعرض رأس التبويب Automatic deploys on، ويُنشر دفعك التالي تلقائيًا. للنشر فورًا، انقر Deploy now في الأعلى على اليمين.
- السماح بمستودع آخر: يفتح Choose repositories on GitHub اختيار المستودعات على GitHub مرة أخرى، حيث تختار المستودعات التي يُسمح لـ Daki Git Deploy بالوصول إليها.
- إزالة الاتصال: انقر Disconnect. عندها لا ينشر الخادم من المستودعات الخاصة بعد الآن.
لا تحتاج أبدًا إلى تجديد أي شيء. في كل نشر، تجلب Portal مفتاحًا جديدًا قصير الصلاحية من GitHub (صالحًا لمدة ساعة واحدة) لا يصل إلا إلى مستودع خادمك الواحد. يحدث ذلك في الخلفية.
البدء السريع بتوكن الوصول
لـ GitLab وGitea وForgejo — وGitHub إن فضّلت ذلك — تحفظ توكن وصول شخصيًا. المستودعات العامة تعمل دون أي توكن على الإطلاق.
اختر خدمة Git
افتح خادمك ← Git Deploy واختر Git service. لنسختك الخاصة من GitLab أو Gitea أو Forgejo، أدخل عنوان URL للخادم (مثل
https://codeberg.orgأوhttps://git.example.com). بالنسبة إلى gitlab.com، اتركه فارغًا.أدخل المستودع
أدخل المستودع كمسار (
owner/name)، أو ببساطة الصق رابطه على الويب أو رابط الاستنساخ (clone). بالنسبة إلى مستودع عام، هذا كل ما تحتاجه — دون توكن، يعرض مربع الوصول No token – public repositories only.احفظ توكنًا للمستودعات الخاصة
مع GitHub، انقر أولًا على Use an own access token instead في مربع GitHub access. ثم أنشئ توكنًا لدى مزوّد Git — رابط Create a token on … في Portal يأخذك مباشرةً إلى الصفحة الصحيحة — واحفظه ضمن Personal access token. تتحقق Portal من التوكن فورًا. انظر صلاحيات التوكن للحقوق التي يحتاجها.
اختر إعداداتك واحفظ
اختر متى تنشر، ومجلد الهدف، والمسارات المحمية، وسلوك إعادة التشغيل، ثم انقر Save settings.
أضف الـ webhook
يعرض مربع Webhook Payload URL وSecret، ولكل منهما زر نسخ. أضفهما إلى مستودعك كما هو موضح في إعداد الـ Webhook. تحت المربع، يعرض Last delivery ما إذا كان الـ webhook يصل.
فعّل النشر التلقائي
فعّل Automatic deploys active.
صلاحيات التوكن
| المزوّد | نوع التوكن | الحقوق اللازمة للنشر | مطلوب أيضًا للحالة في مستودعك |
|---|---|---|---|
| GitHub | توكن دقيق الصلاحيات، لهذا المستودع فقط | Contents: Read-only (ولـ Wait for CI checks أيضًا Actions: Read-only) | Commit statuses وDeployments: Read and write |
| GitLab | توكن وصول شخصي أو للمشروع أو للمجموعة | read_api + read_repository | api بدلًا من read_api، والدور Developer |
| Gitea / Forgejo | Settings → Applications | repository: Read, user: Read | repository: Read and Write |
إذا كانت صلاحية الكتابة للحالة فقط مفقودة، يظل خادمك يُنشر — ويعرض سجل النشر ملاحظة بذلك.
إعداد الـ Webhook
في مستودعك، انتقل إلى Settings → Webhooks → Add webhook:
- الصق Payload URL وSecret من Portal.
- اضبط نوع المحتوى على
application/json. - ضمن الأحداث، اختر Just the push event. في وضع الإصدارات، اختر Releases بدلًا من ذلك.
في مشروعك، انتقل إلى Settings → Webhooks:
- الصق Payload URL كعنوان URL وSecret ضمن Secret token.
- ضمن الـ triggers، حدّد Push events. في وضع الوسوم، حدّد Tag push events؛ وفي وضع الإصدارات، Releases events.
في مستودعك، انتقل إلى Settings → Webhooks → Add webhook واختر Gitea أو Forgejo:
- الصق Payload URL، واضبط نوع المحتوى على
application/jsonوأدخل Secret. - اختر Push events، أو في وضع الإصدارات Custom events → Release.
لا يستطيع مزوّد Git الوصول إلى Portal، مثلًا لأن نسخة Gitea الخاصة بك تعمل في شبكتك المنزلية؟ اختر فاصلًا زمنيًا تحت Also check … for updates بدلًا من ذلك (مثلًا Also check Gitea for updates). أول فحص ينشر الحالة الحالية مرة واحدة.
متى يعمل النشر
ضمن When to deploy، اختر واحدًا من أربعة أوضاع:
| الوضع | ما الذي يُنشر |
|---|---|
| Manual | فقط عندما ينقر أحدهم Deploy now. |
| Every push | كل push إلى الفرع المختار. |
| Releases | فقط عند نشر إصدار. انشر إما الكود المصدري للإصدار أو ملف إصدار (مثل *.jar) — ويمكن حفظه باسم ثابت (مثل server.jar) واستخراجه اختياريًا إذا كان .zip. يمكن تضمين الإصدارات التجريبية (pre-releases) أو استبعادها. |
| Tags | عند دفع وسم يطابق نمطًا، مثل v*. |
المحفّزات (Triggers)
- Webhook: يُبلغ مزوّد Git عن التغييرات فورًا، ويبدأ النشر خلال ثوانٍ. مع تطبيق GitHub يحدث هذا تلقائيًا، دون webhook خاص بك.
- فحوص التحديث (polling): اختيارية، للحالات التي لا يستطيع فيها مزوّد Git الوصول إلى Portal. فواصل من 5 دقائق إلى يوم واحد.
- Deploy now: في أي وقت، بنقرة زر. في وضع الإصدارات يمكنك اختيار إصدار محدد.
- تخطّي دفع: ضع
[skip deploy]في رسالة الـ commit فلا يُنشر ذلك الدفع. تعمل[deploy skip]و[no deploy]أيضًا.
انتظار فحوص CI
عند تفعيل Wait for CI checks (فقط في وضع Every push)، لا يُنشر الـ commit إلا بعد أن يصبح CI أخضر — تُدعم GitHub Actions وGitLab CI وGitea/Forgejo Actions. إذا فشل CI، يُتخطى النشر.
شرح جميع الإعدادات
| القسم | الإعداد | ما الذي يفعله |
|---|---|---|
| المستودع | Git service | GitHub أو GitLab أو Gitea أو Forgejo |
| المستودع | Server URL | فقط للنسخ المستضافة ذاتيًا؛ يجب أن تكون متاحة من الإنترنت |
| المستودع | Repository | owner/name أو رابط؛ Choose from my repositories يعرض قائمة |
| المستودع | Branch | فارغ = الفرع الافتراضي؛ Load branches يعرض قائمة |
| متى تنشر | Manual / Every push / Releases / Tags | انظر متى يعمل النشر |
| متى تنشر | Wait for CI checks | فقط مع Every push |
| متى تنشر | Include pre-releases، What to deploy (Source code / Release file)، Save as، Extract .zip files instead of uploading them | فقط مع Releases |
| متى تنشر | Tag pattern | فقط مع Tags، مثل v*؛ فارغ = كل وسم |
| متى تنشر | Also check … for updates (يُسمّى باسم خدمة Git لديك، مثلًا Also check GitHub for updates) | الاستطلاع: Never (webhook only)، 5/10/15/30 دقيقة، 1/3/6/12/24 ساعة |
| متى تنشر | Automatic deploys active | الإيقاف يوقف الـ webhook والاستطلاع؛ Deploy now يبقى يعمل |
| متى تنشر | Show deploys in the repository | الحالة على الـ commit، انظر الحالة في مستودعك |
| الملفات | Folder in the repository | نشر مجلد فرعي فقط، مثل dist؛ فارغ = كل شيء |
| الملفات | Target folder on the server | وجهة الملفات؛ / = المجلد الرئيسي لخادمك |
| الملفات | Protected paths | قاعدة واحدة في كل سطر، انظر المسارات المحمية |
| الملفات | Remove files that were deleted from the repository | تنظيف اختياري، انظر أدناه |
| إعادة التشغيل | Restart if running / Always start / Do not restart | انظر سلوك إعادة التشغيل |
| إعادة التشغيل | If the server does not stop | إنهاء فوري، أو بعد 5 ث، 10 ث (الافتراضي: Kill after 10 seconds)، 15 ث، 30 ث، دقيقة، دقيقتان أو 5 دقائق |
لا تسري التغييرات إلا بعد النقر على Save settings. وطالما هناك تغييرات غير محفوظة، يعرض شريط في الأسفل Discard وSave settings، ويكون Deploy now مقفلًا.
Remove files that were deleted from the repository يحذف فقط الملفات التي كتبها نشر سابق بنفسه — لا يمس أبدًا المسارات المحمية ولا الملفات التي أنشأتها بنفسك. تبقى المجلدات الفارغة في مكانها.
المسارات المحمية
الملفات والمجلدات الموجودة ضمن Protected paths لا تُستبدل ولا تُحذف أبدًا بالنشر. إن لم تكن موجودة بعد، تُنشأ مرة واحدة. مثالية لعوالم الألعاب وقواعد البيانات وكلمات المرور.
اكتب قاعدة واحدة في كل سطر، نسبةً إلى مجلد الهدف. تُتجاهل الأسطر الفارغة والأسطر التي تبدأ بـ #. ولا يطابق * أبدًا عبر /.
| القاعدة | تحمي |
|---|---|
world/ | كل مجلد اسمه world، على أي عمق |
/world/ | فقط world المباشر داخل مجلد الهدف |
*.db | كل ملف ينتهي بـ .db، في أي مكان |
.env | كل ملف اسمه .env، في أي مكان |
/config.yml | فقط config.yml المباشر داخل مجلد الهدف |
plugins/*/config.yml | config.yml في كل مجلد فرعي مباشر داخل plugins |
أمثلة شائعة:
world/
world_nether/
world_the_end/
plugins/*/config.yml
whitelist.json
ops.json
banned-*.json.env
*.db
*.sqlite
node_modules/
data/.env
*.db
venv/سلوك إعادة التشغيل
| الخيار | ما الذي يحدث |
|---|---|
| Restart if running | يُوقف الخادم قبل كتابة الملفات ثم يُعاد تشغيله بعدها. الخادم المطفأ يبقى مطفأً. |
| Always start | كما أعلاه، ويُشغَّل الخادم المطفأ بعد النشر. |
| Do not restart | تُستبدل الملفات والخادم يبقى يعمل. |
If the server does not stop: بعض البرامج، وتطبيقات Node.js على وجه الخصوص، تتجاهل إشارة الإيقاف. عندها يُنهى الخادم بعد الوقت الذي تختاره (فورًا، أو من 5 ثوانٍ حتى 5 دقائق؛ Kill after 10 seconds افتراضيًا) حتى لا يتعطل النشر. الإنهاء الفوري هو الأسرع، لكنه لا يمنح الخادم وقتًا للحفظ.
شبكتا أمان: إذا لم ينطفئ الخادم أبدًا، لا تتغير أي ملفات. إذا فشل النشر بعد إيقاف الخادم، يُعاد تشغيل الخادم.
ماذا يحدث أثناء النشر
- محفّز (push أو إصدار أو وسم أو فحص تحديث أو زر) ينشئ عملية نشر.
- إذا كان Wait for CI checks مفعّلًا، ينتظر فحوص CI الخضراء (Waiting).
- تنزّل Portal الأرشيف من مزوّد Git. بيانات اعتمادك لا تغادر Portal أبدًا ولا تصل إلى خادمك.
- يُجهَّز الأرشيف: المجلد المختار فقط، مع تصفية المسارات المحمية، وإزالة المحتوى غير الآمن مثل الروابط الرمزية (symbolic links).
- حسب إعداداتك، يُوقف الخادم (ويُنهى بعد الوقت المختار إذا لزم الأمر).
- تُكتب الملفات إلى مجلد الهدف؛ ويمكن حذف الملفات المحذوفة اختياريًا.
- حسب إعداداتك، يُعاد تشغيل الخادم.
- تظهر النتيجة والسجل الكامل في السجل — وإن كان مفعّلًا، كحالة على الـ commit.
يستغرق النشر عادةً 10–40 ثانية، إضافةً إلى الوقت الذي يحتاجه خادمك للتوقف.
السجل والسجلات والتراجع
تعرض قائمة Deployments في أسفل التبويب كل عملية نشر مع حالتها والفرع والـ commit (مثل main @ 75cd0a1) ورقمها ومحفّزها والشخص الذي بدأها والوقت ورسالة الـ commit. ويعرض رأس التبويب موعد آخر نشر للخادم.
| الحالة | المعنى |
|---|---|
| Waiting | ينتظر فحوص CI |
| Scheduled | في الطابور، يبدأ قريبًا |
| Running | النشر قيد التنفيذ |
| Deployed | انتهى بنجاح |
| Failed | حدث خطأ — السجل يوضح السبب |
| Skipped | لم يُنشر، مثلًا لأن CI فشل أو أن الـ commit يحتوي [skip deploy] |
| Cancelled | أُلغي قبل أن يبدأ |
- السجل: لكل نشر سجل حي يتحدّث أثناء تنفيذه. Hide log يغلقه مجددًا.
- التراجع بنقرة واحدة: انقر Deploy again على نشر سابق لإعادة نشر تلك الحالة مرة أخرى.
- الإلغاء: يمكن إلغاء عمليات النشر المنتظرة أو المجدولة.
تستطيع عدة خوادم النشر في الوقت نفسه، لكن كل خادم ينفذ عملية نشر واحدة فقط في كل مرة. المحفّز الجديد يستبدل عملية نشر أقدم لا تزال تنتظر.
الحالة في مستودعك
مع تفعيل Show deploys in the repository، يعرض الـ commit حالةً باسم Daki Hosting / اسم خادمك: أصفر أثناء النشر، ثم علامة صح خضراء أو علامة خطأ حمراء، مع رابط إلى تبويب Git Deploy.
- على GitHub، تظهر عملية النشر أيضًا ضمن Deployments، مع اسم خادمك كبيئة (environment).
- مع تطبيق GitHub تكتب الحالة Daki Git Deploy وتظهر بشعارها — ولا يلزم إعداد آخر. مع توكن، تظهر صورة حساب التوكن، ويحتاج التوكن إلى صلاحيات الكتابة (انظر صلاحيات التوكن).
- يمكنك إيقافها لكل خادم على حدة. الحالة والرابط فقط عامّان — لا سجلات ولا تفاصيل أخطاء.
الفرق وصلاحيات المستخدمين الفرعيين
يحصل المستخدمون الفرعيون على مجموعة صلاحيات خاصة بهم باسم Git Deploy:
| الصلاحية | تسمح بـ |
|---|---|
view (github.read) | رؤية الإعدادات وعنوان الـ webhook والسجل مع السجلات |
deploy (github.deploy) | Deploy now وDeploy again وإلغاء عمليات النشر |
change settings (github.update) | المستودع والوصول والـ webhook وكل الإعدادات |
المستخدمون الفرعيون ليس لديهم وصول إلى Git Deploy افتراضيًا — أنت تقرر من يحصل على أي صلاحية. ويستطيع مالك الخادم دائمًا كل شيء.
الأمان
- تُخزَّن التوكنات والأسرار مشفّرة ولا تُرسل أبدًا إلى متصفحك.
- مع تطبيق GitHub، لا يوجد توكن طويل الأمد خاص بك للنشر أصلًا: كل نشر يستخدم مفتاحًا قصير الصلاحية (ساعة واحدة) يصل إلى مستودع خادمك فقط.
- وصولك إلى GitHub هو ما يحدد المستودعات التي يمكنك ربطها. لا أحد يستطيع سحب مستودعات شخص آخر إلى خادمه.
- الـ webhooks موقّعة بسر خاص بكل خادم. الطلبات التي تحمل سرًا خاطئًا أو تخص مستودعًا مختلفًا تُرفض.
- فقط الشخص الذي حفظ التوكن يستطيع تغيير المستودع، لذلك لا يستطيع المستخدمون الفرعيون استخدام توكن المالك لتحميل مستودعات خاصة أخرى.
- إذا غيّرت خدمة Git أو عنوان URL للخادم، يُحذف التوكن المحفوظ تلقائيًا عند الحفظ.
- المسارات المحمية لا تُستبدل أبدًا، وRemove files that were deleted from the repository يحذف فقط ما كتبه Git Deploy نفسه.
- الحالة العامة في مستودعك لا تحتوي على سجلات ولا تفاصيل أخطاء.
القيود المعروفة
- مستودع واحد ووصول واحد لكل خادم.
- كل خادم ينفذ عملية نشر واحدة فقط في كل مرة.
- لا تظهر الحالة في مستودعك إلا بعد أن تبدأ عملية النشر فعلًا، لا أثناء انتظار CI.
- لا تُستخرج ملفات الإصدارات إلا إذا كانت ملفات
.zip؛ أما.tar.gzفيُرفع كملف. - تبقى المجلدات الفارغة في مكانها بعد Remove files that were deleted from the repository.
- الروابط الرمزية (symbolic links) في المستودع لا تُنشر.
- لا توجد إصدارات تجريبية في GitLab؛ الإصدار ذو التاريخ المستقبلي يُحسب إصدارًا تجريبيًا.
- GitLab: ملفات الإصدارات المرفوعة إلى المشروع (
/uploads/…) لا يمكن تنزيلها بتوكن من مشاريع خاصة؛ الروابط إلى سجل الحزم (package registry) تعمل. - Connect with GitHub متاح فقط لـ GitHub؛ أما GitLab وGitea وForgejo فتستخدم توكنًا.
الأسئلة الشائعة واستكشاف الأخطاء
هل أحتاج إلى تجديد التوكن بانتظام؟
ليس مع تطبيق GitHub: تجلب Portal مفتاحًا جديدًا لكل نشر تلقائيًا. التوكن الخاص بك يبقى صالحًا للمدة التي حددتها عند إنشائه لدى مزوّد Git؛ وعند انتهائه، احفظ توكنًا جديدًا ببساطة.
مستودعي غير موجود في القائمة (تطبيق GitHub)
انقر Choose repositories on GitHub وامنح التطبيق صلاحية الوصول إلى المستودع.
يبقى النشر على Scheduled
انتظر لحظة. إذا استمر ذلك لأكثر من بضع دقائق، يرجى التواصل مع الدعم.
الـ webhook لا يصل، أو يُظهر GitHub الخطأ 401
السر غير مطابق. انسخ السر من Portal وأدخله في الـ webhook مرة أخرى. New secret ينشئ سرًا جديدًا — بعدها غيّره لدى مزوّد Git أيضًا.
لماذا تم تخطّي نشري؟
الأسباب المحتملة: فشلت فحوص CI، أو تحتوي رسالة الـ commit على [skip deploy]، أو استبدل محفّز أحدث عملية نشر كانت لا تزال تنتظر. السبب يظهر في صف النشر.
لا أرى حالةً على الـ commit الخاص بي
يجب تفعيل Show deploys in the repository. مع توكن، يحتاج التوكن أيضًا إلى صلاحيات كتابة (انظر صلاحيات التوكن) — سجل النشر يوضح السبب.
يفشل النشر برسالة “The node rejected the request”
نوع خادمك لا يسمح بملفات معينة، أو أن القرص ممتلئ. السجل يوضح التفاصيل.
رابط نسخة Gitea الخاصة بي مرفوض
يجب أن تكون النسخ المستضافة ذاتيًا متاحة من الإنترنت. عناوين الشبكة المنزلية مثل 192.168.x.x لا تعمل.
كيف أتراجع؟
في السجل، انقر Deploy again على النشر السابق الذي تريد العودة إليه.
هل ستُستبدل عوالم اللعب أو قاعدة البيانات الخاصة بي؟
لا، إذا كانت مدرجة ضمن Protected paths (مثل world/ أو *.db).
من في فريقي يستطيع النشر؟
فقط من لديهم صلاحية deploy في مجموعة Git Deploy ضمن إعدادات المستخدمين الفرعيين للخادم. ويستطيع مالك الخادم دائمًا كل شيء.
الخطوات التالية
- المستخدمون الفرعيون — امنح فريقك الوصول وحدّد من يستطيع النشر.
- متغيرات البيئة — أبقِ التوكنات وكلمات المرور خارج مستودعك.
- إعدادات التشغيل — اضبط أمر التشغيل الذي يعمل به كودك المنشور.
- النسخ الاحتياطية — احفظ نسخًا احتياطية تلقائية لخادمك على Google Drive.