Skip to content

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

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

License Required

تتطلب الاستضافة الذاتية لـ 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 مطلوب للتحليلات
Timescaledb Deprecation

يعتبر TimescaleDB حاليًا امتداد PostgreSQL مطلوبًا لخادم Tuist، ويُستخدم لتخزين بيانات السلاسل الزمنية والاستعلام عنها. ومع ذلك، تم إهمال TimescaleDB وسيتم إسقاطه كملحق مطلوب في المستقبل القريب حيث نقوم بترحيل جميع وظائف السلاسل الزمنية إلى ClickHouse. في الوقت الحالي، تأكد من أن مثيل PostgreSQL الخاص بك يحتوي على TimescaleDB مثبت وممكّن.

تشغيل صور Docker-الافتراضية#

نقوم بتوزيع الخادم كصورة [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.

Migrations

تقوم نقطة دخول صورة Docker تلقائيًا بتشغيل أي عمليات ترحيل مخطط معلقة قبل بدء الخدمة. إذا فشلت عمليات الترحيل بسبب فقدان ملحق TimescaleDB، فستحتاج إلى تثبيته في قاعدة البيانات أولاً.

قاعدة بيانات ClickHouse#

يستخدم تويست [ClickHouse] (https://clickhouse.com/) لتخزين كميات كبيرة من بيانات التحليلات والاستعلام عنها. ClickHouse هو مطلوب لميزات مثل بناء الرؤى وسيكون قاعدة بيانات السلاسل الزمنية الأساسية مع الاستغناء التدريجي عن TimescaleDB. يمكنك الاختيار بين الاستضافة الذاتية لـ ClickHouse أو استخدام خدمتهم المستضافة.

Migrations

تقوم نقطة دخول صورة Docker تلقائيًا بتشغيل أي عمليات ترحيل مخطط ClickHouse معلقة قبل بدء تشغيل الخدمة.

التخزين#

ستحتاج أيضًا إلى حل لتخزين الملفات (مثل ثنائيات إطار العمل والمكتبة). ندعم حاليًا أي تخزين متوافق مع S3.

التكوين#

يتم تكوين الخدمة في وقت التشغيل من خلال متغيرات البيئة. نظرًا للطبيعة الحساسة لهذه المتغيرات، ننصح بتشفيرها وتخزينها في حلول آمنة لإدارة كلمات المرور. كن مطمئناً، يتعامل تويست مع هذه المتغيرات بعناية فائقة، مما يضمن عدم عرضها في السجلات.

Launch Checks

يتم التحقق من المتغيرات الضرورية عند بدء التشغيل. إذا كان أي منها مفقودًا، سيفشل بدء التشغيل وستظهر رسالة الخطأ تفاصيل المتغيرات الغائبة.

تكوين الترخيص#

بصفتك مستخدمًا محليًا، ستتلقى مفتاح ترخيص ستحتاج إلى عرضه كمتغير بيئة. يُستخدم هذا المفتاح للتحقق من صحة الترخيص والتأكد من أن الخدمة تعمل ضمن شروط الاتفاقية.

متغير البيئة الوصف مطلوب افتراضي مثال على ذلك
TUIST_LICENSE الترخيص المقدم بعد توقيع اتفاقية مستوى الخدمة نعم* ******
tuist_license_clicense_certificate_base64 بديل استثنائي لـ 'TUIST_LICENSE'. شهادة عامة مشفرة بترميز Base64 للتحقق من صحة الترخيص دون اتصال بالإنترنت في البيئات التي لا يمكن للخادم الاتصال بالخدمات الخارجية. تستخدم فقط عندما يتعذر استخدام TUIST_LICENSE نعم* LS0tLS1CRUdJTiBDRDRVJUSUSUZJZJQ0FURS0tLS0t...

\ * يجب توفير إما TUIST_LICENSE أو TUIST_LICENSE_CERTIFICATE_BASE64 ولكن ليس كلاهما. استخدم TUIST_LICENSE لعمليات النشر القياسية.

Expiration Date

التراخيص لها تاريخ انتهاء صلاحية. سيتلقى المستخدمون تحذيرًا أثناء استخدام أوامر تويست التي تتفاعل مع الخادم إذا انتهت صلاحية الترخيص في أقل من 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] (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 على التوالي.

Consent Screen Scopes

قد تحتاج إلى إنشاء شاشة موافقة. عند القيام بذلك، تأكد من إضافة نطاقات 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 Authentication With Web Identity Token From Environment Variables

إذا كان موفر التخزين الخاص بك هو AWS وترغب في المصادقة باستخدام رمز هوية الويب المميز، يمكنك تعيين متغير البيئة TUIST_S3_AUTHENTICATION_METHOD إلى aws_web_web_web_identity_token_from_env_vars ، وسيستخدم Tuist هذه الطريقة باستخدام متغيرات بيئة AWS التقليدية.

التخزين السحابي من Google#

بالنسبة لتخزين 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 Support

دعم SMTP العام غير متوفر حاليًا. إذا كنت بحاجة إلى دعم SMTP للنشر المحلي، يرجى التواصل مع [[email protected]] (mailto:[email protected]) لمناقشة متطلباتك.

Air-gapped Deployments

بالنسبة لعمليات التثبيت في مكان العمل دون الوصول إلى الإنترنت أو تكوين موفر البريد الإلكتروني، يتم تخطي تأكيد البريد الإلكتروني تلقائيًا بشكل افتراضي. يمكن للمستخدمين تسجيل الدخول مباشرة بعد التسجيل. إذا قمت بتكوين البريد الإلكتروني ولكنك لا تزال ترغب في تخطي التأكيد، قم بتعيين 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 لإدارة قواعد البيانات
License Required

مطلوب قانونيًا متغير بيئة 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 مثال - مثال لملف متغيرات البيئة

النشر#

صورة تويست دوكر الرسمية متاحة على:

bash
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 لمساعدتك في مراقبة مثيلك المستضاف ذاتيًا. تتضمن هذه المقاييس ما يلي:

مقاييس عميل Finch 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/ التي يمكنك استخدامها لإدارة مثيلك.

Authorization

يمكن فقط للأشخاص الذين تم إدراج مقابضهم في متغير البيئة TUIST_OPS_OPS_USER_HANDLES الوصول إلى نقاط النهاية /ops/.

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