गिटलैब सीआई 2026 में उपलब्ध सबसे शक्तिशाली, पूरी तरह से एकीकृत सीआई/सीडी प्रणालियों में से एक है – किसी बाहरी सेवा की आवश्यकता नहीं, पाइपलाइनों को एक ही में परिभाषित किया गया है.gitlab-ci.yml फ़ाइल। यह मार्गदर्शिका परीक्षण से लेकर उत्पादन परिनियोजन तक एक संपूर्ण पाइपलाइन बनाती है।
📋 Table of Contents
- GitLab CI कैसे काम करता है
- बुनियादी पाइपलाइन संरचना
- डॉकर के साथ स्टेज बनाएं
- वातावरण के साथ स्टेज परिनियोजित करें
- तेज़ पाइपलाइनों के लिए कैशिंग
- समानांतर मैट्रिक्स बनाता है
- रहस्यों और चरों का प्रबंधन
- का प्रयोग करें जब निर्भरताएँ अनुमति देती हैं तो नौकरियों को चरण क्रम से बाहर चलाने के लिए
- उत्तर: GitLab द्वारा होस्ट किए गए रनर अधिकांश परियोजनाओं के लिए काम करते हैं। भारी कार्यभार, विशिष्ट हार्डवेयर या निजी नेटवर्क एक्सेस के लिए स्व-होस्ट किए गए धावक इसके लायक हैं।
- GitLab CI एक एकल YAML फ़ाइल में एक संपूर्ण, एकीकृत CI/CD प्रणाली प्रदान करता है। यहां पाइपलाइन – कवरेज के साथ परीक्षण, डॉकर छवियों का निर्माण और पुश, मैन्युअल अनुमोदन के साथ उत्पादन में तैनात करना – अधिकांश अनुप्रयोगों के लिए पूर्ण वर्कफ़्लो को कवर करता है। एक परीक्षण चरण से शुरू करें, क्रमिक रूप से निर्माण और तैनाती जोड़ें, और जैसे-जैसे आपकी पाइपलाइन बढ़ती है, कैशिंग और समानांतर नौकरियों के साथ अनुकूलन करें।
GitLab CI कैसे काम करता है
GitLab CI.gitlab-ci.ymlमें परिभाषित पाइपलाइन चलाता है आपके रेपो रूट पर। प्रत्येक पाइपलाइन मेंहै चरण (परीक्षण, निर्माण, तैनाती) जो क्रमिक रूप से चलते हैं। एक चरण के भीतर,नौकरियाँ समानांतर में चलाएँ. नौकरियांपर निष्पादित होती हैं धावक (GitLab-होस्टेड या स्वयं-होस्टेड)।
बुनियादी पाइपलाइन संरचना
# .gitlab-ci.yml
stages:
- test
- build
- deploy
variables:
NODE_VERSION: "20"
# Test stage
test:
stage: test
image: node:20-alpine
cache:
key: "$CI_COMMIT_REF_SLUG"
paths:
- node_modules/
script:
- npm ci
- npm run lint
- npm run test:coverage
artifacts:
reports:
coverage_report:
coverage_format: cobertura
path: coverage/cobertura-coverage.xml
डॉकर के साथ स्टेज बनाएं
build:
stage: build
image: docker:24
services:
- docker:24-dind
before_script:
- docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" "$CI_REGISTRY"
script:
- docker build -t "$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA" .
- docker tag "$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA" "$CI_REGISTRY_IMAGE:latest"
- docker push "$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA"
- docker push "$CI_REGISTRY_IMAGE:latest"
rules:
- if: '$CI_COMMIT_BRANCH == "main"'
वातावरण के साथ स्टेज परिनियोजित करें
deploy_production:
stage: deploy
image: alpine:latest
before_script:
- apk add --no-cache openssh-client
- eval $(ssh-agent -s)
- echo "$SSH_PRIVATE_KEY" | ssh-add -
script:
- ssh -o StrictHostKeyChecking=no $DEPLOY_USER@$PROD_HOST
"cd /app && docker compose pull && docker compose up -d"
environment:
name: production
url: https://example.com
rules:
- if: '$CI_COMMIT_BRANCH == "main"'
when: manual # require manual approval for production
तेज़ पाइपलाइनों के लिए कैशिंग
cache:
key:
files:
- package-lock.json # cache invalidates when lockfile changes
paths:
- node_modules/
- .npm/
# Python: paths: [.cache/pip, venv/]
# Go: paths: [.go/pkg/mod/]
# Rust: paths: [target/, .cargo/]
समानांतर मैट्रिक्स बनाता है
test:
stage: test
parallel:
matrix:
- NODE_VERSION: ["18", "20", "22"]
image: node:$NODE_VERSION-alpine
script:
- npm ci
- npm test
# Runs 3 parallel jobs testing against Node 18, 20, 22
रहस्यों और चरों का प्रबंधन
कभी भी हार्डकोड रहस्य नहीं। उन्हेंमें संग्रहित करें सेटिंग्स, फिर सीआई/सीडी, फिर वेरिएबल्स:
- संवेदनशील मानों कोके रूप में चिह्नित करें नकाबपोश (लॉग में छिपा हुआ)
- परिनियोजन रहस्यों कोके रूप में चिह्नित करें संरक्षित (केवल संरक्षित शाखाओं पर उपलब्ध)
- का प्रयोग करें पर्यावरण का दायरा विभिन्न स्टेजिंग बनाम उत्पादन मूल्यों के लिएपाइपलाइन अनुकूलन युक्तियाँ
का प्रयोग करें जब निर्भरताएँ अनुमति देती हैं तो नौकरियों को चरण क्रम से बाहर चलाने के लिए
- का प्रयोग करें इसके बजाय
needs:(आधुनिक, अधिक लचीला) - का प्रयोग करें इसलिए नए प्रयास पुरानी पाइपलाइनों को रद्द कर देते हैं
rules:आक्रामक तरीके से कैश करेंonly/except— निर्भरता स्थापित करना अक्सर सबसे धीमा कदम होता है - छोटी आधार छवियों का उपयोग करें
interruptible: true(अल्पाइन वेरिएंट) तेज़ जॉब स्टार्टअप के लिए - अक्सर पूछे जाने वाले प्रश्नप्रश्न: GitLab CI बनाम GitHub क्रियाएँ?
- उ: GitLab CI पूरी तरह से GitLab (रजिस्ट्री, वातावरण, सुरक्षा स्कैनिंग अंतर्निहित) के साथ एकीकृत है। GitHub Actions के पास पूर्व-निर्मित क्रियाओं का एक बड़ा बाज़ार है। दोनों उत्कृष्ट हैं; आपका कोड कहां रहता है इसके आधार पर चुनें।प्रश्न: क्या मुझे स्वयं-होस्टेड धावकों की आवश्यकता है?
उत्तर: GitLab द्वारा होस्ट किए गए रनर अधिकांश परियोजनाओं के लिए काम करते हैं। भारी कार्यभार, विशिष्ट हार्डवेयर या निजी नेटवर्क एक्सेस के लिए स्व-होस्ट किए गए धावक इसके लायक हैं।
प्रश्न: मैं धीमी पाइपलाइनों की गति कैसे बढ़ाऊं?
ए: कैश निर्भरता, उपयोग
समानांतर निष्पादन के लिए, छोटी डॉकर छवियों का उपयोग करें,
के साथ विभाजित परीक्षण सुइट्स का उपयोग करें . प्रोफ़ाइल सबसे धीमी नौकरियां पहले।
प्रश्न: मैं पाइपलाइन में डेटाबेस माइग्रेशन को कैसे संभालूं?
उ: ऐप को पुनः प्रारंभ करने से पहले माइग्रेशन को परिनियोजन-चरण कार्य के रूप में चलाएँ। स्टेजिंग में हमेशा माइग्रेशन का परीक्षण उत्पादन जैसे डेटाबेस के साथ करें।needs:प्रश्न: कैश बनाम आर्टिफैक्ट – क्या अंतर है?parallel: रन भर में फ़ाइलों का पुन: उपयोग करके नौकरियों को गति देता है (गारंटी नहीं)।
पाइपलाइन के भीतर चरणों के बीच फ़ाइलें पास करें (गारंटी)।
निष्कर्ष
GitLab CI एक एकल YAML फ़ाइल में एक संपूर्ण, एकीकृत CI/CD प्रणाली प्रदान करता है। यहां पाइपलाइन – कवरेज के साथ परीक्षण, डॉकर छवियों का निर्माण और पुश, मैन्युअल अनुमोदन के साथ उत्पादन में तैनात करना – अधिकांश अनुप्रयोगों के लिए पूर्ण वर्कफ़्लो को कवर करता है। एक परीक्षण चरण से शुरू करें, क्रमिक रूप से निर्माण और तैनाती जोड़ें, और जैसे-जैसे आपकी पाइपलाइन बढ़ती है, कैशिंग और समानांतर नौकरियों के साथ अनुकूलन करें।
A: cacheGitLab CI एक एकल YAML फ़ाइल में एक संपूर्ण, एकीकृत CI/CD प्रणाली प्रदान करता है। यहां पाइपलाइन – कवरेज के साथ परीक्षण, डॉकर छवियों का निर्माण और पुश, मैन्युअल अनुमोदन के साथ उत्पादन में तैनात करना – अधिकांश अनुप्रयोगों के लिए पूर्ण वर्कफ़्लो को कवर करता है। एक परीक्षण चरण से शुरू करें, क्रमिक रूप से निर्माण और तैनाती जोड़ें, और जैसे-जैसे आपकी पाइपलाइन बढ़ती है, कैशिंग और समानांतर नौकरियों के साथ अनुकूलन करें।artifactsGitLab CI एक एकल YAML फ़ाइल में एक संपूर्ण, एकीकृत CI/CD प्रणाली प्रदान करता है। यहां पाइपलाइन – कवरेज के साथ परीक्षण, डॉकर छवियों का निर्माण और पुश, मैन्युअल अनुमोदन के साथ उत्पादन में तैनात करना – अधिकांश अनुप्रयोगों के लिए पूर्ण वर्कफ़्लो को कवर करता है। एक परीक्षण चरण से शुरू करें, क्रमिक रूप से निर्माण और तैनाती जोड़ें, और जैसे-जैसे आपकी पाइपलाइन बढ़ती है, कैशिंग और समानांतर नौकरियों के साथ अनुकूलन करें।
GitLab CI एक एकल YAML फ़ाइल में एक संपूर्ण, एकीकृत CI/CD प्रणाली प्रदान करता है। यहां पाइपलाइन – कवरेज के साथ परीक्षण, डॉकर छवियों का निर्माण और पुश, मैन्युअल अनुमोदन के साथ उत्पादन में तैनात करना – अधिकांश अनुप्रयोगों के लिए पूर्ण वर्कफ़्लो को कवर करता है। एक परीक्षण चरण से शुरू करें, क्रमिक रूप से निर्माण और तैनाती जोड़ें, और जैसे-जैसे आपकी पाइपलाइन बढ़ती है, कैशिंग और समानांतर नौकरियों के साथ अनुकूलन करें।
GitLab CI एक एकल YAML फ़ाइल में एक संपूर्ण, एकीकृत CI/CD प्रणाली प्रदान करता है। यहां पाइपलाइन – कवरेज के साथ परीक्षण, डॉकर छवियों का निर्माण और पुश, मैन्युअल अनुमोदन के साथ उत्पादन में तैनात करना – अधिकांश अनुप्रयोगों के लिए पूर्ण वर्कफ़्लो को कवर करता है। एक परीक्षण चरण से शुरू करें, क्रमिक रूप से निर्माण और तैनाती जोड़ें, और जैसे-जैसे आपकी पाइपलाइन बढ़ती है, कैशिंग और समानांतर नौकरियों के साथ अनुकूलन करें।
🔗 Share this article
✍️ Leave a Comment