为 Laravel 应用程序设置 GitHub Actions
最后更新于 作者: Steve McDougall
GitHub Actions 是一种运行持续集成工作流的绝佳方式,从运行测试到检查静态分析等等。
在您的 Laravel 应用程序中,运行工作流流程至关重要,以确保您的代码符合特定标准。在拥有 CI 管道之前,我们曾经在本地运行所有这些工作流,这导致了其他人忘记运行它们的问题。
在本教程中,我将引导您为 Laravel 应用程序设置 GitHub Actions,这样您就可以放心地坐下来,确保您的代码准备上线。
此过程的第一步是在项目的根目录中添加一个目录 .github/workflows
。在这里,我们添加工作流文件,以便 GitHub 可以分别拾取并运行它们。从这一点开始,您可以根据需要设计您的工作流流程,从每个部分的单独工作流,到将它们全部合并到一个工作流中。
我将从测试工作流开始,因为这是最有可能首先开始的工作流。即使您只实现此工作流,您也已经朝着正确的方向迈出了第一步。
我不会对如何构建 GitHub Actions 进行完整演练,因为这是一个相当复杂的主题,它与您希望如何实现它们非常相关。工作流将逐步构建,使我们能够理解它的工作原理。
name: Run tests on: [push]
首先,我们需要给工作流起一个名字,GitHub 将使用它来显示正在发生的事情。然后我们添加一个 on
条目,告诉 GitHub 这个工作流应该在哪些事件上运行。您可以在此处添加多个条目,并且可以使用各种事件。
我们的下一步是定义我们要运行的作业。每个工作流中都可以包含多个作业。但是,我通常将每个工作流限制为一个作业,以保持简单。
name: Run tests on: [push] jobs: tests: name: Run tests runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: '8.2' extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite, bcmath, soap, intl, gd, exif, iconv coverage: none - name: Run composer install run: composer install -n --prefer-dist - name: Prepare Laravel Application run: | cp .env.ci .env php artisan key:generate - name: Run tests run: php artisan test
我们的作业有一个名称,GitHub 将在显示正在发生的事情时用作标签。我们需要定义此作业将在哪里运行。这里我使用 ubuntu-latest
,因为这通常是我的目标部署环境。这里有很多选项,可以针对特定版本的 OS,甚至可以针对可用的不同操作系统。然后,我们的作业包含作业需要运行的多个步骤,从检出代码到执行需要完成的操作。
大多数作业将从 checkout 操作开始,这是一个来自 GitHub 团队的官方操作。我在这里使用版本 3,因为它支持我项目中任何 JavaScript 的最新节点版本。如果您需要特定版本的节点,请查看每个版本的发布说明,以确保您匹配您的要求。
接下来,我们使用 shivammathur/setup-php@v2
操作,它用于设置我们的 PHP 环境。传入我们的 PHP 版本以及需要安装的任何 PHP 扩展。
然后我们安装我们的 PHP 依赖项,这样我们就可以确保在以后部署时我们的安装顺利进行。在每个步骤中,您可以运行打包的操作或可以运行的 CLI 命令。然后我们设置我们的 Laravel 应用程序,运行任何 Artisan 命令或我们可能需要做的任何其他事情。在我的项目中,我使用内存中运行的 SQLite 数据库作为我的测试数据库。如果您使用的是其他数据库,那么有很多可用的选项,这些选项都有详细的文档。在我这里,我只做了一件事,就是将指定的 .env.ci
文件复制到应用程序将使用的 .env
文件。然后我们可以使用 Artisan 命令生成应用程序的加密密钥。
我们最后一步是运行我们的测试套件,我使用 Artisan test 命令。您可以自己调用测试二进制文件或使用 Artisan 命令。您也可以在需要在 CI 中调试潜在测试失败的情况下,将任何其他选项添加到此命令中。
现在我们的初始工作流已经运行,我们可以看看另一个工作流。这次我们将使用我最喜欢的工作流之一来运行,即静态分析。正如许多人可能已经知道的那样,我是一个直言不讳的开发人员,总是挥舞着静态分析的旗帜。
对于下一部分,我将不再详细介绍所有步骤。相反,我们将重点关注最后部分。
name: Static Analysis on: [push] jobs: phpstan: name: phpstan runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: '8.2' coverage: none - name: Install composer dependencies run: composer install -n --prefer-dist - name: Run Static Analysis run: ./vendor/bin/phpstan --error-format=github
由于我们不需要运行应用程序,因此这次我们不必担心所有 PHP 依赖项。我们的最后一步是运行静态分析本身。我个人使用 PHPStan 作为我的静态分析工具。但是,这适用于任何可用的静态分析库。我传递 error-format
标志,以便任何潜在的错误都采用 GitHub 可以理解并为 CI 环境设计的格式。
您可以进一步进行,例如运行 Laravel Pint 或更多内容。但是,作为入门介绍,我认为这涵盖了您需要的知识。
《Laravel 新闻》的技术作家,Treblle 的开发者倡导者。API 专家,经验丰富的 PHP/Laravel 工程师。YouTube 直播主。