TypeScript के लिए CI/CD पाइपलाइन: शुरू से सेटअप — चरण-दर-चरण मार्गदर्शिका
\n\nआपने TypeScript में एक शानदार प्रोजेक्ट लिखा है। कोड सुंदर है, टाइप सख्त हैं, लॉजिक सटीक है। लेकिन हर बार जब आपको सर्वर पर अपडेट डालना होता है, तो आप मैन्युअल रूप से बिल्ड चलाते हैं, जांचते हैं कि कुछ टूटा तो नहीं, और प्रार्थना करते हैं कि प्रोडक्शन क्रैश न हो। परिचित लगता है?
\n\nअब इसे बदलने का समय है। CI/CD पाइपलाइन बीस साल के अनुभव वाले सीनियर्स के लिए कोई जादू नहीं है। यह एक उपकरण है जो दिनचर्या को स्वचालित करता है: लिंटिंग, टेस्ट, बिल्ड और डिप्लॉय। ब्रांच में एक कमिट — और सब कुछ बिना किसी तनाव के अपने आप प्रोडक्शन में चला जाता है।
\n\nइस लेख में हम शुरू से एक TypeScript प्रोजेक्ट के लिए पूर्ण CI/CD पाइपलाइन सेटअप करेंगे। GitHub Actions के उदाहरण के साथ — एक मुफ्त और शक्तिशाली उपकरण। आप सीखेंगे:
\n- \n
- स्वचालित लिंटिंग और फ़ॉर्मेटिंग जोड़ना \n
- यूनिट टेस्ट चलाना और टाइप जांचना \n
- एप्लिकेशन बनाना और रिमोट सर्वर पर डिप्लॉय करना \n
- CI/CD सेटअप करते समय सामान्य गलतियों से बचना \n
तैयार हैं? चलिए शुरू करते हैं!
\n\nTypeScript प्रोजेक्ट के लिए CI/CD क्यों महत्वपूर्ण है
\n\nTypeScript एक सख्ती से टाइप की गई भाषा है जो JavaScript में कंपाइल होती है। पहली नज़र में, यह सुरक्षा का भ्रम देता है: अगर कोड कंपाइल हो गया, तो इसका मतलब है कि यह काम कर रहा है। लेकिन व्यवहार में, कंपाइलेशन लॉजिकल त्रुटियों, API समस्याओं या टूटी हुई निर्भरताओं को नहीं पकड़ता।
\n\nCI/CD (Continuous Integration / Continuous Deployment) इस समस्या को हल करता है:
\n- \n
- स्वचालित जांच: प्रत्येक कमिट पाइपलाइन से गुज़रता है — लिंटिंग, टेस्ट, कंपाइलेशन। अगर कुछ टूटता है, तो आपको एक हफ्ते के बजाय एक मिनट में पता चल जाता है। \n
- एक समान मानक: पूरी टीम एक ही नियमों से काम करती है। कोई भी पुश करने से पहले टेस्ट चलाना नहीं भूलता। \n
- तेज़ डिप्लॉयमेंट: अब सर्वर पर कोई मैन्युअल कमांड नहीं। main में एक मर्ज — और अपडेट पहले से ही लाइव साइट पर है। \n
TypeScript के लिए CI/CD विशेष रूप से महत्वपूर्ण है क्योंकि टाइप त्रुटियां केवल runtime में दिखाई दे सकती हैं यदि कंपाइलेशन सही ढंग से कॉन्फ़िगर नहीं किया गया है। पाइपलाइन इसे रोकता है।
\n\nचरण 1: TypeScript प्रोजेक्ट तैयार करना
\n\nCI/CD सेटअप करने से पहले, सुनिश्चित करें कि प्रोजेक्ट ऑटोमेशन के लिए तैयार है। यहाँ न्यूनतम सेट है:
\n- \n
package.jsonजिसमें स्क्रिप्ट परिभाषित हों \n tsconfig.json— TypeScript कॉन्फ़िगरेशन \n - ESLint और Prettier — कोड एकरूपता के लिए \n
- टेस्ट (Jest, Vitest या Mocha) \n
मान लीजिए आपके पास एक सरल प्रोजेक्ट है। संरचना कुछ इस तरह दिख सकती है:
\n\nmy-ts-project/\n├── src/\n│ ├── index.ts\n│ └── utils.ts\n├── tests/\n│ └── utils.test.ts\n├── .eslintrc.json\n├── .prettierrc\n├── tsconfig.json\n├── package.json\n└── README.md\n\n\nसुनिश्चित करें कि package.json में स्क्रिप्ट परिभाषित हैं:
{\n "scripts": {\n "lint": "eslint src/ tests/ --ext .ts",\n "format": "prettier --check src/ tests/",\n "type-check": "tsc --noEmit",\n "test": "jest",\n "build": "tsc",\n "start": "node dist/index.js"\n }\n}\n\n\nअब प्रोजेक्ट CI/CD के लिए तैयार है। अगर कुछ कमी है — जोड़ें। पाइपलाइन इन्हीं कमांड को कॉल करेगी।
\n\nचरण 2: CI/CD प्लेटफ़ॉर्म चुनना
\n\nकई विकल्प हैं: Jenkins, GitLab CI, CircleCI, Travis CI। लेकिन शुरुआती और छोटे प्रोजेक्ट के लिए GitHub Actions सबसे अच्छा विकल्प है:
\n- \n
- GitHub में बिल्ट-इन है — अलग से कुछ कॉन्फ़िगर करने की ज़रूरत नहीं \n
- मुफ्त सीमा: प्रति माह 2000 मिनट (प्राइवेट रिपॉजिटरी के लिए) \n
- तैयार एक्शन का विशाल इकोसिस्टम \n
- समझने में आसान YAML सिंटैक्स \n
अगर आपका कोड GitLab पर है — GitLab CI का उपयोग करें (विवरण लगभग समान है)। लेकिन इस लेख में हम GitHub के साथ काम करते हैं।
\n\nचरण 3: CI/CD पाइपलाइन बनाना — पहली फ़ाइल
\n\nप्रोजेक्ट की रूट में .github/workflows/ फ़ोल्डर बनाएं, और उसके अंदर ci.y फ़ाइल बनाएं।