translated devops.md to arabic in docs (#38255)

pull/38688/head
Oussama Bouchareb 2020-04-29 18:43:19 +01:00 committed by GitHub
parent be2893e323
commit 71552acb06
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 245 additions and 0 deletions

View File

@ -0,0 +1,245 @@
<!-- do not translate this -->
| [Read these guidelines in other languages](/docs/i18n-languages) |
|-|
<!-- do not translate this -->
<div dir="rtl" style="direction: rtl" markdown="1">
# عمليات المطور في freeCodeCamp.org
نشكرك على اهتمامك بمعرفة المزيد حول كيفية قيامنا بتطوير DevOps للنظام الأساسي في freeCodeCamp.org.
سيساعدك هذا الدليل على فهم البنية التحتية الخاصة بنا وكيفية الحفاظ على الأنظمة الأساسية لدينا. على الرغم من أن هذا الدليل لا يحتوي على تفاصيل شاملة لجميع العمليات ، إلا أنه يمكن استخدامه كمرجع لفهمك للأنظمة.
أخبرنا ، إذا كانت لديك ملاحظات أو استفسارات ، وسنكون سعداء للتوضيح.
## كيف يمكننا بناء واختبار ونشر قاعدة البرمجة؟
تم بناء قاعدة برمجتنا بشكل مستمر واختبارها ونشرها على مجموعات منفصلة من البنية التحتية (الخوادم وقواعد البيانات وشبكات CDN وغيرها) .
يتضمن هذا ثلاث خطوات يجب اتباعها بالتسلسل:
أولاً ، يتم دمج التغييرات الجديدة في فرع التطوير الأساسي (`master`) في شكل طلبات سحب. بعد ذلك ، يتم تشغيل هذه التغييرات من خلال سلسلة من الاختبارات الآلية. وأخيراً ، بمجرد اجتياز الاختبارات ، نقوم بإصدار التغييرات (أو تحديثها إذا لزم الأمر) لنشرها على بنيتنا الأساسية.
### بناء قاعدة البرمجة - تعيين فروع Git على عمليات النشر.
عادة ، يتم دمج [`master`] (https://github.com/freeCodeCamp/freeCodeCamp/tree/master) (فرع التطوير الافتراضي) في [`production-staging`] (https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) فرع مرة واحدة في اليوم ، ويتم تحريرها في بنية تحتية معزولة.
هذا هو الإصدار المتوسط ​​للمطورين والمساهمين المتطوعين لدينا. المعروف أيضًا باسم تطبيق "التدريج / التجريبي".
إنها مطابقة لبيئة الإنتاج المباشر الخاصة بنا على موقع freeCodeCamp.org ، بخلاف ذلك باستخدام مجموعة منفصلة من قواعد البيانات والخوادم ووكلاء الويب ، إلخ. تتيح لنا هذه العزلة اختبار التطوير المستمر والميزات في "سيناريو" مثل الإنتاج ، دون التأثير على المستخدمين المنتظمين للمنصات الرئيسية لـ freeCodeCamp.org.
بمجرد أن يكون فريق المطور [`@ freeCodeCamp / dev-team`] (https://github.com/orgs/freeCodeCamp/teams/dev-team/members) سعيدًا بالتغييرات على التطبيق المرحلي ، يتم نقل هذه التغييرات كل بضعة أيام إلى فرع [`production-current`] (https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current).
هذا هو الإصدار النهائي الذي ينقل التغييرات إلى منصات الإنتاج لدينا على freeCodeCamp.org.
### اختبار التغييرات - اختبار التكامل وقبول المستخدم.
نحن نستخدم مستويات مختلفة من التكامل واختبار القبول للتحقق من جودة الكود. تتم جميع اختباراتنا من خلال برنامج مثل [Travis CI] (https://travis-ci.org/freeCodeCamp/freeCodeCamp) و [Azure Pipelines] (https://dev.azure.com/freeCodeCamp-org/freeCodeCamp).
لدينا اختبارات وحدة لاختبار حلول التحدي لدينا ، واجهات برمجة تطبيقات الخادم وواجهات مستخدم العميل. هذه تساعدنا في اختبار التكامل بين المكونات المختلفة.
> ملاحظة: نحن الآن بصدد كتابة اختبارات المستخدم النهائي التي ستساعد في تكرار سيناريوهات العالم الحقيقي مثل تحديث بريد إلكتروني أو إجراء مكالمة إلى API أو خدمات الجهات الخارجية.
تساعد هذه الاختبارات معًا في منع تكرار المشكلات وتأكد من أننا لا نقدم خطأ أثناء العمل على خطأ آخر أو ميزة أخرى.
### نشر التغييرات - دفع التغييرات إلى الخوادم.
لقد قمنا بتكوين برنامج التسليم المستمر لدفع التغييرات إلى خوادم التطوير والإنتاج لدينا. بمجرد دفع التغييرات إلى فروع الإصدار المحمية ، ينبغي أن تؤدي هذه إلى إنشاء خطوط أنابيب الإنشاء والإفراج لدينا:
يمكنك إلقاء نظرة وتصفح هذه هنا:
| بناء خط أنابيب | الافراج عن خط أنابيب |
| :------------- | :--------------- |
| الإعداد لإنشاء القطع الأثرية لعمليات النشر. | الإعداد لنشر القطع الأثرية على الخوادم الوجهة الخاصة بهم. |
| [الذهاب إلى المبنيات](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) | [الذهاب إلى الإصدارات](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) |
يقوم خط أنابيب الإنشاء بتشغيل خط أنابيب التحرير بعد تعليق دام 5 دقائق حتى يتمكن موظفونا من الدخول والتدخل إذا لزم الأمر.
/cofig/codeمتاح للجمهور على لوحة معلومات Azure's Dev. يقتصر الوصول إلى هذا على فريق موظفي freeCodeCamp.org.
نوصي بعدم دفع أكثر من 3-4 بناءات إلى خطوط الأنابيب في غضون يوم واحد وليس أكثر من واحد خلال ساعة. وذلك لأن القطع الأثرية الخاصة بنا كبيرة جدًا وستضع عبئًا على خوادمنا عند النشر.
## تشغيل بناء واختبار ونشر.
حاليًا ، يمكن فقط للأعضاء في فريق المطورين الدفع إلى فروع الإنتاج. التغييرات على فروع الإنتاج - * يمكن أن تهبط فقط من خلال دمج التقديم السريع إلى [`upstream`] (https://github.com/freeCodeCamp/freeCodeCamp).
> ملاحظة: في الأيام المقبلة ، سنحسن هذا التدفق الذي يتم عبر طلبات السحب ، لتحسين إدارة الوصول والشفافية.
### دفع التغييرات إلى تطبيقات التدريج.
1. تكوين أجهزة التحكم عن بعد بشكل صحيح.
```sh
freeCodeCamp on master is 📦 v0.0.1 via ⬢ v10.16.0
git remote -v
origin git@github.com:raisedadead/freeCodeCamp.git (fetch)
origin git@github.com:raisedadead/freeCodeCamp.git (push)
upstream git@github.com:freeCodeCamp/freeCodeCamp.git (fetch)
upstream git@github.com:freeCodeCamp/freeCodeCamp.git (push)
```
2. تأكد من أن فرع "master" أصلي ومتزامن مع المنبع.
```sh
git checkout master
git fetch --all --prune
git reset --hard upstream/master
```
3. تحقق من أن Travis CI يمر على فرع "master" للتنقيب.
يجب أن تكون اختبارات [التكامل المستمر] (https://travis-ci.org/freeCodeCamp/freeCodeCamp/branches) باللون الأخضر وأن يكون التمرير لفرع "master".
<details>
<summary>
Checking status on Travis CI (screenshot)
</summary>
<br>
<img src="https://raw.githubusercontent.com/freeCodeCamp/freeCodeCamp/master/docs/images/devops/travis-build.png" alt="Check build status on Travis CI">
</details>
إذا فشل هذا ، يجب عليك التوقف والتحقيق في الأخطاء.
4. تأكد من أنك قادر على إنشاء مستودع محلي.
```
npm run clean-and-develop
```
5. قم بنقل التغييرات من "master" إلى "production-staging" عبر دمج سريع للأمام
```
git checkout production-staging
git merge master
git push upstream
```
لن تكون قادرًا على فرض الضغط ، وإذا قمت بإعادة كتابة السجل في أي حال ، فإن هذه الأوامر سوف تخطئ. إذا فعلوا ذلك ، فربما فعلت شيئًا غير صحيح ويجب أن تبدأ من جديد.
وهذا كل شيء ، سيؤدي ذلك تلقائيًا إلى إنشاء خط أنابيب للبناء لفرع الإنتاج المرحلي. عادة ما يستغرق هذا ~ 20-25 دقيقة لجميع التطبيقات. بمجرد اكتمال الإنشاء ، سيتم حفظ القطع الأثرية كملفات ".zip" في مخزن بارد لاستردادها واستخدامها بواسطة خط أنابيب الإصدار.
يتم تشغيل خط أنابيب الإطلاق تلقائيًا عند توفر قطعة أثرية جديدة من خط أنابيب الإنشاء المتصل. بالنسبة للتطبيقات المؤقتة ، يتم أتمتة هذا تمامًا ويتم دفع المصنوعات اليدوية إلى عميل CDN وخوادم API. يستغرق الأمر عادةً ما بين 15 إلى 20 دقيقة للعميل ، و 5 دقائق تقريبًا حتى تتوفر خوادم واجهة برمجة التطبيقات على الهواء مباشرة.
هذا يجعل كل إصدار من كود الدفع إلى أن يكون متاحًا في التطبيقات المرحلية ~ 60 دقيقة.
### دفع التغييرات إلى تطبيقات الإنتاج.
العملية هي في الغالب نفس تطبيقات التدريج ، مع وجود عدد قليل من عمليات الفحص الإضافية في مكانها. هذا فقط للتأكد ، نحن لا نكسر أي شيء على freeCodeCamp.org والذي يمكنه رؤية مئات المستخدمين يستخدمونه في أي وقت.
> #### لا تقم بتنفيذ هذه الأوامر حتى تتحقق من أن كل شيء يعمل على التطبيق المرحلي. يجب عليك عدم تجاوز أو تخطي أي اختبار على التدريج قبل المتابعة.
1. تأكد من أن فرع "إنتاج المرحلة" الخاص بك أصلي ومتزامن مع المنبع.
```sh
git checkout production-staging
git fetch --all --prune
git reset --hard upstream/production-staging
```
2. انقل التغييرات من "الإنتاج المرحلي" إلى "الإنتاج الحالي" عبر دمج سريع للأمام
```
git checkout production-current
git merge production-staging
git push upstream
```
لن تتمكن من فرض الضغط ، وإذا قمت بإعادة كتابة السجل في أي حال ، فإن هذه الأوامر سوف تخطئ. إذا فعلوا ذلك ، فربما فعلت شيئًا غير صحيح ويجب أن تبدأ من جديد.
وهذا كل شيء ، سيؤدي هذا تلقائيًا إلى إنشاء خط أنابيب للبناء لفرع الإنتاج الحالي. عادةً ما يستغرق هذا أيضًا حوالي 20 إلى 25 دقيقة لجميع التطبيقات كما هو موضح سابقًا.
فيما يلي بعض الخطوات الإضافية التي يجب اتباعها بواسطة مطور freeCodeCamp.org للموظفين. لمنع أي دفعات عرضية ، لدينا بضع خطوات الموافقة اليدوية تكوينها على خطوط الأنابيب.
بمجرد أن تصبح قطعة أثرية جاهزة على فرع "الإنتاج الحالي" ، فإنها ستطلق إصدارًا على خط أنابيب الإطلاق.
بعد ذلك ، سيتلقى فريق موظفي مطور freeCodeCamp.org رسالة بريد إلكتروني. يمكنهم إما الموافقة * أو * رفض * الإصدار. إذا كانت التغييرات تعمل بشكل جيد وتم اختبارها على تطبيق التدريج ، فيمكن الموافقة عليها. يجب أن يحدث هذا خلال 4 ساعات من إطلاق الإصدار أو سيتم رفضه تلقائيًا. في حالة حدوث ذلك ، سيحتاج الموظف إلى إعادة تشغيل خط أنابيب الإصدار يدويًا.
لاستخدام الموظفين:
| الموافقة على الإصدار |
| :-------------: |
| تحقق من بريدك الإلكتروني للحصول على رابط مباشر أو [فتح لوحة القيادة الإفراج](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release?_a=releases&view=mine&definitionId=6) |
بمجرد موافقة أحد الأعضاء على الإصدار ، فإن خط الأنابيب سيدفع التغييرات مباشرة إلى خوادم CDN و API الخاصة بإنتاج freeCodeCamp.org. يستغرق الأمر عادةً ما بين 15 إلى 20 دقيقة للعميل ، و 5 دقائق تقريبًا حتى تتوفر خوادم واجهة برمجة التطبيقات على الهواء مباشرة.
كخطوة أخيرة ، سيقوم أحد الموظفين أيضًا بالنقر فوق زر نشر النشر على لوحة معلومات نشر Netlify.
لاستخدام الموظفين:
| نشر أو الاستعادة على Netlify |
| :----------------------------: |
| [افتح عمليات نشر Netlify](https://app.netlify.com/sites/freecodecamp-org/deploys) |
## بناء وحالة النشر
فيما يلي حالة البناء والنشر الحالية لقاعدة البيانات.
### بناء الحالة
| منصة | اكتب | الحالة |
| :-------------- | :--------- | :---------: |
| Travis CI | Unit Tests | [![Travis CI Build Status](https://travis-ci.org/freeCodeCamp/freeCodeCamp.svg?branch=master)](https://travis-ci.org/freeCodeCamp/freeCodeCamp) |
| Azure Pipelines | Artifacts | [![Azure Pipelines Build Status](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_apis/build/status/freeCodeCamp-CI)](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) |
### Deployment Status
| تطبيق | الإصدار | الحالة |
| :----------- | :--------- | :---------: |
| Client | Beta/Next | [![Azure Pipelines Deployment Status](https://vsrm.dev.azure.com/freeCodeCamp-org/_apis/public/Release/badge/4b80aded-11d9-49ea-9b7d-596e98ff07c4/4/8)](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) |
| API | Beta/Next | [![Azure Pipelines Deployment Status](https://vsrm.dev.azure.com/freeCodeCamp-org/_apis/public/Release/badge/4b80aded-11d9-49ea-9b7d-596e98ff07c4/4/9)](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) |
| Client | Production | [![Azure Pipelines Deployment Status](https://vsrm.dev.azure.com/freeCodeCamp-org/_apis/public/Release/badge/4b80aded-11d9-49ea-9b7d-596e98ff07c4/6/22)](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) |
| API | Production | [![Azure Pipelines Deployment Status](https://vsrm.dev.azure.com/freeCodeCamp-org/_apis/public/Release/badge/4b80aded-11d9-49ea-9b7d-596e98ff07c4/6/23)](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) |
## الوصول المبكر والاختبار التجريبي للإصدارات القادمة من منصة ومنهاج freeCodeCamp.org
نرحب بكم لاختبار هذه الإصدارات في وضع ** "اختبار بيتا عام" ** والوصول المبكر إلى الميزات القادمة إلى الأنظمة الأساسية. في بعض الأحيان ، يشار إلى هذه الميزات / التغييرات باسم ** التالي ، التجريبي ، التدريج ، ** إلخ بالتبادل.
ستساعدنا مساهماتك عبر الملاحظات وتقارير المشكلات في جعل منصات الإنتاج في "freeCodeCamp.org" أكثر ** مرونة ** و ** متسقة ** و ** مستقرة ** للجميع.
نشكرك على الإبلاغ عن الأخطاء التي واجهتها وتساعد في جعل freeCodeCamp.org أفضل. انت صخرة!
## تحديد الإصدار القادم من النظام الأساسي
سيكون اسم المجال مختلفًا عن ** `freeCodeCamp.org` **. يتوفر إصدار اختبار بيتا العام الحالي حاليًا على
<h3 align="center"><a href='https://www.freecodecamp.dev' _target='blank'><code>www.freecodecamp.dev</code></a></h4>
لمنع الفهرسة العرضية على محركات البحث والمستخدمين الذين يستخدمون هذا الموقع عن طريق الخطأ (دون معرفة أنه موقع تطوير) ، يتم إغلاقهم بكلمة مرور بسيطة:
<h3 align="center"><code>freecodecamp-is-awesome</code></h4>
## تحديد الإصدار الحالي من النظام الأساسي
** الإصدار الحالي من النظام الأساسي متاح دائمًا على [`freeCodeCamp.org`](https://www.freecodecamp.org).**
يدمج فريق التطوير التغييرات من فرع "الإنتاج المرحلي" إلى "الإنتاج الحالي" عند إصدار التغييرات. يجب أن يكون الالتزام العلوي هو ما تراه مباشرًا على الموقع. يمكنك تحديد الإصدار الدقيق الذي تم نشره عن طريق زيارة سجلات الإنشاء والنشر المتوفرة أدناه في قسم الحالة.
## القيود المعروفة
ستكون هناك بعض القيود والمفاضلات المعروفة عند استخدام الإصدار التجريبي من النظام الأساسي.
- #### جميع البيانات / التقدم الشخصي في هذه التطبيقات التجريبية `لن يتم حفظها أو ترحيلها` إلى الإنتاج.
** سيكون لدى المستخدمين في الإصدار التجريبي حساب منفصل عن الإنتاج. ** تستخدم النسخة التجريبية قاعدة بيانات منفصلة فعليًا عن الإنتاج. هذا يعطينا القدرة على منع أي فقدان عرضي للبيانات أو التعديلات. قد يقوم فريق ديف بتطهير قاعدة البيانات على هذا الإصدار التجريبي حسب الحاجة.
- #### لا توجد ضمانات على الجهوزية وموثوقية تطبيقات بيتا.
من المتوقع أن يكون النشر متكررًا وبتكرار سريع ، وأحيانًا عدة مرات في اليوم. نتيجة لذلك ، ستكون هناك أوقات توقف غير متوقعة في بعض الأحيان أو وظائف معطلة في الإصدار التجريبي.
- #### لا ترسل مستخدمين منتظمين إلى هذا الموقع كإجراء لتأكيد الإصلاح
إن موقع الإصدار التجريبي كان ولا يزال يعمل على زيادة التطوير والاختبار المحليين ، ولا شيء آخر. إنه ليس وعدًا بما سيحدث ، بل لمحة عما يجري العمل عليه.
- #### تسجيل الدخول والمصادقة متاح فقط عبر البريد الإلكتروني ، وليس الاجتماعي.
لن تكون عمليات تسجيل الدخول إلى Google و GitHub و Facebook متاحة في هذا الوضع التجريبي. هذا ببساطة قيد تقني ، لأننا نستخدم "مجال اختبار" منفصل لهذا الإصدار. ** معلومات تسجيل الدخول إلى البريد الإلكتروني ستعمل بنفس الجودة. **
قد تبدو صفحة الإشارة مختلفة عن الإنتاج.
## الإبلاغ عن المشاكل وترك التعليق
يرجى فتح قضايا جديدة للمناقشات والإبلاغ عن الأخطاء. يمكنك تسمية لهم باسم **[`release: next/beta`](https://github.com/freeCodeCamp/freeCodeCamp/labels/release%3A%20next%2Fbeta)** لفرز.
يمكنك إرسال بريد إلكتروني إلى `dev@freecodecamp.org` إذا كان لديك أي استفسار. كما هو الحال دائمًا ، يجب الإبلاغ عن جميع الثغرات الأمنية `security@freecodecamp.org` بدلا من تعقب والمنتدى العام.
</div>