使用 GitHub Actions 部署
在 GitHub Actions 工作流中自动执行构建、测试和 SSH 部署步骤。
使用 GitHub Actions 部署 是 CoddyKit 上的免费 PHP Academy 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 PHP Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 PHP Academy 课程共包含 4 节课。
什么是 GitHub Actions
GitHub Actions 是集成在 GitHub 中的 CI/CD 平台。在 .github/workflows/*.yml 中定义的工作流会在推送、拉取请求或计划事件发生时自动运行。
基本工作流结构
一个工作流由一个或多个作业组成,每个作业包含多个步骤。
# .github/workflows/deploy.yml
name: Deploy
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up PHP
uses: shivammathur/setup-php@v2
with:
php-version: "8.3"
- name: Install dependencies
run: composer install --no-dev --optimize-autoloader
- name: Run tests
run: vendor/bin/phpunitSSH 部署步骤
请在测试通过后通过 SSH 部署到服务器。
- name: Deploy to server
uses: appleboy/ssh-action@v1
with:
host: ${{ secrets.SERVER_HOST }}
username: ${{ secrets.SERVER_USER }}
key: ${{ secrets.SSH_PRIVATE_KEY }}
script: |
cd /srv/myapp
git pull origin main
composer install --no-dev --optimize-autoloader
php artisan migrate --force
php artisan config:cache
php artisan route:cache
sudo systemctl reload php8.3-fpmGitHub 密钥
请将敏感值(SSH 密钥、API 令牌、数据库密码)作为加密的仓库密钥存储在“设置 → 密钥和变量”中。
缓存依赖项
请在多次运行之间缓存 Composer 软件包,以加快工作流。
- name: Cache Composer packages
uses: actions/cache@v4
with:
path: vendor
key: ${{ runner.os }}-composer-${{ hashFiles("composer.lock") }}运行测试
请为集成测试包含 MySQL 或 PostgreSQL 服务容器。
services:
mysql:
image: mysql:8
env:
MYSQL_DATABASE: test
MYSQL_ROOT_PASSWORD: secret
ports: [3306:3306]Actions 中的环境变量
请将密钥作为环境变量传递给工作流步骤。
- name: Run tests
env:
DB_HOST: 127.0.0.1
DB_DATABASE: test
DB_PASSWORD: ${{ secrets.DB_PASSWORD }}
run: vendor/bin/phpunit代码质量门禁
如果代码质量检查失败,请阻止部署。
- name: PHPStan static analysis
run: vendor/bin/phpstan analyse src --level=6
- name: PHP_CodeSniffer
run: vendor/bin/phpcs src --standard=PSR12矩阵测试
请同时针对多个 PHP 版本进行测试。
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
php: ["8.2", "8.3"]
steps:
- uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php }}部署策略
常见方法包括:直接执行 git pull(简单)、rsync(快速文件同步)、蓝绿部署(零停机)以及 Deployer PHP(自动化零停机)。请根据可接受的停机时间进行选择。
总结
请在 .github/workflows/*.yml 中定义工作流。在每次推送时运行测试,在主分支合并后进行部署。缓存依赖项,将密钥存储在 GitHub Secrets 中,并在部署前添加质量门禁。
快速检查
SSH 密钥等敏感值应存储在 GitHub Actions 的哪里?
常见问题解答
「使用 GitHub Actions 部署」课时是免费的吗?
是的 — 「使用 GitHub Actions 部署」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 PHP Academy 课程的其余内容,请升级到 CoddyKit PRO。 PHP Academy 课程共包含 4 节课。
「使用 GitHub Actions 部署」这节课中我会学到什么?
在 GitHub Actions 工作流中自动执行构建、测试和 SSH 部署步骤。 你通过在浏览器中直接运行的动手代码来练习 PHP Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 PHP Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 PHP Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。
「使用 GitHub Actions 部署」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 PHP Academy 课中编写并运行代码吗?
能。每节 PHP Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- Nginx 与 PHP-FPM 配置
- 环境变量与 .env 文件
- 使用 GitHub Actions 部署
- 将 PHP 应用容器化