परिचय: CI/CD PHP विकास का नया मानक क्यों है
\nआधुनिक PHP विकास ऑटोमेशन के बिना अकल्पनीय है। मैन्युअल डिप्लॉय, "आँख से" परीक्षण चलाना और अंतिम क्षण में कोड की जाँच करना - प्रोडक्शन में बग्स का सीधा रास्ता है। CI/CD (Continuous Integration / Continuous Deployment) आपके कार्यप्रवाह में जाँच और कोड रिलीज़ को एकीकृत करके इन समस्याओं का समाधान करता है।
\nGitHub Actions रिपॉजिटरी में सीधे CI/CD को एम्बेड करने के लिए एक शक्तिशाली और मुफ्त टूल है। इस लेख में, हम Laravel या Symfony पर PHP प्रोजेक्ट के लिए पूर्ण पाइपलाइन सेट अप करने का तरीका समझेंगे: निर्भरताएँ स्थापित करने से लेकर सर्वर पर डिप्लॉय करने तक। आपको तैयार कॉन्फ़िगरेशन और प्रत्येक चरण की समझ मिलेगी।
\n\n1. GitHub Actions की मूल बातें: PHP के लिए Workflow संरचना
\nGitHub Actions में Workflow एक स्वचालित प्रक्रिया है जो .github/workflows/ फ़ोल्डर में YAML फ़ाइल में परिभाषित होती है। PHP प्रोजेक्ट के लिए एक विशिष्ट workflow में शामिल हैं:
- \n
- ट्रिगर:
mainब्रांच में push, pull request। \n - Runner: Ubuntu latest (PHP समर्थन)। \n
- चरण: Checkout, PHP सेटअप, Composer, परीक्षण, लिंटर्स। \n
एक न्यूनतम फ़ाइल ci.yml देखें:
name: PHP CI\n\non:\n push:\n branches: [ main ]\n pull_request:\n branches: [ main ]\n\njobs:\n build:\n runs-on: ubuntu-latest\n\n steps:\n - uses: actions/checkout@v3\n\n - name: Setup PHP\n uses: shivammathur/setup-php@v2\n with:\n php-version: '8.2'\n extensions: mbstring, pdo_mysql, xml\n coverage: xdebug\n\n - name: Install Composer dependencies\n run: composer install --no-progress --prefer-dist\n\n - name: Run PHPUnit\n run: vendor/bin/phpunit --testdox\nयह workflow हर push पर चलता है। यह जाँचता है कि कोड बिल्ड होता है और परीक्षण पास होते हैं। shivammathur/setup-php action पर ध्यान दें - यह PHP के लिए डी-फैक्टो मानक है।
2. उन्नत सेटअप: स्थैतिक विश्लेषण, लिंटर्स और कैशिंग
\nCI केवल परीक्षणों तक सीमित नहीं है। कोड गुणवत्ता बनाए रखने के लिए, स्थैतिक विश्लेषण (PHPStan, Psalm) और शैली जाँच (PHP CS Fixer) जोड़ें।
\n2.1. PHPStan और PHP CS Fixer जोड़ना
\nइन्हें dev-निर्भरता के रूप में स्थापित करें:
\ncomposer require --dev phpstan/phpstan friendsofphp/php-cs-fixer\nworkflow में चरण जोड़ें:
\n - name: Run PHPStan\n run: vendor/bin/phpstan analyse --memory-limit=1G\n\n - name: Check code style\n run: vendor/bin/php-cs-fixer fix --dry-run --diff\nसुझाव: फ़ाइलों को बदलने के बजाय केवल जाँच करने के लिए --dry-run का उपयोग करें। यदि शैली का उल्लंघन होता है - CI विफल हो जाएगा, और डेवलपर इसे ठीक करेगा।
2.2. Composer निर्भरताओं का कैशिंग
\nCI का प्रत्येक रन पैकेजों को फिर से डाउनलोड करता है - यह धीमा है। कैशिंग सक्षम करें:
\n - name: Cache Composer packages\n id: composer-cache\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 if: steps.composer-cache.outputs.cache-hit != 'true'\n run: composer install --no-progress --prefer-dist\nअब बार-बार रन 2-3 गुना तेज़ होंगे।
\n\n3. डेटाबेस और Docker सेवाओं के साथ परीक्षण
\nकई PHP एप्लिकेशन को परीक्षण के लिए MySQL, PostgreSQL या Redis की आवश्यकता होती है। GitHub Actions सर्विस कंटेनर (Service Containers) चलाने की अनुमति देता है।
\n3.1. MySQL और Laravel के साथ उदाहरण
\nमान लें कि आपका प्रोजेक्ट MySQL के साथ Laravel का उपयोग करता है। सेवा जोड़ें और .env कॉन्फ़िगर करें:
\njobs:\n test:\n runs-on: ubuntu-latest\n services:\n mysql:\n image: mysql:8.0\n env:\n MYSQL_ROOT_PASSWORD: root\n MYSQ