परिचय: TypeScript प्रोजेक्ट्स के लिए CI/CD क्यों महत्वपूर्ण है
आधुनिक TypeScript डेवलपमेंट में न केवल गुणवत्तापूर्ण कोड की आवश्यकता होती है, बल्कि उपयोगकर्ताओं तक उसे पहुँचाने की एक विश्वसनीय प्रक्रिया भी जरूरी है। टेस्ट, बिल्ड और डिप्लॉयमेंट को मैन्युअल रूप से चलाना न केवल एक रूटीन है, बल्कि त्रुटियों का स्रोत भी है। CI/CD (Continuous Integration / Continuous Deployment) हर चरण को स्वचालित करके इस समस्या का समाधान करता है।
इस लेख में, हम GitHub Actions का उपयोग करके TypeScript प्रोजेक्ट के लिए एक पूर्ण CI/CD पाइपलाइन सेट अप करना सीखेंगे। आप जानेंगे कि कैसे लिंटिंग, टेस्टिंग, बिल्ड और अपने एप्लिकेशन की डिप्लॉयमेंट को स्वचालित करके काम के घंटों की बचत की जा सकती है।
यह लेख PythonLib प्लेटफॉर्म के लिए लिखा गया है, लेकिन सभी उदाहरण और अवधारणाएँ किसी भी TypeScript प्रोजेक्ट पर लागू होती हैं। हम TypeScript 5.x और Node.js 20 का उपयोग करेंगे।
मुख्य भाग: CI/CD की चरण-दर-चरण सेटअप
1. प्रोजेक्ट संरचना और तैयारी
workflow लिखने से पहले, सुनिश्चित करें कि आपका TypeScript प्रोजेक्ट सही ढंग से कॉन्फ़िगर किया गया है। न्यूनतम संरचना इस प्रकार है:
my-typescript-app/├── src/│ └── index.ts├── tests/│ └── index.test.ts├── package.json├── tsconfig.json├── .eslintrc.json└── .github/ └── workflows/ └── ci.ymlमहत्वपूर्ण: package.json में टेस्टिंग और बिल्ड के लिए स्क्रिप्ट्स होनी चाहिए।
{ "name": "my-typescript-app", "version": "1.0.0", "scripts": { "build": "tsc", "test": "jest", "lint": "eslint src/**/*.ts", "start": "node dist/index.js" }, "devDependencies": { "typescript": "^5.3.0", "jest": "^29.7.0", "@types/jest": "^29.5.0", "ts-jest": "^29.1.0", "eslint": "^8.50.0" }}सुनिश्चित करें कि tsconfig.json में सही outDir (जैसे, "./dist") और strict मोड शामिल हो।
2. GitHub Actions workflow बनाना
GitHub Actions, .github/workflows/ डायरेक्टरी में YAML फ़ाइलों पर आधारित है। निम्नलिखित सामग्री के साथ ci.yml फ़ाइल बनाएँ:
name: CI/CD 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: - uses: actions/checkout@v4
- name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} cache: 'npm'
- name: Install dependencies run: npm ci
- name: Lint code run: npm run lint
- name: Build project run: npm run build
- name: Run tests run: npm test
- name: Upload build artifacts uses: actions/upload-artifact@v4 with: name: build-${{ matrix.node-version }} path: dist/मुख्य बिंदुओं की व्याख्या:
- on: Workflow main और develop ब्रांचेज़ पर push और pull request पर चलता है।
- matrix: संगतता के लिए Node.js के दो संस्करणों (18 और 20) पर परीक्षण करता है।
- npm ci: डिपेंडेंसीज़ की साफ इंस्टॉलेशन (npm install से तेज़ और अधिक विश्वसनीय)।
- upload-artifact: बाद में डिप्लॉयमेंट के लिए बिल्ड की गई फ़ाइलों को सहेजता है।
3. डिप्लॉय स्टेज जोड़ना
सफल बिल्ड और टेस्टिंग के बाद, एप्लिकेशन को स्वचालित रूप से डिप्लॉय किया जा सकता है। आइए GitHub Pages (स्टैटिक साइट्स के लिए) और SSH के माध्यम से VPS पर डिप्लॉयमेंट देखें।
विकल्प A: GitHub Pages पर डिप्लॉय
deploy: needs: build-and-test runs-on: ubuntu-latest if: github.ref == 'refs/heads/main'
steps: - uses: actions/download-artifact@v4 with: name: build-20.x path: dist/
- name: Deploy to GitHub Pages uses
```