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

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

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

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

परिचय: बुनियादी CI/CD से प्रोडक्शन-स्तर तक

\n\n

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

\n\n

हम मानते हैं कि आप पहले से ही YAML-सिंटैक्स की मूल बातें और .github/workflows की बुनियादी संरचना से परिचित हैं। अब हम अनुकूलन और क्षमताओं के विस्तार की ओर बढ़ते हैं।

\n\n

1. बिल्ड को गति देना: Composer कैशिंग और इष्टतम रणनीति

\n\n

प्रत्येक वर्कफ़्लो रन निर्भरताओं को फिर से डाउनलोड करता है। इसमें 1-3 मिनट लगते हैं, जिसे कैशिंग की मदद से 5-10 सेकंड तक कम किया जा सकता है।

\n\n

बुद्धिमान vendor कैशिंग

\n\n

हम composer.lock के हैश पर आधारित कुंजी के साथ actions/cache का उपयोग करते हैं। यदि लॉक फ़ाइल नहीं बदली है, तो निर्भरताएँ कैश से पुनर्स्थापित हो जाएँगी।

\n\n
name: PHP CI\non: [push, pull_request]\n\njobs:\n  test:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v4\n\n      - name: Setup PHP\n        uses: shivammathur/setup-php@v2\n        with:\n          php-version: '8.2'\n          tools: composer:v2\n\n      - name: Cache Composer dependencies\n        uses: actions/cache@v3\n        with:\n          path: vendor\n          key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }}\n          restore-keys: |\n            ${{ runner.os }}-php-\n\n      - name: Install dependencies\n        run: composer install --no-progress --prefer-dist
\n\n

restore-keys पर ध्यान दें: यदि सटीक कुंजी नहीं मिलती है, तो उस OS के लिए अंतिम कैश का उपयोग किया जाएगा। यह ब्रांच बदलने पर सुरक्षा प्रदान करता है।

\n\n

PHP के विभिन्न संस्करणों के लिए मैट्रिक्स बिल्ड

\n\n

संगतता सुनिश्चित करने के लिए, PHP के कई संस्करणों पर समानांतर रूप से परीक्षण करें:

\n\n
jobs:\n  test:\n    strategy:\n      matrix:\n        php-version: ['8.1', '8.2', '8.3']\n        dependency-stability: [prefer-lowest, prefer-stable]\n\n    steps:\n      - uses: actions/checkout@v4\n      - name: Setup PHP ${{ matrix.php-version }}\n        uses: shivammathur/setup-php@v2\n        with:\n          php-version: ${{ matrix.php-version }}\n\n      - name: Cache\n        uses: actions/cache@v3\n        with:\n          path: vendor\n          key: ${{ runner.os }}-php${{ matrix.php-version }}-${{ hashFiles('**/composer.lock') }}\n\n      - name: Install dependencies\n        run: |\n          composer update --${{ matrix.dependency-stability }} --prefer-dist --no-interaction\n\n      - name: Run tests\n        run: vendor/bin/phpunit
\n\n

यह दृष्टिकोण मुख्य ब्रांच में मर्ज करने से पहले ही संगतता समस्याओं का पता लगाता है। आपको 6 समानांतर जॉब मिलेंगी (3 संस्करण × 2 स्थिरता रणनीतियाँ)।

\n\n

2. उन्नत चरण: स्थैतिक विश्लेषण और कोड गुणवत्ता

\n\n

यूनिट परीक्षण गुणवत्ता नियंत्रण का एकमात्र उपकरण नहीं है। हम PHPStan (अधिकतम विश्लेषण स्तर) और PHP Code Sniffer जोड़ते हैं।

\n\n

लिंटिंग और स्थैतिक विश्लेषण

\n\n

विश्लेषण के लिए एक अलग जॉब बनाएँ जो परीक्षणों के समानांतर चले:

\n\n
jobs:\n  static-analysis:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v4\n      - uses: shivammathur/setup-php@v2\n        with:\n          php-version: '8.2'\n          coverage: none\n\n      - name: Cache\n        uses: actions/cache@v3\n        with:\n          path: vendor\n          key: ${{ runner.os }}-php-static-${{ hashFiles('**/composer.lock') }}\n\n      - run: composer install --no-interaction --prefer-dist\n\n      - name: PHPStan\n        run: vendor/bin/phpstan analyse --level=max src/\n\n      - name: PHPCS\n        run: vendor/bin/phpcs --standard=PSR12 src/

ब्लॉग

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