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

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

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

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

GitHub Actions के साथ PHP परियोजनाओं के लिए CI/CD का परिचय



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



GitHub Actions वर्कफ़्लो को स्वचालित करने के लिए एक अंतर्निहित प्लेटफ़ॉर्म है, जो आपको GitHub पर आपके रिपॉजिटरी से सीधे टेस्ट, लिंटर, बिल्ड और डिप्लॉय चलाने की अनुमति देता है। इस लेख में, हम PHP प्रोजेक्ट के लिए एक पूर्ण CI/CD पाइपलाइन सेट अप करने पर चर्चा करेंगे: सरल टेस्ट चलाने से लेकर प्रोडक्शन सर्वर पर स्वचालित डिप्लॉय तक।



हम Laravel पर आधारित एक उदाहरण का उपयोग करेंगे, लेकिन सभी सिद्धांत किसी भी PHP फ्रेमवर्क (Symfony, Yii, WordPress आदि) पर लागू होते हैं। आप सीखेंगे कि YAML कॉन्फ़िगरेशन कैसे लिखें, टेस्टिंग मैट्रिक्स का उपयोग कैसे करें, निर्भरताओं को कैश कैसे करें और सुरक्षित रूप से कोड डिप्लॉय कैसे करें।



मुख्य भाग



1. GitHub Actions की मूल बातें: वर्कफ़्लो संरचना



वर्कफ़्लो एक स्वचालित प्रक्रिया है जो एक विशिष्ट घटना (push, pull request, टैग निर्माण) पर शुरू होती है। प्रत्येक वर्कफ़्लो को YAML फ़ाइल में वर्णित किया जाता है, जो आपके रिपॉजिटरी की .github/workflows/ निर्देशिका में संग्रहीत होती है।



फ़ाइल .github/workflows/ci.yml की मूल संरचना:



name: CI Pipeline

on: push: branches: [ main, develop ] pull_request: branches: [ main ]

jobs: test: runs-on: ubuntu-latest

steps: - name: Checkout repository uses: actions/checkout@v4

- name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: '8.2' extensions: mbstring, xml, bcmath, pdo_mysql coverage: xdebug

- name: Install dependencies run: composer install --no-progress --prefer-dist

- name: Run PHPUnit tests run: vendor/bin/phpunit --coverage-text


आइए मुख्य तत्वों को समझें:

  • on — ट्रिगर: main/develop में push, main में pull request।
  • jobs — कार्यों (job) का सेट, जो समानांतर या क्रमिक रूप से निष्पादित होते हैं।
  • runs-on — चलाने के लिए ऑपरेटिंग सिस्टम (आमतौर पर ubuntu-latest)।
  • steps — job के अंदर चरणों का क्रम।
  • uses — मार्केटप्लेस से तैयार actions (उदाहरण के लिए, shivammathur/setup-php)।
  • run — shell कमांड का निष्पादन।


2. उन्नत कॉन्फ़िगरेशन: टेस्टिंग मैट्रिक्स और कैशिंग



बड़ी परियोजनाओं के लिए, PHP और निर्भरताओं के कई संस्करणों का एक साथ परीक्षण करना उपयोगी होता है। यह मैट्रिक्स रणनीति (matrix strategy) के माध्यम से किया जाता है। वर्कफ़्लो निष्पादन को गति देने के लिए Composer के vendor फ़ोल्डर को कैश करना भी महत्वपूर्ण है।



मैट्रिक्स और कैश के साथ उदाहरण:



name: Advanced CI

on: [push, pull_request]

jobs: test: runs-on: ubuntu-latest strategy: matrix: php: [ '8.1', '8.2', '8.3' ] dependency-stability: [ prefer-stable, prefer-lowest ]

steps: - uses: actions/checkout@v4

- name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: ${{ matrix.php }} extensions: mbstring, pdo, gd coverage: none

- name: Cache Composer packages uses: actions/cache@v3 with: path: vendor key: ${{ runner.os }}-php-${{ matrix.php }}-composer-${{ hashFiles('**/composer.lock') }} restore-keys: | ${{ runner.os }}-php-${{ matrix.php }}-composer-

- name: Install dependencies run: composer install --${{ matrix.dependency-stability }} --no-interaction

- name: Run test

ब्लॉग

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