PHP परियोजनाओं के लिए CI/CD: GitHub Actions
आधुनिक वेब डेवलपमेंट ऑटोमेशन के बिना अधूरी है। टेस्ट मैन्युअली चलाना, कोड स्टाइल की जाँच करना और सर्वर पर डिप्लॉय करना समय लेता है और त्रुटियों की संभावना रहती है। समाधान — CI/CD (Continuous Integration / Continuous Deployment) है। इस लेख में, हम GitHub Actions का उपयोग करके PHP प्रोजेक्ट्स के लिए एक पूर्ण पाइपलाइन सेट अप करना सीखेंगे। आप जानेंगे कि रिपॉजिटरी में हर पुश पर स्वचालित रूप से कोड का परीक्षण कैसे करें, उसकी गुणवत्ता की जाँच करें और प्रोडक्शन सर्वर पर डिप्लॉय करें।
CI/CD क्या है और PHP डेवलपर को इसकी आवश्यकता क्यों है?
Continuous Integration (CI) — यह एक अभ्यास है जिसमें प्रत्येक कमिट स्वचालित रूप से जाँचा जाता है: यूनिट टेस्ट, लिंटर्स, सुरक्षा जाँच चलाई जाती हैं। Continuous Deployment (CD) — अगला कदम है, जहाँ CI में सफलतापूर्वक पास हुआ कोड स्वचालित रूप से सर्वर (स्टेजिंग या प्रोडक्शन) पर डिप्लॉय हो जाता है।
PHP के लिए यह विशेष रूप से प्रासंगिक है: भाषा डायनामिक है, टाइपिंग और सिंटैक्स की त्रुटियाँ अक्सर रनटाइम पर ही पता चलती हैं। GitHub Actions आपको एक ऐसी पाइपलाइन सेट अप करने की अनुमति देता है जो:
- PHP के विभिन्न संस्करणों (7.4, 8.0, 8.1, 8.2) में PHPUnit टेस्ट चलाता है।
- PHP_CodeSniffer या PHPStan के साथ कोड की जाँच करता है।
- SSH या Docker के माध्यम से सर्वर पर डिप्लॉय करता है।
GitHub Actions में वर्कफ़्लो बनाना
शुरू करने के लिए, अपने PHP प्रोजेक्ट की रूट में .github/workflows डायरेक्टरी बनाएँ। इसके अंदर एक फ़ाइल बनाएँ, उदाहरण के लिए ci.yml। यही आपकी पाइपलाइन होगी।
CI के लिए एक बुनियादी उदाहरण देखें। यह main ब्रांच पर हर पुश या Pull Request बनाने पर चलेगा।
name: PHP CI
on: push: branches: [ "main" ] pull_request: branches: [ "main" ]
jobs: build: runs-on: ubuntu-latest
strategy: matrix: php-versions: ['7.4', '8.0', '8.1', '8.2']
steps: - uses: actions/checkout@v3
- name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: ${{ matrix.php-versions }} tools: composer, phpunit
- name: Validate composer.json and composer.lock run: composer validate --strict
- name: Cache Composer packages id: composer-cache uses: actions/cache@v3 with: path: vendor key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }} restore-keys: | ${{ runner.os }}-php-
- name: Install dependencies run: composer install --prefer-dist --no-progress
- name: Run PHPUnit tests run: phpunit --configuration phpunit.xmlमुख्य बिंदुओं की व्याख्या:
- Matrix strategy — एक साथ PHP के कई संस्करणों पर टेस्ट चलाने की अनुमति देता है। यह कोड की संगतता सुनिश्चित करता है।
- shivammathur/setup-php — PHP वातावरण सेट करने के लिए लोकप्रिय action। यह आवश्यक संस्करण, Composer और PHPUnit स्थापित करता है।
- vendor कैशिंग — बाद के रन को गति देता है, डिपेंडेंसी को दोबारा डाउनलोड नहीं करना पड़ता।
- composer validate — composer.json की सत्यता की जाँच करता है।
स्टैटिक एनालिसिस और लिंटिंग जोड़ना
टेस्ट अच्छे हैं, लेकिन कोड गुणवत्ता नियंत्रण के बिना काम नहीं चलता। उसी वर्कफ़्लो में (या एक अलग job बनाकर) PHPStan और PHP_CodeSniffer के साथ जाँच जोड़ें।
- name: Run PHPStan run: vendor/bin/phpstan analyse src tests --level=max
- name: Run PHP_CodeSniffer run: vendor/bin/phpcs --standard=PSR2 src testsइन चरणों को डिपेंडेंसी इंस्टॉल करने के बाद जोड़ा जा सकता है। PHPStan max लेवल के साथ संभावित टाइप त्रुटियाँ ढूँढेगा, और PHP_CodeSniffer PSR-2 (या PSR-12) मानक के साथ एक समान कोड स्टाइल सुनिश्चित करेगा। यदि कोई भी चरण विफल होता है, तो पाइपलाइन रुक जाएगी और डिप्लॉय नहीं होगा।