# कोड के रूप में पाइपलाइन — सीआई/सीडी

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

> पाइपलाइन को खुद एक वर्ज़न-नियंत्रित YAML फ़ाइल में परिभाषित करना।

## विचार

**पाइपलाइन-एज़-कोड** का मतलब है बिल्ड/टेस्ट/डिप्लॉय स्टेप्स एक कॉन्फ़िग फ़ाइल (आमतौर पर 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-आधारित पाइपलाइन से तेज़ चलता है
- [x] यह एप्लिकेशन कोड की तरह वर्ज़न-नियंत्रित, रिव्यू-योग्य और वापस लेने योग्य है
- [ ] यह टेस्ट चरण की ज़रूरत हटा देता है

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