# कोड के रूप में पाइपलाइन — CI/CD Fundamentals: Pipelines, Testing और Deployment

Source: https://www.skillbyai.com/hi/cicd/cicd-pipeline-as-code

> Pipelines को versioned YAML के रूप में define करें ताकि बदलाव application code की तरह reviewed और दोहराने योग्य हों।

## विचार

**पाइपलाइन-एज़-कोड** का मतलब है बिल्ड/टेस्ट/डिप्लॉय स्टेप्स एक कॉन्फ़िग फ़ाइल (आमतौर पर YAML) में लिखे जाते हैं जो सोर्स कोड के साथ रिपॉज़िटरी में रहती है — किसी UI में क्लिक करके नहीं बनाई जाती।

## पाइपलाइन फ़ाइल का ढाँचा

अधिकतर पाइपलाइन-एज़-कोड फ़ाइलें इस ढाँचे को साझा करती हैं: एक ट्रिगर, फिर चरणों की सूची, हर एक में चलाने वाले कमांड।

```yaml
on: [push]

stages:
  - build:
      run: npm run build
  - test:
      run: npm test
  - deploy:
      run: ./deploy.sh
      when: branch == main
```

Output:

```
Committed to the repo, reviewed like any other code change
```

## यह UI में क्लिक करने से बेहतर क्यों

क्योंकि पाइपलाइन वर्ज़न कंट्रोल में रहती है, इसमें बदलाव पुल रिक्वेस्ट से गुज़रते हैं, रिव्यू होते हैं, और वापस लिए जा सकते हैं — बिल्कुल एप्लिकेशन कोड की तरह।

**Quiz:** UI से पाइपलाइन कॉन्फ़िगर करने की तुलना में पाइपलाइन-एज़-कोड का मुख्य फ़ायदा क्या है?

- [ ] यह किसी भी UI-आधारित पाइपलाइन से तेज़ चलता है
- [ ] यह टेस्ट चरण की ज़रूरत हटा देता है
- [ ] यह tests की जरूरत खत्म करता है
- [x] यह एप्लिकेशन कोड की तरह वर्ज़न-नियंत्रित, रिव्यू-योग्य और वापस लेने योग्य है

*Answer:* यह एप्लिकेशन कोड की तरह वर्ज़न-नियंत्रित, रिव्यू-योग्य और वापस लेने योग्य है. पाइपलाइन परिभाषा रिपॉज़िटरी में रहती है, इसलिए यह ट्रैक होती है, डिफ़ होती है, और ठीक उसी तरह रिव्यू होती है जैसे वह कोड जिसे यह बिल्ड और डिप्लॉय करती है।
