TypeScript प्रोजेक्ट्स के लिए CI/CD: GitHub Actions

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें
```html

परिचय: 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 ```

ब्लॉग

पुस्तक अनुशंसाएँ