如何使用github動(dòng)作為L(zhǎng)aravel設(shè)置CI/CD管道?
Aug 03, 2025 am 02:43 AM創(chuàng)建.github/workflows/ci-cd.yml 文件以定義工作流,觸發(fā)條件為推送到或合併到main 分支,並配置MySQL 服務(wù);2. 在測(cè)試任務(wù)中檢出代碼、設(shè)置PHP 環(huán)境、安裝依賴、生成應(yīng)用密鑰、配置.env 文件、運(yùn)行遷移並執(zhí)行phpunit 測(cè)試;3. 可選但推薦添加PHPStan 等工具進(jìn)行代碼質(zhì)量檢查;4. 使用appleboy/ssh-action 通過(guò)SSH 部署到服務(wù)器,僅在main 分支推送且測(cè)試通過(guò)後運(yùn)行,並通過(guò)GitHub Secrets 管理敏感信息;5. 所有敏感配置使用環(huán)境變量和GitHub Secrets 注入,避免硬編碼;6. 建議使用actions/cache 緩存Composer 依賴以提升性能。該流程實(shí)現(xiàn)了Laravel 應(yīng)用的自動(dòng)化測(cè)試與持續(xù)部署,確保代碼質(zhì)量並提高發(fā)布效率。
Setting up a CI/CD pipeline for a Laravel application using GitHub Actions is straightforward and powerful. It helps automate testing, linting, and deployment workflows every time you push or merge code. Here's how to do it step by step.

? 1. Create the GitHub Actions Workflow File
Start by creating a .github/workflows/ci-cd.yml
file in your Laravel project. This defines your CI/CD pipeline.
name: Laravel CI/CD on: push: branches: [ main ] pull_request: branches: [ main ] jobs: test: runs-on: ubuntu-latest services: mysql: image: mysql:8.0 env: MYSQL_ROOT_PASSWORD: rootpassword MYSQL_DATABASE: homestead MYSQL_USER: homestead MYSQL_PASSWORD: secret ports: - 3306:3306 options: --health-start-period=20s --health-interval=10s
This configures the workflow to run on every push or PR to main
, and sets up a MySQL service for testing.

? 2. Set Up the Environment and Run Tests
Inside the test
job, install dependencies and run Laravel's test suite.
steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: '8.2' extensions: mbstring, dom, pdo, sqlite, pdo_sqlite, mysql, zip coverage: none - name: Validate composer.json and composer.lock run: composer validate --strict - name: Install dependencies run: composer install -q --no-ansi --no-interaction --no-scripts --no-progress - name: Generate application key run: php artisan key:generate - name: Create Laravel .env file run: cp .env.example .env - name: Run Laravel migrations run: php artisan migrate --database=mysql --force env: DB_CONNECTION: mysql DB_HOST: 127.0.0.1 DB_PORT: 3306 DB_DATABASE: homestead DB_USERNAME: homestead DB_PASSWORD: secret - name: Execute tests (phpunit) run: vendor/bin/phpunit
? This ensures your Laravel app boots up, connects to the database, migrates, and runs unit/feature tests.
? 3. Add Code Linting (Optional but Recommended)
You can include PHP_CodeSniffer or PHPStan for code quality checks.
- name: Install dev dependencies run: composer install -q - name: Run PHPStan run: vendor/bin/phpstan analyse app --level=7
Make sure phpstan/phpstan
is in require-dev
.
? 4. Set Up Deployment (CD) via SSH or Deployers
For continuous deployment (eg, to a VPS), you can use tools like appleboy/ssh-action
.
?? Store credentials in GitHub Secrets (
DEPLOY_HOST
,DEPLOY_USER
,SSH_PRIVATE_KEY
, etc.)
deploy: needs: test runs-on: ubuntu-latest if: github.ref == 'refs/heads/main' && github.event_name == 'push' steps: - name: Deploy to production server uses: appleboy/ssh-action@v1.0.1 with: host: ${{ secrets.DEPLOY_HOST }} username: ${{ secrets.DEPLOY_USER }} key: ${{ secrets.SSH_PRIVATE_KEY }} script: | cd /var/www/your-laravel-app git pull origin main composer install --no-dev --optimize-autoloader php artisan migrate --force php artisan config:cache php artisan route:cache php artisan view:cache sudo systemctl reload nginx
This step only runs on pushes to main
after tests pass.
? 5. Environment Variables & Secrets
Never hardcode credentials. Use:
-
.env.example
for template - GitHub Secrets for sensitive values in workflows
In your workflow, inject secrets as environment variables where needed.
? Summary of Key Points
- ? Use
ubuntu-latest
runner with PHP and MySQL services - ? Run
composer install
,migrate
, andphpunit
- ? Keep deployment separate and conditional
- ? Use GitHub Secrets for SSH keys and DB credentials
- ? Cache dependencies (optional for speed):
- name: Cache Composer packages uses: actions/cache@v3 with: path: vendor key: composer-${{ hashFiles('composer.lock') }}
That's it. Your Laravel app now has automated testing on every change and automatic deployment to production when code lands on main
. It's not magic — just consistent, reliable automation.
以上是如何使用github動(dòng)作為L(zhǎng)aravel設(shè)置CI/CD管道?的詳細(xì)內(nèi)容。更多資訊請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

