PHP प्रोजेक्ट्स के लिए CI/CD: GitHub Actions सेटअप करना
PHP में आधुनिक डेवलपमेंट परीक्षण, बिल्ड और डिप्लॉयमेंट प्रक्रियाओं के स्वचालन के बिना अधूरी है। CI/CD (Continuous Integration / Continuous Deployment) टीमों को तेज़ी से अपडेट जारी करने, त्रुटियों को कम करने और कोड की उच्च गुणवत्ता बनाए रखने में सक्षम बनाता है। इस लेख में, हम विस्तार से समझेंगे कि GitHub Actions - GitHub के अंतर्निहित ऑटोमेशन टूल - का उपयोग करके PHP प्रोजेक्ट्स के लिए CI/CD पाइपलाइन कैसे सेटअप करें।
हम लोकप्रिय फ्रेमवर्क (Laravel, Symfony) के लिए वास्तविक उदाहरण देखेंगे, टेस्ट चलाना, कोड स्टाइल जांचना, आर्टिफैक्ट बनाना और सर्वर पर स्वचालित रूप से डिप्लॉय करना सीखेंगे। यह लेख शुरुआती और अनुभवी डेवलपर्स दोनों के लिए उपयोगी होगा जो अपने वर्कफ़्लो को अनुकूलित करना चाहते हैं।
1. PHP के लिए GitHub Actions की मूल बातें
GitHub Actions रिपॉजिटरी में सीधे वर्कफ़्लो को स्वचालित करने का एक प्लेटफ़ॉर्म है। वर्कफ़्लो को YAML फ़ाइलों में वर्णित किया जाता है, जो .github/workflows/ निर्देशिका में संग्रहीत होती हैं। प्रत्येक वर्कफ़्लो में एक या अधिक job होते हैं, जो विशिष्ट घटनाओं (push, pull request, release आदि) के घटित होने पर वर्चुअल मशीनों (runner) पर निष्पादित होते हैं।
PHP प्रोजेक्ट्स के लिए मुख्य चरणों में आमतौर पर शामिल हैं:
- Composer के माध्यम से निर्भरताएँ स्थापित करना
- पर्यावरण सेटअप करना (PHP संस्करण, एक्सटेंशन, डेटाबेस)
- स्टैटिक विश्लेषण चलाना (PHPStan, Psalm)
- यूनिट टेस्ट निष्पादित करना (PHPUnit, Pest)
- कोड स्टाइल जांचना (PHP CS Fixer, Laravel Pint)
- Docker इमेज बनाना और प्रकाशित करना
- production/staging सर्वर पर डिप्लॉय करना
PHP प्रोजेक्ट के लिए न्यूनतम वर्कफ़्लो इस प्रकार दिखता है:
name: PHP CI
on: push: branches: [ main ] pull_request: branches: [ main ]
jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: '8.2' extensions: mbstring, intl, pdo_mysql coverage: xdebug - name: Install dependencies run: composer install --prefer-dist --no-progress - name: Run tests run: vendor/bin/phpunit --testdoxयह वर्कफ़्लो main ब्रांच में प्रत्येक push या pull request बनाने पर चलता है। यह कोड को मानकों के अनुरूप जाँचता है और टेस्ट निष्पादित करता है।
2. उन्नत कॉन्फ़िगरेशन: परीक्षण, लिंटिंग और स्टैटिक विश्लेषण
एक वास्तविक प्रोजेक्ट के लिए कोड गुणवत्ता की अधिक गहन जाँच की आवश्यकता होती है। आइए टूल के पूर्ण सेट के साथ Laravel फ्रेमवर्क का एक उदाहरण देखें।
हम एक फ़ाइल बनाएंगे .github/workflows/laravel-ci.yml:
name: Laravel CI/CD
on: push: branches: [ main, develop ] pull_request: branches: [ main ]
jobs: quality: runs-on: ubuntu-latest services: mysql: image: mysql:8.0 env: MYSQL_DATABASE: testing MYSQL_USER: user MYSQL_PASSWORD: secret MYSQL_ROOT_PASSWORD: root ports: - 3306:3306 options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
steps: - uses: actions/checkout@v4
- name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: '8.2' extensions: mbstring, intl, pdo_mysql, bcmath, redis coverage: pcov tools: composer:v2
- name: Copy .env run: | cp .env.example .env php artisan key:generate
- name: Install dependencies run: composer install --no-interaction --prefer-dist
- name: Run Laravel Pint (Code Style) run: vendor/bin/pint --test
- name: Run PHPStan (Static Analysis) run: vendor/bin/phpstan analyse --memory-limit=2G