انتقل إلى المحتوى

العملاء والبروتوكولات ​

لدى Arkvory تخزين واحد ونموذج وصول واحد، لكن بطرق عدة للوصول إليه. كل طريقة عميل أو بروتوكول تتحدثه أداة موجودة. وكلها تخزّن البيانات في صورة مُخرَجات (artifacts) في Arkvory. لذا تنطبق الأذونات والحصص وعمليات التحقق من SHA-256 وقواعد الاحتفاظ والنسخ الاحتياطية والمرايا نفسها، أيًّا كانت الطريقة التي تستخدمها.

تسرد هذه الصفحة كل طرق التواصل مع Arkvory، وما تصلح له كل طريقة، وبيانات الاعتماد التي تقبلها. استخدمها لاختيار الأداة المناسبة للمهمة.

نظرة عامة ​

الطريقةالعنوانتصلح لـبيانات الاعتماد
وحدة التحكم على الويبhttps://arkvory.example/console/تصفح المستودعات، والرفع والتنزيل في المتصفح، وإدارة المستخدمين والمفاتيح والنسخ الاحتياطيةتسجيل الدخول باسم مستخدم وكلمة مرور، أو بمفتاح خدمة
سطر الأوامر arkvoryctl/api/v1نصوص CI البرمجية، والرفع والتنزيل القابلان للاستئناف، والملفات حسب المسار، والترقية، والنسخ الاحتياطيةمفتاح من ملف أو من متغير بيئة (يُرسل بصيغة Bearer)
TypeScript SDK/api/v1أدواتك الخاصة بـ TypeScript أو JavaScript، في Node.js أو في المتصفحمفتاح من دالة استدعاء (callback) (يُرسل بصيغة Bearer)
REST API/api/v1/...التكاملات بأي لغةAuthorization: Bearer <key> فقط
سجل الحاويات (OCI)/v2/Docker وPodman وBuildx وcontainerd ومخططات Helm ومُخرَجات ORASBasic مع المفتاح ككلمة مرور (docker login)، أو Bearer
Git LFS/lfs/<repository>الملفات الكبيرة لمستودع git، وقفل الملفات لـ Unity وUnrealBasic مع المفتاح ككلمة مرور (git credential helper)، أو Bearer
سجل npm/npm/<repository>/السجلات محددة النطاق (scoped registries) في Unity Package Manager، وnpm publish وnpm installBearer (_authToken في .npmrc، وtoken في .upmconfig.toml)، أو Basic _auth
الملفات الخام حسب المسار/api/v1/repositories/<repository>/raw/<path>طلب واحد بـ curl -T أو PowerShellAuthorization: Bearer <key> فقط
Webhookعنوان URL للمستقبِل لديكبدء نشر أو مهمة عندما يتغير مستودعتوقيع HMAC لكل طلب

تتبع المسارات تحت /v2 و/lfs و/npm مواصفات بروتوكولاتها. وهي ليست جزءًا من وثيقة OpenAPI الخاصة بـ /api/v1، وتبلّغ عن الأخطاء بالصيغة التي يتوقعها عملاؤها.

بيانات الاعتماد ​

يحتاج كل طلب إلى بيانات اعتماد، عدا فحوص السلامة العامة. ويقبل Arkvory الأنواع التالية:

النوعيبدو هكذامصدرهالاستخدام المعتاد
رمز وصول شخصيpat_...ينشئه مستخدم في وحدة التحكم. النطاق read أو read-write. ينتهي (بعد 90 يومًا افتراضيًا، وبحد أقصى 365).المطورون: Unity وgit وDocker على محطة عمل
مفتاح خدمةarkvory_...يصدره مسؤول لحساب خدمة، بإجراءات محددة لكل مستودعCI/CD ووكلاء النشر وخوادم البناء
مفتاح ملفأي سرملف مفاتيح الخادم (ARKVORY_KEYS_FILE)، مع read أو write لكل مستودع؛ ويدير مفتاح المالك أيضًامالك التثبيت والتكاملات القديمة
جلسةdps_...تسجيل الدخول إلى وحدة التحكم؛ صالحة 12 ساعةالعمل التفاعلي في وحدة التحكم
رابط تنزيلعنوان URL مع ?token=يُنشأ لمُخرَج واحد؛ من 60 ثانية إلى 24 ساعةتسليم ملف واحد لشخص لا يملك مفتاحًا

