تثبيت الاستضافة الذاتية
نحن نقدم نسخة ذاتية الاستضافة من خادم تويست للمؤسسات التي تحتاج إلى مزيد من التحكم في بنيتها التحتية. يسمح لك هذا الإصدار باستضافة تويست على البنية التحتية الخاصة بك، مما يضمن بقاء بياناتك آمنة وخاصة.
::: التحذير مطلوب ترخيص مطلوب
تتطلب الاستضافة الذاتية لـ Tuist ترخيصًا مدفوعًا صالحًا قانونيًا. الإصدار المحلي من تويست متاح فقط للمؤسسات على خطة المؤسسة. إذا كنت مهتمًا بهذا الإصدار، يُرجى التواصل مع [[email protected]] (mailto:[email protected]).
:::
إيقاع الإصدار
نصدر إصدارات جديدة من تويست باستمرار مع وصول التغييرات الجديدة القابلة للإصدار إلى الرئيسي. نحن نتبع [الإصدار الدلالي] (https://semver.org/) لضمان إمكانية التنبؤ بالإصدارات والتوافق.
يُستخدم المكون الرئيسي للإبلاغ عن التغييرات العاجلة في خادم تويست التي ستتطلب التنسيق مع المستخدمين في مكان العمل. لا يجب أن تتوقع منا استخدامه، وفي حال احتجنا إلى ذلك، كن مطمئنًا أننا سنعمل معك في جعل الانتقال سلسًا.
النشر المستمر
نوصي بشدة بإعداد خط أنابيب للنشر المستمر يقوم تلقائياً بنشر أحدث إصدار من تويست كل يوم. وهذا يضمن لك الوصول دائماً إلى أحدث الميزات والتحسينات والتحديثات الأمنية.
إليك مثالاً على سير عمل إجراءات GitHub التي تتحقق من الإصدارات الجديدة وتنشرها يومياً:
yaml
name: Update Tuist Server
on:
schedule:
- cron: '0 3 * * *' # Run daily at 3 AM UTC
workflow_dispatch: # Allow manual runs
jobs:
update:
runs-on: ubuntu-latest
steps:
- name: Check and deploy latest version
run: |
# Your deployment commands here
# Example: docker pull ghcr.io/tuist/tuist:latest
# Deploy to your infrastructureمتطلبات وقت التشغيل
يوضح هذا القسم متطلبات استضافة خادم تويست على البنية التحتية الخاصة بك.
مصفوفة التوافق
تم اختبار خادم Tuist وهو متوافق مع الحد الأدنى من الإصدارات التالية:
| المكوّن | الحد الأدنى من الإصدار | الملاحظات |
|---|---|---|
| PostgreSQL | 15 | مع امتداد TimecaleDB |
| الجدول الزمنيDB | 2.16.1 | ملحق PostgreSQL المطلوب (مهمل) |
| كليك هاوس | 25 | مطلوب للتحليلات |
::: التحذير TIMESCALEDEDB DEPRECATION
يعتبر TimescaleDB حاليًا امتداد PostgreSQL مطلوبًا لخادم Tuist، ويُستخدم لتخزين بيانات السلاسل الزمنية والاستعلام عنها. ومع ذلك، تم إهمال TimescaleDB وسيتم إسقاطه كملحق مطلوب في المستقبل القريب حيث نقوم بترحيل جميع وظائف السلاسل الزمنية إلى ClickHouse. في الوقت الحالي، تأكد من أن مثيل PostgreSQL الخاص بك يحتوي على TimescaleDB مثبت وممكّن.
:::
تشغيل صور Docker-Virtualized images
نقوم بتوزيع الخادم كصورة [Docker] (https://www.docker.com/) عبر [سجل حاويات GitHub] (https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-container-registry).
لتشغيلها، يجب أن تدعم بنيتك التحتية تشغيل صور Docker. لاحظ أن معظم مزودي البنية التحتية يدعمونها لأنها أصبحت الحاوية القياسية لتوزيع وتشغيل البرامج في بيئات الإنتاج.
قاعدة بيانات Postgres
بالإضافة إلى تشغيل صور Docker، ستحتاج إلى [قاعدة بيانات Postgres] (https://www.postgresql.org/) مع امتداد [TimescaleDB] (https://www.timescale.com/) لتخزين البيانات العلائقية وبيانات السلاسل الزمنية. يتضمن معظم مزودي البنية التحتية قواعد بيانات Postgres في عروضهم (على سبيل المثال، [AWS] (https://aws.amazon.com/rds/postgresql/) و [Google Cloud] (https://cloud.google.com/sql/docs/postgres)).
مطلوب ملحق TimescaleDB: يتطلب Tuist امتداد TimescaleDB لتخزين بيانات السلاسل الزمنية والاستعلام عنها بكفاءة. يُستخدم هذا الامتداد لأحداث الأوامر والتحليلات والميزات الأخرى المستندة إلى الوقت. تأكد من أن مثيل PostgreSQL الخاص بك يحتوي على TimescaleDB مثبت وممكّن قبل تشغيل Tuist.
الهجرات
تقوم نقطة دخول صورة Docker تلقائيًا بتشغيل أي عمليات ترحيل مخطط معلقة قبل بدء الخدمة. إذا فشلت عمليات الترحيل بسبب فقدان ملحق TimescaleDB، فستحتاج إلى تثبيته في قاعدة البيانات أولاً.
قاعدة بيانات ClickHouse
يستخدم تويست [ClickHouse] (https://clickhouse.com/) لتخزين كميات كبيرة من بيانات التحليلات والاستعلام عنها. ClickHouse هو مطلوب لميزات مثل بناء الرؤى وسيكون قاعدة بيانات السلاسل الزمنية الأساسية مع الاستغناء التدريجي عن TimescaleDB. يمكنك الاختيار بين الاستضافة الذاتية لـ ClickHouse أو استخدام خدمتهم المستضافة.
الهجرات
تقوم نقطة دخول صورة Docker تلقائيًا بتشغيل أي عمليات ترحيل مخطط ClickHouse معلقة قبل بدء تشغيل الخدمة.
التخزين
ستحتاج أيضًا إلى حل لتخزين الملفات (مثل ثنائيات إطار العمل والمكتبة). ندعم حاليًا أي تخزين متوافق مع S3.
التكوين
يتم تكوين الخدمة في وقت التشغيل من خلال متغيرات البيئة. نظرًا للطبيعة الحساسة لهذه المتغيرات، ننصح بتشفيرها وتخزينها في حلول آمنة لإدارة كلمات المرور. كن مطمئناً، يتعامل تويست مع هذه المتغيرات بعناية فائقة، مما يضمن عدم عرضها في السجلات.
عن فحوصات الإطلاق
يتم التحقق من المتغيرات الضرورية عند بدء التشغيل. إذا كان أي منها مفقودًا، سيفشل بدء التشغيل وستظهر رسالة الخطأ تفاصيل المتغيرات الغائبة.
تكوين الترخيص
بصفتك مستخدمًا محليًا، ستتلقى مفتاح ترخيص ستحتاج إلى عرضه كمتغير بيئة. يُستخدم هذا المفتاح للتحقق من صحة الترخيص والتأكد من أن الخدمة تعمل ضمن شروط الاتفاقية.
| متغير البيئة | الوصف | مطلوب | افتراضي | مثال على ذلك |
|---|---|---|---|---|
TUIST_LICENSE | الترخيص المقدم بعد توقيع اتفاقية مستوى الخدمة | نعم* | ****** | |
tuist_license_clicense_certificate_base64 | بديل استثنائي لـ 'TUIST_LICENSE'. شهادة عامة مشفرة بترميز Base64 للتحقق من صحة الترخيص دون اتصال بالإنترنت في البيئات التي لا يمكن للخادم الاتصال بالخدمات الخارجية. تستخدم فقط عندما يتعذر استخدام TUIST_LICENSE | نعم* | LS0tLS1CRUdJTiBDRDRVJUSUSUZJZJQ0FURS0tLS0t... |
\ * يجب توفير إما TUIST_LICENSE أو TUIST_LICENSE_CERTIFICATE_BASE64 ولكن ليس كلاهما. استخدم TUIST_LICENSE لعمليات النشر القياسية.
تاريخ انتهاء الصلاحية
التراخيص لها تاريخ انتهاء صلاحية. سيتلقى المستخدمون تحذيرًا أثناء استخدام أوامر تويست التي تتفاعل مع الخادم إذا انتهت صلاحية الترخيص في أقل من 30 يومًا. إذا كنت مهتمًا بتجديد ترخيصك، يرجى التواصل مع [[email protected]] (mailto:[email protected]).
تهيئة البيئة الأساسية
| متغير البيئة | الوصف | مطلوب | افتراضي | مثال على ذلك | |
|---|---|---|---|---|---|
TUIST_APP_URL | عنوان URL الأساسي للوصول إلى المثيل من الإنترنت | نعم | https://tuist.dev | ||
tuist_secret_secret_key_base | مفتاح الاستخدام لتشفير المعلومات (مثل الجلسات في ملف تعريف الارتباط) | نعم | c5786d9f869239cbddeca645575349a570ffebb332b64400c37256e1c9cb7ec831345d03dc0188edd129d09580d8cbf3ceaf17768e2048c037d9c31da5dcacfa | ||
tuist_secret_secret_key_password | الفلفل لإنشاء كلمات مرور مجزأة | لا يوجد | $TUIST_secret_secret_key_base | ||
tuist_secret_secret_key_tokens | المفتاح السري لتوليد رموز عشوائية | لا يوجد | $TUIST_secret_secret_key_base | ||
tuist_secret_secret_key_encryption | مفتاح 32 بايت لتشفير AES-GCM للبيانات الحساسة | لا يوجد | $TUIST_secret_secret_key_base | ||
TUIST_USE_USE_IPV6 | عند 1 يقوم التطبيق بتهيئة التطبيق لاستخدام عناوين IPv6 | لا يوجد | 0 | 1 | |
مستوى_مستوى_سجل_التسجيل | مستوى السجل المراد استخدامه للتطبيق | لا يوجد | المعلومات | [مستويات السجل] (https://hexdocs.pm/logger/1.12.3/Logger.html#module-levels) | |
tuist_github_github_app_name | إصدار عنوان URL الخاص باسم تطبيق GitHub الخاص بك | لا يوجد | تطبيقي | ||
tuist_github_github_app_private_key_base64 | المفتاح الخاص المشفر بترميز القاعدة 64 المستخدم في تطبيق GitHub لفتح وظائف إضافية مثل نشر تعليقات العلاقات العامة التلقائية | لا يوجد | LS0t0tLS1CRUDJTIBSU0EgUFJJVKFUR... | ||
tuist_github_github_app_private_key | المفتاح الخاص المستخدم لتطبيق GitHub لإلغاء قفل وظائف إضافية مثل نشر تعليقات العلاقات العامة التلقائية. نوصي باستخدام الإصدار المرمز بالقاعدة 64 بدلاً من ذلك لتجنب المشاكل مع الأحرف الخاصة | لا يوجد | -----بداية RSA... | ||
معالجات_عمليات_المستخدم_المستخدم_المعالج | قائمة مفصولة بفاصلة بمقابض المستخدمين الذين لديهم حق الوصول إلى عناوين URL للعمليات | لا يوجد | مستخدم1،مستخدم2 | ||
TUIST_WEB | تمكين نقطة نهاية خادم الويب | لا يوجد | 1 | 1 أو 0 |
تكوين قاعدة البيانات
تُستخدم متغيرات البيئة التالية لتكوين اتصال قاعدة البيانات:
| متغير البيئة | الوصف | مطلوب | افتراضي | مثال على ذلك |
|---|---|---|---|---|
DATABASE_URL | عنوان URL للوصول إلى قاعدة بيانات Postgres. لاحظ أن عنوان URL يجب أن يحتوي على معلومات المصادقة | نعم | postgres://username:[email protected]/production | |
tuist_clickhouse_click_url | عنوان URL للوصول إلى قاعدة بيانات ClickHouse. لاحظ أن عنوان URL يجب أن يحتوي على معلومات المصادقة | لا يوجد | http://username:[email protected]/production | |
tuist_use_ssl_ssl_for_database | عندما يكون صحيحًا، فإنه يستخدم [SSL] (https://en.wikipedia.org/wiki/Transport_Layer_Security) للاتصال بقاعدة البيانات | لا يوجد | 1 | 1 |
tuist_database_dpool_spool_size | عدد الاتصالات التي يجب الاحتفاظ بها مفتوحة في تجمع الاتصالات | لا يوجد | 10 | 10 |
tuist_database_queue_queue_target | الفاصل الزمني (بالمللي ثانية) للتحقق مما إذا كانت جميع الاتصالات التي تم سحبها من التجمع قد استغرقت أكثر من الفاصل الزمني لقائمة الانتظار [(مزيد من المعلومات)] (https://hexdocs.pm/db_connection/DBConnection.html#start_link/2-queue-config) | لا يوجد | 300 | 300 |
tuist_database_queue_interval_interval_interval | زمن العتبة (بالمللي ثانية) في قائمة الانتظار التي يستخدمها المجمع لتحديد ما إذا كان ينبغي أن يبدأ في إسقاط الاتصالات الجديدة [(مزيد من المعلومات)] (https://hexdocs.pm/db_connection/DBConnection.html#start_link/2-queue-config) | لا يوجد | 1000 | 1000 |
tuist_clickhouse_clickhouse_flush_interval_ms | الفاصل الزمني بالمللي ثانية بين عمليات تنظيف المخزن المؤقت ClickHouse | لا يوجد | 5000 | 5000 |
tuist_clickhouse_clickhouse_max_buffer_size | الحد الأقصى لحجم المخزن المؤقت ل ClickHouse بالبايت قبل فرض التدفق | لا يوجد | 1000000 | 1000000 |
tuist_clickhouse_clickhouse_buffer_bpool_size | عدد عمليات المخزن المؤقت لـ ClickHouse المراد تشغيلها | لا يوجد | 5 | 5 |
تكوين بيئة المصادقة
نقوم بتسهيل المصادقة من خلال [موفري الهوية (IDP)] (https://en.wikipedia.org/wiki/Identity_provider). للاستفادة من ذلك، تأكد من وجود جميع متغيرات البيئة الضرورية للموفر المختار في بيئة الخادم. المتغيرات المفقودة سيؤدي إلى تجاوز تويست لذلك الموفر.
GitHub
نوصي بالمصادقة باستخدام [تطبيق GitHub] (https://docs.github.com/en/apps/creating-github-apps/about-creating-github-apps/about-creating-github-apps) ولكن يمكنك أيضًا استخدام [تطبيق OAuth] (https://docs.github.com/en/apps/oauth-apps/building-oauth-apps/creating-an-oauth-app). تأكد من تضمين جميع متغيرات البيئة الأساسية التي حددها GitHub في بيئة الخادم. ستؤدي المتغيرات الغائبة إلى تجاهل Tuist لمصادقة GitHub. لإعداد تطبيق GitHub بشكل صحيح:
- في الإعدادات العامة لتطبيق GitHub:
- انسخ معرف العميل
معرف العميلوقم بتعيينهTUIST_GITHUB_APP_CLIENT_ID - قم بإنشاء ونسخ سر عميل جديد
سر العميلوقم بتعيينه على أنهTUIST_GITHUB_APP_CLIENT_SECRET - قم بتعيين عنوان URL
رد الاتصالكـhttp://YOUR_APP_URL/users/auth/github/callback.Your_APP_URLيمكن أن يكون أيضًا عنوان IP الخاص بخادمك.
- انسخ معرف العميل
- الأذونات التالية مطلوبة:
- المستودعات:
- طلبات السحب: القراءة والكتابة
- الحسابات:
- عناوين البريد الإلكتروني: للقراءة فقط
- المستودعات:
في الأذونات والأحداث' ' أذونات الحساب ، قم بتعيين عناوين البريد الإلكتروني إذن للقراءة فقط.
ستحتاج بعد ذلك إلى كشف متغيرات البيئة التالية في البيئة التي يعمل فيها خادم تويست:
| متغير البيئة | الوصف | مطلوب | افتراضي | مثال على ذلك |
|---|---|---|---|---|
tuist_github_github_App_client_id | معرّف العميل لتطبيق GitHub | نعم | Iv1.a629723000043722 | |
tuist_github_github_App_client_secret | سر العميل للتطبيق | نعم | 232f972951033b89799b0fd24566a04d83f44ccc |
جوجل
يمكنك إعداد المصادقة مع Google باستخدام [OAuth 2] (https://developers.google.com/identity/protocols/oauth2). لذلك، ستحتاج إلى إنشاء بيانات اعتماد جديدة من نوع OAuth Client ID. عند إنشاء بيانات الاعتماد، حدد "تطبيق الويب" كنوع التطبيق، وقم بتسميته Tuist ، وقم بتعيين URI إعادة التوجيه إلى {base_url} / Users/users/auth/google/callback حيث base_url هو عنوان URL الذي تعمل عليه الخدمة المستضافة. بمجرد إنشاء التطبيق، انسخ معرف العميل والسر وقم بتعيينهما كمتغيري بيئة GOOGLE_CLIENT_ID و GOOGLE_CLIENT_SECRET على التوالي.
عن نتائج قائمة الموافقة على النتائج
قد تحتاج إلى إنشاء شاشة موافقة. عند القيام بذلك، تأكد من إضافة نطاقات userinfo.email و openid ووضع علامة على التطبيق كنطاق داخلي.
أوكتا
يمكنك تمكين المصادقة مع Okta من خلال بروتوكول [OAuth 2.0] (https://oauth.net/2/). سيكون عليك [إنشاء تطبيق] (https://developer.okta.com/docs/en/guides/implement-oauth-for-okta/main/#create-an-oauth-2-0-app-in-okta) على Okta باتباع هذه التعليمات .
ستحتاج إلى تعيين متغيرات البيئة التالية بمجرد حصولك على معرف العميل والسر أثناء إعداد تطبيق Okta:
| متغير البيئة | الوصف | مطلوب | افتراضي | مثال على ذلك |
|---|---|---|---|---|
tuist_okta_1_okta_1_client_id | معرّف العميل للمصادقة على Okta. يجب أن يكون الرقم هو معرف مؤسستك | نعم | ||
tuist_okta_1_client_client_secret | سر العميل للمصادقة ضد Okta | نعم |
يجب استبدال الرقم 1 بمعرف مؤسستك. سيكون هذا عادةً 1، ولكن تحقق من قاعدة البيانات الخاصة بك.
تكوين بيئة التخزين
يحتاج Tuist إلى تخزين لإيواء القطع الأثرية التي يتم تحميلها من خلال واجهة برمجة التطبيقات. من من الضروري تهيئة أحد حلول التخزين المدعومة لكي يعمل تويست بفعالية.
المخزونات المتوافقة مع S3
يمكنك استخدام أي موفر تخزين متوافق مع S3 لتخزين القطع الأثرية. متغيرات البيئة التالية مطلوبة لمصادقة وتكوين التكامل مع موفر التخزين:
| متغير البيئة | الوصف | مطلوب | افتراضي | مثال على ذلك |
|---|---|---|---|---|
TUIST_S3_S3_ACESS_KEY_ID أو AWS_ACESS_KEY_ID | معرّف مفتاح الوصول للمصادقة على موفر التخزين | نعم | أكياوسفود | |
TUIST_S3_SECRET_SECRET_CACESS_KEY أو AWS_SECRET_SECRET_CACESS_KEY | مفتاح الوصول السري للمصادقة ضد مزود التخزين | نعم | wJalrXUtNFEMI/K7MDENG/bPxRfiRfiCYEXAMPLEKEY | |
TUIST_S3_REGION أو AWS_REGION | المنطقة التي يقع فيها الدلو | لا يوجد | السيارات | الولايات المتحدة-غرب-2 |
TUIST_S3_ENDPOINT أو AWS_ENDPOINT | نقطة النهاية لموفر التخزين | نعم | https://s3.us-west-2.amazonaws.com | |
tuist_s3_s3_bucket_name | اسم الدلو الذي سيتم تخزين القطع الأثرية فيه | نعم | تويست-أثريات | |
tuist_s3_ca_ca_cert_pem | شهادة CA مشفرة بترميز PEM للتحقق من اتصالات S3 HTTPS. مفيد للبيئات ذات التغطية الهوائية مع الشهادات الموقعة ذاتياً أو المراجع المصدقة الداخلية. | لا يوجد | حزمة CA النظام | -----بداية الشهادة----- \n...\n----- نهاية الشهادة----- |
tuist_s3_s3_connect_timetimeout | المهلة (بالمللي ثانية) لإنشاء اتصال بموفر التخزين | لا يوجد | 3000 | 3000 |
tuist_s3_s3_receive_timetimeout | المهلة (بالمللي ثانية) لتلقي البيانات من موفر التخزين | لا يوجد | 5000 | 5000 |
tuist_s3_s3_pool_timetimeout | المهلة (بالمللي ثانية) لتجمع الاتصال بموفر التخزين. استخدم إنفينيتي لعدم وجود مهلة. | لا يوجد | 5000 | 5000 |
tuist_s3_s3_pool_max_idle_id Time | الحد الأقصى لوقت الخمول (بالمللي ثانية) للاتصالات في التجمع. استخدم اللانهاية لإبقاء الاتصالات حية إلى أجل غير مسمى | لا يوجد | اللانهاية | 60000 |
tuist_s3_spool_size | الحد الأقصى لعدد الاتصالات لكل تجمع | لا يوجد | 500 | 500 |
tuist_s3_s3_pool_count | عدد تجمعات الاتصال المطلوب استخدامها | لا يوجد | عدد برامج جدولة النظام | 4 |
tuist_s3_protocol | البروتوكول الذي يجب استخدامه عند الاتصال بموفر التخزين (http1 أو http2) | لا يوجد | http1 | http1 |
tuist_s3_virtual_virtual_host | ما إذا كان ينبغي إنشاء عنوان URL مع اسم الدلو كمجال فرعي (مضيف افتراضي) | لا يوجد | كاذبة | 1 |
مصادقة AWS باستخدام رمز هوية الويب من متغيرات البيئة
إذا كان موفر التخزين الخاص بك هو AWS وترغب في المصادقة باستخدام رمز هوية الويب المميز، يمكنك تعيين متغير البيئة TUIST_S3_AUTHENTICATION_METHOD إلى aws_web_web_web_identity_token_from_env_vars ، وسيستخدم Tuist هذه الطريقة باستخدام متغيرات بيئة AWS التقليدية.
تخزين جوجل السحابي
بالنسبة لتخزين Google Cloud Storage، اتبع [هذه المستندات] (https://cloud.google.com/storage/docs/authentication/managing-hmackeys) للحصول على الزوج AW00 AWS_ACCESS_KEY_KEY و AWS_S_SECRET_ACCESS_KEY. يجب ضبط AWS_ENDPOINT على https://storage.googleapis.com. متغيرات البيئة الأخرى هي نفسها بالنسبة لأي تخزين آخر متوافق مع S3.
تكوين البريد الإلكتروني
يتطلب تويست وظيفة البريد الإلكتروني لمصادقة المستخدم وإشعارات المعاملات (مثل إعادة تعيين كلمة المرور وإشعارات الحساب). في الوقت الحالي، فقط Mailgun مدعوم فقط كمزود للبريد الإلكتروني.
| متغير البيئة | الوصف | مطلوب | افتراضي | مثال على ذلك |
|---|---|---|---|---|
tuist_mailgun_api_key_API_key | مفتاح API للمصادقة مع Mailgun | نعم* | المفتاح-1234567867890abcdef | |
النطاق_البريدي | المجال الذي سيتم إرسال رسائل البريد الإلكتروني منه | نعم* | mg.tuist.io | |
tuist_mailing_mailing_from_address | عنوان البريد الإلكتروني الذي سيظهر في حقل "من" | نعم* | [email protected] | |
tuist_mailing_mail_reply_to_address | عنوان الرد إلى عنوان اختياري لردود المستخدم | لا يوجد | [email protected] | |
tuist_skip_skip_email_confirmation | تخطي تأكيد البريد الإلكتروني لتسجيلات المستخدمين الجدد. عند التمكين، يتم تأكيد تسجيل المستخدمين تلقائيًا ويمكنهم تسجيل الدخول مباشرة بعد التسجيل | لا يوجد | صواب إذا لم يتم تكوين البريد الإلكتروني خطأ إذا تم تكوين البريد الإلكتروني | صحيح, خطأ, 1, 0 |
* متغيرات تكوين البريد الإلكتروني مطلوبة فقط إذا كنت تريد إرسال رسائل بريد إلكتروني. إذا لم يتم تهيئتها، يتم تخطي تأكيد البريد الإلكتروني تلقائيًا
دعم SMTP SUPP
دعم SMTP العام غير متوفر حاليًا. إذا كنت بحاجة إلى دعم SMTP للنشر المحلي، يرجى التواصل مع [[email protected]] (mailto:[email protected]) لمناقشة متطلباتك.
عن عمليات النشر الجوي المعبأة في الهواء
بالنسبة لعمليات التثبيت في مكان العمل دون الوصول إلى الإنترنت أو تكوين موفر البريد الإلكتروني، يتم تخطي تأكيد البريد الإلكتروني تلقائيًا بشكل افتراضي. يمكن للمستخدمين تسجيل الدخول مباشرة بعد التسجيل. إذا قمت بتكوين البريد الإلكتروني ولكنك لا تزال ترغب في تخطي التأكيد، قم بتعيين TUIST_SKIP_EMAIL_CONFIRMATION=صحيح. لطلب تأكيد البريد الإلكتروني عند تكوين البريد الإلكتروني، قم بتعيين TUIST_SKIP_SKIP_CONFIRMATION_CONFIRMATION=كاذبة.
تهيئة منصة Git
يستطيع تويست التكامل مع منصات Git لتوفير ميزات إضافية مثل نشر التعليقات تلقائيًا في طلبات السحب الخاصة بك.
جيثب
ستحتاج إلى [إنشاء تطبيق GitHub] (https://docs.github.com/en/apps/creating-github-apps/about-creating-github-apps/about-creating-github-apps). يمكنك إعادة استخدام التطبيق الذي أنشأته للمصادقة، إلا إذا قمت بإنشاء تطبيق OAuth GitHub. في الأذونات والأحداث' أذونات المستودع ، ستحتاج أيضًا إلى تعيين سحب الطلبات إذن القراءة والكتابة القراءة والكتابة.
بالإضافة إلى TUIST_GITHUB_APP_CLIUB_CLIENT_ID و TUIST_GITHUB_AP_APP_CLIENT_SECRET ، ستحتاج إلى متغيرات البيئة التالية:
| متغير البيئة | الوصف | مطلوب | افتراضي | مثال على ذلك |
|---|---|---|---|---|
tuist_github_github_app_private_key | المفتاح الخاص لتطبيق GitHub | نعم | -----بدء تشغيل مفتاح rsa الخاص-----... |
الاختبار محليًا
نحن نقدم تهيئة شاملة لـ Docker Compose تتضمن جميع التبعيات المطلوبة لاختبار خادم Tuist على جهازك المحلي قبل النشر على بنيتك التحتية:
- PostgreSQL 15 مع ملحق TimescaleDB 2.16 (مهمل)
- ClickHouse 25 للتحليلات
- ClickHouse Keeper للتنسيق
- MinIO للتخزين المتوافق مع S3
- ريديس لتخزين KV المستمر عبر عمليات النشر (اختياري)
- pgweb لإدارة قواعد البيانات
مطلوب ترخيص خطر
مطلوب قانونيًا متغير بيئة TUIST_LICENSE صالح مطلوب قانونيًا لتشغيل خادم تويست، بما في ذلك مثيلات التطوير المحلية. إذا كنت بحاجة إلى ترخيص، يرجى التواصل مع [[email protected]] (mailto:[email protected]).
بداية سريعة:
قم بتنزيل ملفات التكوين:
bashcurl -O https://docs.tuist.io/server/self-host/docker-compose.yml curl -O https://docs.tuist.io/server/self-host/clickhouse-config.xml curl -O https://docs.tuist.io/server/self-host/clickhouse-keeper-config.xml curl -O https://docs.tuist.io/server/self-host/.env.exampleتكوين متغيرات البيئة:
bashcp .env.example .env # Edit .env and add your TUIST_LICENSE and authentication credentialsبدء تشغيل جميع الخدمات:
bashdocker compose up -d # or with podman: podman compose up -dالوصول إلى الخادم على http://localhost:8080
نقاط نهاية الخدمة:
- خادم تويست: http://localhost:8080
- وحدة تحكم MinIO: http://localhost:9003 (بيانات الاعتماد:
tuist/tuist_dev_password) - واجهة برمجة تطبيقات MinIO: http://localhost:9002
- pgweb (واجهة مستخدم PostgreSQL): http://localhost:8081
- مقاييس بروميثيوس: http://localhost:9091/metrics
- كليك هاوس HTTP: http://localhost:8124
الأوامر الشائعة:
تحقق من حالة الخدمة:
bash
docker compose ps
# or: podman compose psعرض السجلات:
bash
docker compose logs -f tuistإيقاف الخدمات:
bash
docker compose downإعادة تعيين كل شيء (حذف جميع البيانات):
bash
docker compose down -vملفات التكوين:
- [docker-compose.yml] (/server/self-host/docker-compose.yml) - إكمال تكوين Docker Compose Compose
- [click-house-config.xml] (/server/self-host/clickhouse-config.xml) - تكوين ClickHouse
- [ClickHouse Keeper-keeper-config.xml] (/server/self-host/clickhouse-keeper-config.xml) - تهيئة ClickHouse Keeper
- .env.example مثال - مثال لملف متغيرات البيئة
النشر
صورة تويست دوكر الرسمية متاحة على:
ghcr.io/tuist/tuistسحب صورة Docker
يمكنك استرداد الصورة عن طريق تنفيذ الأمر التالي:
bash
docker pull ghcr.io/tuist/tuist:latestأو اسحب إصداراً محدداً:
bash
docker pull ghcr.io/tuist/tuist:0.1.0نشر صورة Docker
ستختلف عملية النشر لصورة Docker بناءً على موفر السحابة الذي اخترته ونهج النشر المستمر لمؤسستك. نظرًا لأن معظم الحلول والأدوات السحابية، مثل [Kubernetes] (https://kubernetes.io/)، تستخدم صور Docker كوحدات أساسية، يجب أن تتوافق الأمثلة في هذا القسم بشكل جيد مع الإعداد الحالي لديك.
WARNING
إذا كان خط أنابيب النشر الخاص بك يحتاج إلى التحقق من صحة أن الخادم قيد التشغيل، يمكنك إرسال طلب GET HTTP إلى / جاهز وتأكيد رمز الحالة 200 في الاستجابة.
يطير
لنشر التطبيق على [Fly] (https://fly.io/)، ستحتاج إلى ملف تكوين fly.toml.toml. ضع في اعتبارك إنشاءه ديناميكيًا ضمن خط أنابيب النشر المستمر (CD). فيما يلي مثال مرجعي لاستخدامك:
toml
app = "tuist"
primary_region = "fra"
kill_signal = "SIGINT"
kill_timeout = "5s"
[experimental]
auto_rollback = true
[env]
# Your environment configuration goes here
# Or exposed through Fly secrets
[processes]
app = "/usr/local/bin/hivemind /app/Procfile"
[[services]]
protocol = "tcp"
internal_port = 8080
auto_stop_machines = false
auto_start_machines = false
processes = ["app"]
http_options = { h2_backend = true }
[[services.ports]]
port = 80
handlers = ["http"]
force_https = true
[[services.ports]]
port = 443
handlers = ["tls", "http"]
[services.concurrency]
type = "connections"
hard_limit = 100
soft_limit = 80
[[services.http_checks]]
interval = 10000
grace_period = "10s"
method = "get"
path = "/ready"
protocol = "http"
timeout = 2000
tls_skip_verify = false
[services.http_checks.headers]
[[statics]]
guest_path = "/app/public"
url_prefix = "/"بعد ذلك يمكنك تشغيل fly launch - محلي فقط -لا-نشر-محلية فقط لتشغيل التطبيق. في عمليات النشر اللاحقة، بدلاً من تشغيل fly launch - محلي فقط ، ستحتاج إلى تشغيل fly deploy - محلي فقط. لا يسمح موقع Fly.io بسحب صور Docker الخاصة، ولهذا السبب نحتاج إلى استخدام العلامة - محلي فقط.
مقاييس بروميثيوس
يعرض Tuist مقاييس Prometheus على /metrics لمساعدتك في مراقبة مثيلك المستضاف ذاتيًا. تتضمن هذه المقاييس ما يلي:
مقاييس عميل HTTP من فينش
يستخدم تويست [Finch] (https://github.com/sneako/finch) كعميل HTTP الخاص به ويعرض مقاييس مفصلة حول طلبات HTTP:
طلب المقاييس
tuist_prom_prom_ex_ex_finch_request_crequest_count_total- إجمالي عدد طلبات فينش (عداد)- التسميات:
فينش_اسم,طريقة,مخطط,المضيف,المنفذ,الحالة
- التسميات:
tuist_prom_prom_ex_ex_finch_request_drequest_duration_milliseconds- مدة طلبات HTTP (رسم بياني)- التسميات:
فينش_اسم,طريقة,مخطط,المضيف,المنفذ,الحالة - الدلاء: 10 مللي ثانية، 50 مللي ثانية، 100 مللي ثانية، 250 مللي ثانية، 500 مللي ثانية، 1 ثانية، 2.5 ثانية، 5 ثانية، 10 ثانية
- التسميات:
tuist_prom_prom_ex_ex_finch_request_exquest_exception_count_total- إجمالي عدد استثناءات طلبات فينش (عداد)- التسميات:
فينش_اسم,طريقة,مخطط,المضيف,المنفذ,نوع,السبب
- التسميات:
مقاييس قائمة انتظار تجمع الاتصالات
tuist_prom_prom_ex_ex_finch_queue_due_duration_milliseconds- الوقت المستغرق في انتظار تجمع الاتصالات في قائمة الانتظار (الرسم البياني)- التسميات:
فينش_اسم,مخطط,المضيف,المنفذ,تجمع - الدلاء: 1 مللي ثانية، 5 مللي ثانية، 10 مللي ثانية، 25 مللي ثانية، 50 مللي ثانية، 100 مللي ثانية، 250 مللي ثانية، 500 مللي ثانية، 1 ثانية
- التسميات:
tuist_prom_prom_ex_ex_finch_queue_queue_idle_time_milliseconds- الوقت الذي يقضيه الاتصال خاملاً قبل استخدامه (الرسم البياني)- التسميات:
فينش_اسم,مخطط,المضيف,المنفذ,تجمع - الدلاء: 10 مللي ثانية، 50 مللي ثانية، 100 مللي ثانية، 250 مللي ثانية، 500 مللي ثانية، 1 ثانية، 5 ثوانٍ، 10 ثوانٍ
- التسميات:
tuist_prom_prom_ex_ex_finch_queue_exception_cception_count_total- إجمالي عدد استثناءات قائمة انتظار فينش (عداد)- التسميات:
فينش_اسم,مخطط,المضيف,المنفذ,النوع,السبب
- التسميات:
مقاييس الاتصال
tuist_prom_prom_ex_ex_finch_finch_connect_duration_milliseconds- الوقت المستغرق في إنشاء اتصال (رسم بياني)- التسميات:
فينش_اسم,مخطط,المضيف,المنفذ,خطأ - الدلاء: 10 مللي ثانية، 50 مللي ثانية، 100 مللي ثانية، 250 مللي ثانية، 500 مللي ثانية، 1 ثانية، 2.5 ثانية، 5 ثانية
- التسميات:
tuist_prom_prom_ex_finch_finch_connect_count_total- إجمالي عدد محاولات الاتصال (عداد)- التسميات:
فينش_اسم,مخطط,المضيف,المنفذ
- التسميات:
إرسال المقاييس
tuist_prom_prom_ex_ex_finch_send_duration_duration_milliseconds- الوقت المستغرق في إرسال الطلب (الرسم البياني)- التسميات:
فينش_اسم,طريقة,مخطط,المضيف,المنفذ,خطأ - الدلاء: 1 مللي ثانية، 5 مللي ثانية، 10 مللي ثانية، 25 مللي ثانية، 50 مللي ثانية، 100 مللي ثانية، 250 مللي ثانية، 500 مللي ثانية، 1 ثانية
- التسميات:
tuist_prom_prom_ex_ex_finch_send_send_sidle_time_milliseconds- الوقت الذي يقضيه الاتصال خاملاً قبل الإرسال (رسم بياني)- التسميات:
فينش_اسم,طريقة,مخطط,المضيف,المنفذ,خطأ - دلاء: 1 مللي ثانية، 5 مللي ثانية، 10 مللي ثانية، 25 مللي ثانية، 50 مللي ثانية، 100 مللي ثانية، 250 مللي ثانية، 500 مللي ثانية
- التسميات:
توفر جميع مقاييس المدرج التكراري _bucket و _sum و _count متغيرات للتحليل المفصل.
مقاييس أخرى
بالإضافة إلى مقاييس فينش، يعرض تويست مقاييس لـ
- أداء الجهاز الافتراضي BEAM
- مقاييس منطق العمل المخصصة (التخزين، والحسابات، والمشاريع، وما إلى ذلك)
- أداء قاعدة البيانات (عند استخدام البنية الأساسية المستضافة من تويست)
العمليات
يوفر تويست مجموعة من الأدوات المساعدة ضمن /ops/ التي يمكنك استخدامها لإدارة مثيلك.
::: تصريح التحذير
يمكن فقط للأشخاص الذين تم إدراج مقابضهم في متغير البيئة TUIST_OPS_OPS_USER_HANDLES الوصول إلى نقاط النهاية /ops/.
:::
- الأخطاء (``العمليات/الخطأ''): يمكنك عرض الأخطاء غير المتوقعة التي حدثت في التطبيق. هذا مفيد لتصحيح الأخطاء وفهم الخطأ الذي حدث، وقد نطلب منك مشاركة هذه المعلومات معنا إذا كنت تواجه مشاكل.
- لوحة التحكم ('/العمليات/لوحة التحكم'): يمكنك عرض لوحة معلومات توفر رؤى حول أداء التطبيق وصحته (مثل استهلاك الذاكرة، والعمليات قيد التشغيل، وعدد الطلبات). يمكن أن تكون لوحة المعلومات هذه مفيدة جدًا لفهم ما إذا كانت الأجهزة التي تستخدمها كافية للتعامل مع الحمل.
