क्लाइंट और प्रोटोकॉल
Arkvory का स्टोरेज और एक्सेस मॉडल एक ही है, लेकिन उस तक पहुँचने के कई तरीके हैं। हर तरीका एक क्लाइंट या ऐसा प्रोटोकॉल है जिसे कोई टूल पहले से जानता है। सभी तरीके डेटा को Arkvory आर्टिफ़ैक्ट के रूप में सहेजते हैं। इसलिए आप कोई भी तरीका इस्तेमाल करें, वही अनुमतियाँ, कोटा, SHA-256 जाँच, प्रतिधारण नियम, बैकअप और मिरर लागू होते हैं।
यह पेज Arkvory से बात करने के सभी तरीके सूचीबद्ध करता है: हर तरीका किस काम का है और वह कौन-से क्रेडेंशियल स्वीकार करता है। किसी काम के लिए सही टूल चुनने में इसका इस्तेमाल करें।
अवलोकन
| तरीका | पता | किसके लिए इस्तेमाल करें | क्रेडेंशियल |
|---|---|---|---|
| वेब कंसोल | https://arkvory.example/console/ | ब्राउज़र में रिपॉज़िटरी देखें, अपलोड और डाउनलोड करें, उपयोगकर्ता, कुंजियाँ और बैकअप प्रबंधित करें | उपयोगकर्ता नाम और पासवर्ड से साइन इन, या सेवा कुंजी |
arkvoryctl कमांड लाइन | /api/v1 | CI स्क्रिप्ट, जारी रखे जा सकने वाले अपलोड और डाउनलोड, पथ वाली फ़ाइलें, प्रमोशन, बैकअप | फ़ाइल या एनवायरनमेंट वेरिएबल से कुंजी (Bearer के रूप में भेजी जाती है) |
| TypeScript SDK | /api/v1 | TypeScript या JavaScript में आपके अपने टूल, Node.js या ब्राउज़र में | कॉलबैक से कुंजी (Bearer के रूप में भेजी जाती है) |
| REST API | /api/v1/... | किसी भी भाषा में इंटीग्रेशन | केवल Authorization: Bearer <key> |
| कंटेनर रजिस्ट्री (OCI) | /v2/ | Docker, Podman, Buildx, containerd, Helm चार्ट, ORAS आर्टिफ़ैक्ट | कुंजी को पासवर्ड बनाकर Basic (docker login), या Bearer |
| Git LFS | /lfs/<repository> | git रिपॉज़िटरी की बड़ी फ़ाइलें, Unity और Unreal के लिए फ़ाइल लॉकिंग | कुंजी को पासवर्ड बनाकर Basic (git credential helper), या Bearer |
| npm रजिस्ट्री | /npm/<repository>/ | Unity Package Manager की स्कोप्ड रजिस्ट्री, npm publish और npm install | Bearer (.npmrc में _authToken, .upmconfig.toml में token), या Basic _auth |
| पथ से रॉ फ़ाइलें | /api/v1/repositories/<repository>/raw/<path> | curl -T या PowerShell से एक ही अनुरोध | केवल Authorization: Bearer <key> |
| वेबहुक | आपके रिसीवर का URL | रिपॉज़िटरी बदलने पर डिप्लॉयमेंट या जॉब शुरू करना | हर अनुरोध का HMAC हस्ताक्षर |
/v2, /lfs और /npm के रूट अपने प्रोटोकॉल के विनिर्देशों का पालन करते हैं। वे /api/v1 के OpenAPI दस्तावेज़ का हिस्सा नहीं हैं, और त्रुटियाँ उसी फ़ॉर्मेट में बताते हैं जिसकी उनके क्लाइंट अपेक्षा करते हैं।
क्रेडेंशियल
सार्वजनिक हेल्थ चेक को छोड़कर हर अनुरोध को क्रेडेंशियल चाहिए। Arkvory ये प्रकार स्वीकार करता है:
| प्रकार | कैसा दिखता है | कहाँ से आता है | सामान्य उपयोग |
|---|---|---|---|
| व्यक्तिगत एक्सेस टोकन | pat_... | उपयोगकर्ता इसे कंसोल में बनाता है। स्कोप read या read-write। समाप्त हो जाता है (डिफ़ॉल्ट रूप से 90 दिन में, अधिकतम 365)। | डेवलपर: वर्कस्टेशन पर Unity, git, Docker |
| सेवा कुंजी | arkvory_... | व्यवस्थापक सेवा खाते के लिए जारी करता है, हर रिपॉज़िटरी में सटीक कार्रवाइयों के साथ | CI/CD, डिप्लॉय एजेंट, बिल्ड सर्वर |
| फ़ाइल कुंजी | कोई भी सीक्रेट | सर्वर की कुंजी फ़ाइल (ARKVORY_KEYS_FILE), जिसमें हर रिपॉज़िटरी के लिए read या write होता है; स्वामी की कुंजी प्रशासन भी करती है | इंस्टॉलेशन का स्वामी, पुराने इंटीग्रेशन |
| सत्र | dps_... | कंसोल में साइन इन; 12 घंटे के लिए मान्य | कंसोल पर इंटरैक्टिव काम |
| डाउनलोड लिंक | ?token= वाला URL | एक आर्टिफ़ैक्ट के लिए बनाया जाता है; 60 सेकंड से 24 घंटे | बिना कुंजी वाले व्यक्ति को एक फ़ाइल देना |
प्रोटोकॉल केवल इसमें अलग हैं कि वे कुंजी कैसे भेजते हैं:
/api/v1, CLI, SDK और रॉ फ़ाइलेंAuthorization: Bearer <key>इस्तेमाल करते हैं।/v2,/lfsऔर/npmHTTP Basic भी स्वीकार करते हैं। उपयोगकर्ता नाम जाँचा नहीं जाता। पासवर्ड Arkvory की कुंजी होती है।docker login, git क्रेडेंशियल हेल्पर और npm_authइसी तरह क्रेडेंशियल भेजते हैं।- केवल-पढ़ने वाला व्यक्तिगत टोकन कभी डेटा नहीं बदलता। फिर भी वह Git LFS ऑब्जेक्ट डाउनलोड कर सकता है, क्योंकि Git LFS का batch अनुरोध डाउनलोड के लिए भी
POSTहोता है।
टोकन और कुंजियाँ बनाने का तरीका: खाते और कुंजियाँ। हेडर का विवरण: प्रमाणीकरण।
मुझे कौन-सा तरीका इस्तेमाल करना चाहिए?
| काम | अनुशंसित तरीका |
|---|---|
| CI से बिल्ड आर्टिफ़ैक्ट अपलोड करना और नेटवर्क विफलता के बाद उसे जारी रखना | arkvoryctl upload या arkvoryctl put |
| CI से UPack पैकेज प्रकाशित करना | arkvoryctl packages publish |
| सर्वर पर "सबसे नया 1.4 रिलीज़" डिप्लॉय करना | arkvoryctl packages download --range ^1.4 --stage release |
| कुछ इंस्टॉल किए बिना शेल स्क्रिप्ट से पथ पर छोटी या मध्यम फ़ाइल रखना | curl -T या PowerShell के साथ रॉ फ़ाइलें |
| कंटेनर इमेज या Helm चार्ट सहेजना | कंटेनर इमेज |
| गेम के टेक्सचर, मॉडल और लेवल git होस्ट के बाहर रखना | Git LFS |
| प्रोजेक्टों के बीच Unity पैकेज साझा करना | Unity और npm पैकेज |
| अपना टूल या वेब इंटरफ़ेस बनाना | TypeScript SDK |
| Python, Go, C# या किसी और भाषा से इंटीग्रेट करना | REST API |
| सब कुछ देखना-परखना, उपयोगकर्ता, कुंजियाँ और बैकअप प्रबंधित करना | वेब कंसोल |
कुछ व्यावहारिक सुझाव:
- बड़ी फ़ाइलें (कई गीगाबाइट):
arkvoryctlया SDK इस्तेमाल करें। वे भागों में अपलोड करते हैं और रुकावट के बाद जारी रहते हैं। एक हीPUTअनुरोध (रॉ फ़ाइलें, Git LFS ऑब्जेक्ट, npm publish, Docker लेयर) विफलता के बाद शून्य बाइट से फिर शुरू होता है। - टूल पहले से किसी प्रोटोकॉल को जानता है: वही प्रोटोकॉल इस्तेमाल करें। Docker, git और Unity को अतिरिक्त सॉफ़्टवेयर नहीं चाहिए।
- मशीन केवल पढ़ती है: उसे केवल-पढ़ने वाला टोकन या केवल पढ़ने की कार्रवाइयों वाली सेवा कुंजी दें।
साझा नियम
HTTPS। हर क्लाइंट के लिए HTTPS इस्तेमाल करें। CLI और SDK लूपबैक (localhost, 127.0.0.1, [::1]) के अलावा सादा HTTP स्वीकार नहीं करते। Docker को विश्वसनीय सर्टिफ़िकेट चाहिए। Git हर अनुरोध के साथ कुंजी भेजता है। HTTPS देखें।
एक ही स्टोरेज। इमेज लेयर, Git LFS ऑब्जेक्ट, npm टारबॉल और रॉ फ़ाइल सब आर्टिफ़ैक्ट हैं। वे रिपॉज़िटरी कोटा और इंस्टॉलेशन की क्षमता में गिने जाते हैं। सहेजते समय उनका SHA-256 से सत्यापन होता है। वे बैकअप में शामिल होते हैं।
रीड गेटवे और मिरर। रीड गेटवे केवल GET और HEAD स्वीकार करता है। मिरर किसी दूसरे इंस्टॉलेशन पर रिपॉज़िटरी की रीड-ओनली प्रति है।
| तरीका | रीड गेटवे पर | मिरर पर |
|---|---|---|
/api/v1, CLI, SDK | केवल पढ़ना | पढ़ना; बदलाव अस्वीकार किए जाते हैं (409 mirror_read_only) |
| कंटेनर रजिस्ट्री | पुल | पुल; पुश अस्वीकार किया जाता है |
| Git LFS | समर्थित नहीं (batch अनुरोध POST है) | क्लोन और फ़ेच; पुश और लॉक अस्वीकार किए जाते हैं |
| npm रजिस्ट्री | इंस्टॉल और खोज | इंस्टॉल और खोज; publish अस्वीकार किया जाता है |
| रॉ फ़ाइलें | GET और HEAD | GET और HEAD |