熱AI工具

Undress AI Tool
免費(fèi)脫衣圖片

Undresser.AI Undress
人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強(qiáng)大的PHP整合開(kāi)發(fā)環(huán)境

Dreamweaver CS6
視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版
神級(jí)程式碼編輯軟體(SublimeText3)

在現(xiàn)代軟體開(kāi)發(fā)中,持續(xù)整合(CI)已成為提高程式碼品質(zhì)和開(kāi)發(fā)效率的重要實(shí)踐。其中,jenkins是一個(gè)成熟且功能強(qiáng)大的開(kāi)源CI工具,特別適用於PHP應(yīng)用程式。以下內(nèi)容將深入探討如何使用Jenkins實(shí)現(xiàn)php持續(xù)集成,並提供具體的範(fàn)例程式碼和詳細(xì)的步驟。 Jenkins安裝和設(shè)定首先,需要在伺服器上安裝Jenkins。透過(guò)其官網(wǎng)下載並安裝最新版本即可。安裝完成後,需要進(jìn)行一些基本配置,包括設(shè)定管理員帳戶、外掛程式安裝和作業(yè)配置。建立一個(gè)新作業(yè)在Jenkins儀表板上,點(diǎn)選"新作業(yè)"按鈕。選擇"Frees

簡(jiǎn)介持續(xù)整合(CI)和持續(xù)部署(CD)是現(xiàn)代軟體開(kāi)發(fā)的關(guān)鍵實(shí)踐,它們可以幫助團(tuán)隊(duì)更快、更可靠地交付高品質(zhì)的軟體。 jenkins是一個(gè)流行的開(kāi)源CI/CD工具,它可以自動(dòng)化建置、測(cè)試和部署流程。本文將介紹如何使用PHP與Jenkins一起設(shè)定CI/CD管道。設(shè)定Jenkins安裝Jenkins:從Jenkins官網(wǎng)下載並安裝Jenkins。建立項(xiàng)目:從Jenkins儀表板建立一個(gè)新的項(xiàng)目,並將其命名為與您的php項(xiàng)目相符的名稱。設(shè)定原始碼管理:將您的PHP專案的git儲(chǔ)存庫(kù)配置為Jenkin

Python語(yǔ)言已經(jīng)成為了現(xiàn)代軟體開(kāi)發(fā)中不可或缺的一部分,而其中持續(xù)整合(CI)則是高度整合及持續(xù)交付過(guò)程中的一部分,可以大大提升開(kāi)發(fā)過(guò)程的效率和品質(zhì)。 CI的目的是透過(guò)將程式碼整合到一個(gè)公開(kāi)的程式碼庫(kù),並持續(xù)執(zhí)行自動(dòng)化測(cè)試和靜態(tài)分析工具,以最大程度地減少不必要的錯(cuò)誤。本文將討論P(yáng)ython中持續(xù)整合的原理,以及它對(duì)軟體開(kāi)發(fā)過(guò)程的影響。持續(xù)整合的原理CI在軟體開(kāi)發(fā)

