परिचय: JavaScript परियोजनाओं के लिए CI/CD की आवश्यकता क्यों है?
\n\nNode.js पर आधुनिक JavaScript अनुप्रयोगों के विकास के लिए न केवल गुणवत्तापूर्ण कोड लिखना आवश्यक है, बल्कि इसे अंतिम उपयोगकर्ताओं तक विश्वसनीय रूप से पहुँचाना भी आवश्यक है। मैन्युअल परीक्षण, बिल्ड और डिप्लॉय न केवल धीमे हैं, बल्कि मानवीय त्रुटियों से भी भरे हैं। यहाँ CI/CD (Continuous Integration / Continuous Deployment) मदद करता है - सॉफ्टवेयर जीवनचक्र के सभी चरणों को स्वचालित करने की एक पद्धति।
\n\nJavaScript परियोजनाओं के लिए CI/CD रिपॉजिटरी में प्रत्येक पुश पर स्वचालित रूप से परीक्षण चलाने, एप्लिकेशन को बिल्ड करने और इसे सर्वर या क्लाउड पर डिप्लॉय करने की अनुमति देता है। इस पद्धति को लागू करने के लिए सबसे लोकप्रिय टूल में से एक GitHub Actions है - GitHub प्लेटफॉर्म पर एक अंतर्निहित वर्कफ़्लो स्वचालन प्रणाली।
\n\nइस लेख में, हम सीखेंगे कि GitHub Actions का उपयोग करके JavaScript (Node.js) प्रोजेक्ट के लिए एक पूर्ण CI/CD पाइपलाइन कैसे सेटअप करें: कॉन्फ़िगरेशन लिखने से लेकर डिप्लॉय तक। आप जानेंगे कि विकास को कैसे तेज़ करें, कोड की गुणवत्ता कैसे बढ़ाएँ और नियमित कार्यों को कैसे भूलें।
\n\nमुख्य भाग: GitHub Actions के साथ CI/CD पाइपलाइन बनाना
\n\n1. GitHub Actions क्या है और यह कैसे काम करता है?
\n\nGitHub Actions वर्कफ़्लो को स्वचालित करने का एक प्लेटफ़ॉर्म है, जो रिपॉजिटरी में घटनाओं (push, pull request, issue बनाना आदि) के जवाब में चलता है। Workflow वर्चुअल मशीनों (runners) पर निष्पादित चरणों का एक सेट है। प्रत्येक चरण स्क्रिप्ट चला सकता है, निर्भरताएँ स्थापित कर सकता है या बाहरी सेवाओं को कॉल कर सकता है।
\n\nमुख्य अवधारणाएँ:
\n- \n
- Workflow — YAML कॉन्फ़िगरेशन फ़ाइल, जो
.github/workflows/फ़ोल्डर में संग्रहीत होती है। \n - Event — ट्रिगर जो workflow शुरू करता है (उदाहरण के लिए,
pushयाpull_request)। \n - Job — एक runner पर निष्पादित चरणों का सेट (निर्भरताएँ, परीक्षण, बिल्ड)। \n
- Step — एक अलग कमांड या क्रिया (action)। \n
JavaScript परियोजनाओं के लिए, हम Ubuntu के साथ मानक runner का उपयोग करेंगे, क्योंकि यह Node.js को बॉक्स से बाहर सपोर्ट करता है।
\n\n2. बुनियादी सेटअप: परीक्षण और लिंटिंग
\n\nआइए परीक्षण और लिंटिंग के लिए एक सरल workflow बनाकर शुरू करें। अपने रिपॉजिटरी की जड़ में .github/workflows/ci.yml फ़ाइल बनाएँ।
Node.js प्रोजेक्ट के लिए कॉन्फ़िगरेशन का उदाहरण:
\n\nname: CI for Node.js\n\non:\n push:\n branches: [ main, develop ]\n pull_request:\n branches: [ main ]\n\njobs:\n test:\n runs-on: ubuntu-latest\n\n strategy:\n matrix:\n node-version: [18.x, 20.x]\n\n steps:\n - name: Checkout repository\n uses: actions/checkout@v4\n\n - name: Setup Node.js ${{ matrix.node-version }}\n uses: actions/setup-node@v4\n with:\n node-version: ${{ matrix.node-version }}\n cache: 'npm'\n\n - name: Install dependencies\n run: npm ci\n\n - name: Run linter\n run: npm run lint\n\n - name: Run tests\n run: npm test\n\nआइए मुख्य बिंदुओं को समझें:
\n- \n
- Matrix strategy — Node.js के कई संस्करणों (18.x और 20.x) पर समानांतर रूप से परीक्षण चलाने की अनुमति देता है। \n
- actions/checkout — रिपॉजिटरी को क्लोन करने के लिए मानक क्रिया। \n
- actions/setup-node — Node.js का आवश्यक संस्करण स्थापित करता है और गति के लिए
node_modulesकैशिंग सक्षम करता है। \n - npm ci —
package-lock.jsonसे निर्भरताओं की स्वच्छ स्थापना (npm installसे तेज़ और अधिक विश्वसनीय)। \n
इस फ़ाइल को रिपॉजिटरी में पुश करने के बाद, GitHub Actions स्वचालित रूप से परीक्षण चलाएगा। आप अपने रिपॉजिटरी के "Actions" अनुभाग में परिणाम देखेंगे।
\n\n3. Docker इमेज बनाना और प्रकाशित करना
\n\nए