Skip to content

الترجمة 🌍

ساهم في ترجمة هذه الصفحة أو تحسينها.

ساهم

تثبيت الاستضافة الذاتية

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

::: التحذير مطلوب ترخيص مطلوب

تتطلب الاستضافة الذاتية لـ 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 وهو متوافق مع الحد الأدنى من الإصدارات التالية:

المكوّنالحد الأدنى من الإصدارالملاحظات
PostgreSQL15مع امتداد TimecaleDB
الجدول الزمنيDB2.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لا يوجد01
مستوى_مستوى_سجل_التسجيلمستوى السجل المراد استخدامه للتطبيقلا يوجدالمعلومات[مستويات السجل] (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تمكين نقطة نهاية خادم الويبلا يوجد11 أو 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) للاتصال بقاعدة البياناتلا يوجد11
tuist_database_dpool_spool_sizeعدد الاتصالات التي يجب الاحتفاظ بها مفتوحة في تجمع الاتصالاتلا يوجد1010
tuist_database_queue_queue_targetالفاصل الزمني (بالمللي ثانية) للتحقق مما إذا كانت جميع الاتصالات التي تم سحبها من التجمع قد استغرقت أكثر من الفاصل الزمني لقائمة الانتظار [(مزيد من المعلومات)] (https://hexdocs.pm/db_connection/DBConnection.html#start_link/2-queue-config)لا يوجد300300
tuist_database_queue_interval_interval_intervalزمن العتبة (بالمللي ثانية) في قائمة الانتظار التي يستخدمها المجمع لتحديد ما إذا كان ينبغي أن يبدأ في إسقاط الاتصالات الجديدة [(مزيد من المعلومات)] (https://hexdocs.pm/db_connection/DBConnection.html#start_link/2-queue-config)لا يوجد10001000
tuist_clickhouse_clickhouse_flush_interval_msالفاصل الزمني بالمللي ثانية بين عمليات تنظيف المخزن المؤقت ClickHouseلا يوجد50005000
tuist_clickhouse_clickhouse_max_buffer_sizeالحد الأقصى لحجم المخزن المؤقت ل ClickHouse بالبايت قبل فرض التدفقلا يوجد10000001000000
tuist_clickhouse_clickhouse_buffer_bpool_sizeعدد عمليات المخزن المؤقت لـ ClickHouse المراد تشغيلهالا يوجد55

تكوين بيئة المصادقة

نقوم بتسهيل المصادقة من خلال [موفري الهوية (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المهلة (بالمللي ثانية) لإنشاء اتصال بموفر التخزينلا يوجد30003000
tuist_s3_s3_receive_timetimeoutالمهلة (بالمللي ثانية) لتلقي البيانات من موفر التخزينلا يوجد50005000
tuist_s3_s3_pool_timetimeoutالمهلة (بالمللي ثانية) لتجمع الاتصال بموفر التخزين. استخدم إنفينيتي لعدم وجود مهلة.لا يوجد50005000
tuist_s3_s3_pool_max_idle_id Timeالحد الأقصى لوقت الخمول (بالمللي ثانية) للاتصالات في التجمع. استخدم اللانهاية لإبقاء الاتصالات حية إلى أجل غير مسمىلا يوجداللانهاية60000
tuist_s3_spool_sizeالحد الأقصى لعدد الاتصالات لكل تجمعلا يوجد500500
tuist_s3_s3_pool_countعدد تجمعات الاتصال المطلوب استخدامهالا يوجدعدد برامج جدولة النظام4
tuist_s3_protocolالبروتوكول الذي يجب استخدامه عند الاتصال بموفر التخزين (http1 أو http2)لا يوجدhttp1http1
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]).

بداية سريعة:

  1. قم بتنزيل ملفات التكوين:

    bash
    curl -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
  2. تكوين متغيرات البيئة:

    bash
    cp .env.example .env
    # Edit .env and add your TUIST_LICENSE and authentication credentials
  3. بدء تشغيل جميع الخدمات:

    bash
    docker compose up -d
    # or with podman:
    podman compose up -d
  4. الوصول إلى الخادم على http://localhost:8080

نقاط نهاية الخدمة:

الأوامر الشائعة:

تحقق من حالة الخدمة:

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/.

:::

  • الأخطاء (``العمليات/الخطأ''): يمكنك عرض الأخطاء غير المتوقعة التي حدثت في التطبيق. هذا مفيد لتصحيح الأخطاء وفهم الخطأ الذي حدث، وقد نطلب منك مشاركة هذه المعلومات معنا إذا كنت تواجه مشاكل.
  • لوحة التحكم ('/العمليات/لوحة التحكم'): يمكنك عرض لوحة معلومات توفر رؤى حول أداء التطبيق وصحته (مثل استهلاك الذاكرة، والعمليات قيد التشغيل، وعدد الطلبات). يمكن أن تكون لوحة المعلومات هذه مفيدة جدًا لفهم ما إذا كانت الأجهزة التي تستخدمها كافية للتعامل مع الحمل.

Released under the MIT License.