答:利用PHPCI/CD實(shí)現(xiàn)快速迭代,包括設(shè)定CI/CD管道、自動(dòng)化測(cè)試和部署流程。設(shè)定CI/CD管道:選擇CI/CD工具,配置程式碼儲(chǔ)存庫(kù),定義建置管道。自動(dòng)化測(cè)試:編寫單元和整合測(cè)試,使用測(cè)試框架簡(jiǎn)化測(cè)試。實(shí)戰(zhàn)案例:使用TravisCI:安裝TravisCI,定義管道,啟用管道,查看結(jié)果。實(shí)現(xiàn)持續(xù)交付:選擇部署工具,定義部署管道,自動(dòng)化部署。效益:提高開(kāi)發(fā)效率、減少錯(cuò)誤、縮短交貨時(shí)間。

隨著網(wǎng)路的發(fā)展和應(yīng)用程式場(chǎng)景的不斷增多,越來(lái)越多的企業(yè)和開(kāi)發(fā)者開(kāi)始使用PHP語(yǔ)言進(jìn)行網(wǎng)站和應(yīng)用程式的開(kāi)發(fā)。而在開(kāi)發(fā)過(guò)程中,持續(xù)整合和持續(xù)部署已成為一種趨勢(shì),可以大大提高開(kāi)發(fā)效率和產(chǎn)品品質(zhì)。 GitLabCI/CD作為一種工具來(lái)實(shí)現(xiàn)持續(xù)整合和持續(xù)部署已經(jīng)受到了廣泛的關(guān)注和使用。 GitLab是一個(gè)用於管理和部署軟體程式碼的開(kāi)源工具,可實(shí)現(xiàn)程式碼版本控制、專案管理、程式碼

衡量CI/CD和自動(dòng)化部署的指標(biāo)包括:建置時(shí)間:應(yīng)用程式建置與部署所需時(shí)間部署頻率:應(yīng)用程式在特定時(shí)間內(nèi)部署的次數(shù)部署失敗率:部署失敗的次數(shù)與總部署次數(shù)的比例變更失敗率:導(dǎo)致故障或錯(cuò)誤的部署次數(shù)與總部署次數(shù)的比例程式碼覆蓋率:透過(guò)自動(dòng)化測(cè)試執(zhí)行的程式碼百分比平均故障時(shí)間:故障發(fā)生到解決問(wèn)題的平均時(shí)間先導(dǎo)時(shí)間:程式碼提交到部署到生產(chǎn)環(huán)境所所需的平均時(shí)間

在現(xiàn)代軟體開(kāi)發(fā)中,CI/CD(ContinuousIntegration/ContinuousDeployment)已經(jīng)成為了必不可少的開(kāi)發(fā)流程,透過(guò)持續(xù)整合和自動(dòng)化部署的方式來(lái)加速開(kāi)發(fā)週期和減少錯(cuò)誤率。而對(duì)於PHP開(kāi)發(fā)者來(lái)說(shuō),使用CI/CD實(shí)現(xiàn)持續(xù)整合和自動(dòng)化部署也是一個(gè)很好的選擇。本文將簡(jiǎn)要介紹如何在PHP中使用CI/CD來(lái)實(shí)現(xiàn)持續(xù)整合和自動(dòng)化部署

對(duì)於大型PHP項(xiàng)目,CI/CD和自動(dòng)化部署至關(guān)重要,可透過(guò)以下步驟實(shí)現(xiàn):使用Jenkins設(shè)定CI/CD管道,包含持續(xù)整合、交付和部署階段。使用PHPUnit進(jìn)行自動(dòng)化測(cè)試,並使用Capistrano自動(dòng)執(zhí)行部署。觸發(fā)Jenkins管道並在每次程式碼推送或手動(dòng)提示時(shí)啟動(dòng)部署。使用Capistrano將經(jīng)過(guò)測(cè)試的程式碼自動(dòng)部署到生產(chǎn)環(huán)境。優(yōu)點(diǎn)包括:減少錯(cuò)誤、加速開(kāi)發(fā)、提升團(tuán)隊(duì)協(xié)作和保障品質(zhì)。