تختلف البروتوكولات فقط في طريقة إرسال المفتاح:

  • يستخدم /api/v1 وCLI وSDK والملفات الخام Authorization: Bearer <key>.
  • يقبل /v2 و/lfs و/npm أيضًا HTTP Basic. ولا يُتحقق من اسم المستخدم. وكلمة المرور هي مفتاح Arkvory. وبهذه الطريقة يرسل docker login وgit credential helpers وnpm _auth بيانات الاعتماد.
  • الرمز الشخصي للقراءة فقط لا يغيّر البيانات أبدًا. لكنه يستطيع تنزيل كائنات Git LFS، لأن طلب الدفعة (batch) في Git LFS هو POST للتنزيل أيضًا.

لمعرفة كيفية إنشاء الرموز والمفاتيح: الحسابات والمفاتيح. وتفاصيل الترويسة: المصادقة.

ما الطريقة التي أستخدمها؟ ​

المهمةالطريقة الموصى بها
رفع مُخرَج بناء من CI واستئنافه بعد انقطاع الشبكةarkvoryctl upload أو arkvoryctl put
نشر حزمة UPack من CIarkvoryctl packages publish
نشر «أحدث إصدار 1.4» على خادمarkvoryctl packages download --range ^1.4 --stage release
وضع ملف صغير أو متوسط حسب المسار من نص shell برمجي دون تثبيت أي شيءالملفات الخام مع curl -T أو PowerShell
تخزين صور الحاويات أو مخططات Helmصور الحاويات
إبقاء خامات (textures) ونماذج ومراحل (levels) لعبة خارج مضيف gitGit LFS
مشاركة حزم Unity بين المشاريعحزم Unity وnpm
بناء أداتك الخاصة أو واجهتك على الويبTypeScript SDK
التكامل من Python أو Go أو C# أو لغة أخرىREST API
الاطلاع على المحتوى وإدارة المستخدمين والمفاتيح والنسخ الاحتياطيةوحدة التحكم على الويب

قواعد عملية:

  • الملفات الكبيرة (غيغابايتات كثيرة): استخدم arkvoryctl أو SDK. فهما يرفعان على أجزاء ويتابعان بعد الانقطاع. أما طلب PUT واحد (الملفات الخام، وكائنات Git LFS، ونشر npm، وطبقة Docker) فيبدأ من البايت صفر بعد الفشل.
  • أداة تتحدث بروتوكولًا بالفعل: استخدم ذلك البروتوكول. فلا يحتاج Docker وgit وUnity إلى برنامج إضافي.
  • جهاز يقرأ فقط: امنحه رمزًا للقراءة فقط أو مفتاح خدمة بإجراءات قراءة فقط.

القواعد المشتركة ​

HTTPS. استخدم HTTPS مع كل العملاء. يرفض CLI وSDK HTTP العادي إلا على الحلقة المحلية (localhost و127.0.0.1 و[::1]). ويحتاج Docker إلى شهادة موثوقة. ويرسل Git المفتاح مع كل طلب. راجع HTTPS.

التخزين نفسه. طبقة الصورة وكائن Git LFS وأرشيف npm tarball والملف الخام كلها مُخرَجات. وتُحتسب ضمن حصص المستودع وسعة التثبيت. ويُتحقق منها بـ SHA-256 عند تخزينها. وتدخل في النسخ الاحتياطية.

بوابات القراءة والمرايا. لا تقبل بوابة القراءة سوى GET وHEAD. والمرآة نسخة للقراءة فقط من مستودع على تثبيت آخر.

الطريقةعلى بوابة قراءةعلى مرآة
/api/v1 وCLI وSDKقراءة فقطقراءة؛ وتُرفض التغييرات (409 mirror_read_only)
سجل الحاوياتالسحب (pull)السحب؛ ويُرفض الدفع (push)
Git LFSغير مدعوم (طلب الدفعة هو POST)الاستنساخ (clone) والجلب (fetch)؛ ويُرفض الدفع والأقفال
سجل npmالتثبيت والبحثالتثبيت والبحث؛ ويُرفض النشر
الملفات الخامGET وHEADGET وHEAD

راجع بوابات القراءة والمرايا.

Arkvory · ProAnimaStudio