配置GitHub Actions可实现Laravel项目自动化部署,通过定义deploy.yml工作流,在代码推送到main分支时自动执行测试、构建并部署至服务器。

使用 GitHub Actions 实现 Laravel 项目的自动化部署,可以大幅减少手动操作,提升开发效率。整个流程包括代码推送后自动运行测试、构建项目,并将代码安全地部署到服务器。下面介绍具体实现方法。
配置 GitHub Actions 工作流文件
在 Laravel 项目根目录创建 .github/workflows/deploy.yml 文件,定义 CI/CD 流程。以下是一个典型的工作流示例:
name: Deploy Laravel Appon: push: branches: [ main ] # 监听 main 分支的推送
jobs: deploy: runs-on: ubuntu-latest steps:
name: Checkout code uses: actions/checkout@v4
name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: '8.1' extensions: mbstring, dom, curl, openssl tools: composer:v2
name: Install dependencies run: composer install --no-interaction --optimize-autoloader
name: Run tests run: php artisan test
name: Deploy via SSH uses: appleboy/scp-action@v0.1.6 with: host: ${{ secrets.HOST }} username: ${{ secrets.USERNAME }} password: ${{ secrets.PASSWORD }} port: 22 source: "." target: "/var/www/html/my-laravel-app" strip_components: 1
该工作流会在每次推送到 main 分支时触发,执行代码检出、PHP 环境搭建、依赖安装、测试运行,并通过 SCP 将代码复制到远程服务器。
设置服务器环境与部署脚本
确保目标服务器已配置好 Laravel 所需环境(如 Nginx、PHP、MySQL、Composer 等)。部署完成后,通常需要执行一些 Artisan 命令,例如缓存优化或数据库迁移。
可以在部署后添加 SSH 执行命令的步骤:
- name: Run remote commands
uses: appleboy/ssh-action@v0.1.10
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
password: ${{ secrets.PASSWORD }}
port: 22
script: |
cd /var/www/html/my-laravel-app
composer install --optimize-autoloader --no-dev
php artisan config:cache
php artisan route:cache
php artisan view:cache
php artisan event:cache
这样可以确保部署后应用处于高性能状态。
配置 GitHub Secrets
为了安全,服务器登录信息不应写在代码中。需在 GitHub 仓库的 Settings > Secrets and variables > Actions 中添加以下密钥:
- HOST: 服务器 IP 或域名
- USERNAME: SSH 登录用户名(如 ubuntu)
- PASSWORD: 用户密码,或使用 SSH Key 更安全
若使用 SSH 私钥认证,可添加 KEY 密钥,并在 action 中使用 key 参数代替 password。
优化与注意事项
实际使用中可进一步优化:
- 只部署必要文件(排除 tests、.env、node_modules 等),可通过 .gitattributes 配置 export-ignore
- 使用 Laravel Forge 或 Envoyer 可更方便地管理部署流程
- 结合 Cache Action 提升依赖安装速度
- 设置失败通知(如邮件或 Slack)以便及时响应问题
基本上就这些。只要配置好 workflow 文件和服务器环境,Laravel 的 GitHub Actions 自动化部署就能稳定运行,让上线变得简单可靠。










