TypeScript परियोजनाओं के लिए CI/CD का परिचय
आधुनिक सॉफ्टवेयर विकास स्वचालन के बिना अकल्पनीय है। CI/CD (Continuous Integration / Continuous Delivery) एक अभ्यास है जो डेवलपर टीमों को प्रोडक्शन में तेजी से और सुरक्षित रूप से बदलाव पहुंचाने की अनुमति देता है। TypeScript परियोजनाओं के लिए, विशेष रूप से Node.js इकोसिस्टम में, CI/CD पाइपलाइन सेटअप करना एक महत्वपूर्ण कार्य बन जाता है।
इस लेख में, हम GitHub Actions का उपयोग करके TypeScript प्रोजेक्ट के लिए एक पूर्ण CI/CD पाइपलाइन सेटअप करने का तरीका समझेंगे। आप सीखेंगे कि परीक्षण चलाने, प्रोजेक्ट बिल्ड करने और होस्टिंग पर डिप्लॉय करने को कैसे स्वचालित किया जाए। यह सामग्री उन डेवलपर्स के लिए है जो पहले से TypeScript से परिचित हैं और आधुनिक DevOps प्रथाओं को लागू करना चाहते हैं।
GitHub Actions क्या है और यह TypeScript के लिए क्यों सुविधाजनक है
GitHub Actions एक अंतर्निहित CI/CD प्रणाली है जो आपको सीधे GitHub रिपॉजिटरी में स्वचालित कार्यप्रवाह (workflows) बनाने की अनुमति देती है। मुख्य लाभ:
- मुफ्त सीमा — सार्वजनिक रिपॉजिटरी के लिए प्रति माह 2000 मिनट का बिल्ड समय उपलब्ध है।
- GitHub के साथ एकीकरण — तृतीय-पक्ष सेवाओं को सेटअप करने की आवश्यकता नहीं है।
- लचीलापन — shell-कमांड चलाने के माध्यम से TypeScript सहित किसी भी भाषा का समर्थन करता है।
- बड़ा इकोसिस्टम — AWS, Vercel, Netlify और अन्य प्लेटफार्मों पर डिप्लॉय करने के लिए तैयार actions उपलब्ध हैं।
TypeScript परियोजनाओं के लिए GitHub Actions आदर्श है, क्योंकि यह npm या yarn कमांड को आसानी से चलाने, निर्भरता कैशिंग और समानांतर कार्यों का उपयोग करने की अनुमति देता है।
Workflow फ़ाइल की मूल संरचना
GitHub Actions में Workflow को YAML फ़ाइलों में वर्णित किया जाता है, जो .github/workflows/ निर्देशिका में संग्रहीत होती हैं। आइए TypeScript प्रोजेक्ट के लिए न्यूनतम कॉन्फ़िगरेशन देखें।
फ़ाइल .github/workflows/ci.yml बनाएं:
name: CI Pipeline
on: push: branches: [ main, develop ] pull_request: branches: [ main ]
jobs: build-and-test: runs-on: ubuntu-latest
strategy: matrix: node-version: [18.x, 20.x]
steps: - name: Checkout repository uses: actions/checkout@v4
- name: Setup Node.js ${{ matrix.node-version }} uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }}
- name: Install dependencies run: npm ci
- name: Lint check run: npm run lint
- name: Type check run: npx tsc --noEmit
- name: Run tests run: npm test
- name: Build project run: npm run buildमुख्य तत्वों का विवरण:
on— ट्रिगर (main/develop में push, pull request)।runs-on— निष्पादन के लिए ऑपरेटिंग सिस्टम (ubuntu-latest)।matrix— Node.js के विभिन्न संस्करणों (18 और 20) पर समानांतर निष्पादन।actions/checkout— रिपॉजिटरी को क्लोन करने के लिए मानक action।actions/setup-node— Node.js के निर्दिष्ट संस्करण को स्थापित करना।npm ci— lock-फ़ाइल से निर्भरताओं की स्वच्छ स्थापना (npm install से तेज़ और अधिक विश्वसनीय)।
बिल्ड को गति देने के लिए कैशिंग जोड़ना
हर बार निर्भरताएँ डाउनलोड करने से बचने के लिए, कैशिंग जोड़ें:
- name: Cache Node.js modules uses: actions/cache@v3 with: path: ~/.npm key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} restore-keys: | ${{ runner.os }}-node-यह चरण package-lock.json के हैश के आधार पर ~/.npm को कैश करता है। बार-बार चलाने पर, यदि निर्भरताएँ नहीं बदली हैं, तो कैश पुनर्स्थापित हो जाएगा, जिससे 30-60 सेकंड की बचत होगी।
ब्लॉग
पुस्तक अनुशंसाएँ
यह भी पढ़ें
C++ में माइक्रोसर्विसेज़: आर्किटेक्चर, अभ्यास और कोड उदाहरण