0Pricing
PHP Academy · 课时

使用 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/phpunit

SSH 部署步骤

请在测试通过后通过 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-fpm

GitHub 密钥

请将敏感值(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 反馈 — 无需本地设置。

此课程中的所有课时

  1. Nginx 与 PHP-FPM 配置
  2. 环境变量与 .env 文件
  3. 使用 GitHub Actions 部署
  4. 将 PHP 应用容器化
← 返回 PHP Academy