TypeScript परियोजनाओं के लिए CI/CD: GitHub Actions A से Z तक

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

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

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

परिचय: TypeScript परियोजनाओं के लिए CI/CD क्यों महत्वपूर्ण है

\n

TypeScript पर विकास एक शक्तिशाली उपकरण है, लेकिन बिल्ड, परीक्षण और तैनाती प्रक्रियाओं के स्वचालन के बिना, आप मानवीय त्रुटियों, समय की हानि और प्रोडक्शन की अस्थिरता का सामना करने का जोखिम उठाते हैं। CI/CD (Continuous Integration / Continuous Deployment) एक दर्शन और प्रथाओं का समूह है जो इन प्रक्रियाओं को स्वचालित करने की अनुमति देता है। GitHub Actions GitHub का एक अंतर्निहित उपकरण है जो TypeScript परियोजनाओं के लिए आदर्श है, जो लचीली, स्केलेबल और मुफ्त (सार्वजनिक रिपॉजिटरी के लिए) पाइपलाइन प्रदान करता है।

\n

इस लेख में, हम शून्य से एक पूर्ण पाइपलाइन तक का सफर तय करेंगे: लिंटिंग, परीक्षण, बिल्ड और TypeScript एप्लिकेशन का स्वचालित डिप्लॉय सेट करेंगे। आप सीखेंगे कि प्रभावी YAML कॉन्फ़िग कैसे लिखें, निष्पादन समय को कैसे अनुकूलित करें और सामान्य गलतियों से कैसे बचें।

\n\n

मुख्य भाग: CI/CD पाइपलाइन का चरण-दर-चरण निर्माण

\n\n

1. GitHub Actions की मूल बातें: workflow संरचना

\n

GitHub Actions में Workflow (कार्य प्रवाह) चरणों का एक सेट है जो जॉब्स में संयोजित होता है। इसे YAML फ़ाइल में वर्णित किया जाता है, जो आपके रिपॉजिटरी की .github/workflows/ निर्देशिका में संग्रहीत होती है। मूल संरचना इस प्रकार दिखती है:

\n
name: CI/CD Pipeline for TypeScript\n\non:\n  push:\n    branches: [ main, develop ]\n  pull_request:\n    branches: [ main ]\n\njobs:\n  build-and-test:\n    runs-on: ubuntu-latest\n\n    steps:\n      - uses: actions/checkout@v4\n      - name: Setup Node.js\n        uses: actions/setup-node@v4\n        with:\n          node-version: '20'\n          cache: 'npm'\n      - run: npm ci\n      - run: npm run build\n      - run: npm test
\n

मुख्य तत्व:

\n
    \n
  • on: — ट्रिगर (push, pull_request)।
  • \n
  • jobs: — कार्यों (जॉब्स) की सूची जो समानांतर या क्रमिक रूप से निष्पादित होते हैं।
  • runs-on: — निष्पादन के लिए ऑपरेटिंग सिस्टम (आमतौर पर ubuntu-latest)।
  • steps: — कमांड का क्रम। uses पूर्व-निर्मित क्रियाओं (actions) को कॉल करता है, और run शेल कमांड को कॉल करता है।
  • npm ci — package-lock.json के आधार पर निर्भरताओं की तेज़ स्वच्छ स्थापना।

यह न्यूनतम पाइपलाइन पहले से ही बुनियादी CI प्रदान करती है: प्रत्येक push या PR पर, कोड बिल्ड और परीक्षणों के लिए जांचा जाएगा।

\n\n

2. विस्तारित कॉन्फ़िगरेशन: लिंटिंग, फ़ॉर्मेटिंग और संस्करण मैट्रिक्स

\n

TypeScript परियोजनाओं के लिए कोड की एक समान शैली बनाए रखना महत्वपूर्ण है। आइए लिंटर (eslint) और फ़ॉर्मेटर (prettier) जांच जोड़ें। हम Node.js के कई संस्करणों पर परीक्षण के लिए मैट्रिक्स रणनीति का भी उपयोग करेंगे।

\n
jobs:\n  lint-and-format:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v4\n      - uses: actions/setup-node@v4\n        with:\n          node-version: '20'\n          cache: 'npm'\n      - run: npm ci\n      - run: npm run lint\n      - run: npm run format:check\n\n  test:\n    needs: lint-and-format\n    runs-on: ubuntu-latest\n    strategy:\n      matrix:\n        node-version: [18, 20, 22]\n    steps:\n      - uses: actions/checkout@v4\n      - uses: actions/setup-node@v4\n        with:\n          node-version: ${{ matrix.node-version }}\n          cache: 'npm'\n      - run: npm ci\n      - run: npm test
\n

महत्वपूर्ण बिंदु:

\n
    \n
  • needs: — जॉब्स के निष्पादन क्रम को निर्धारित करता है (पहले लिंटिंग, फिर परीक्षण)।
  • strategy.matrix — एक ही जॉब को विभिन्न मापदंडों (Node.js संस्करणों) के साथ चलाने की अनुमति देता है।
  • कैशिंग (cache: 'npm') निर्भरता स्थापना को गति देता है।
  • package.json में स्क्रिप्ट जोड़ें: "lint": "eslint src/" और "format:check": "prettier --check src/"।

अब आपकी पाइपलाइन न केवल जांच करेगी

ब्लॉग

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