使用 GitHub Actions 实现单元测试自动化

目录
你好!
这是系统开发部的松木。
继上一篇关于 GitHub Actions 的文章之后,本文也将继续介绍 GitHub Actions。
这次,我们将讨论“使用 GitHub Actions 自动化 PHP 单元测试!”
需要注意的事项
本文假设您已经使用 Docker 设置了 Laravel 环境。
| |- docker | |- mysql | | |- Dockerfile | | |- my.cnf | | | |- php | |- Dockerfile | |- php.ini | |- docker-compose.yml | |- src
什么是 GitHub Actions?
前文已对此进行过简要介绍,请参阅相关内容。
● 使用 GitHub Actions 实现 Larastan 自动化!
环境
Docker:23.0.1
Laravel:10.x
PHP:8.2
MySQL:8.0
代码内容
这次我们将使用的代码如下:
以下代码写在“/.github/workflows/unitTest.yml”中。
name: UnitTest on: push: jobs: unitTest: runs-on: ubuntu-latest steps: - name: Check out code uses: actions/ [email protected] - name: Set up Docker Compose run: docker compose up -d working-directory: ${{ github.workspace }} # specified the root directory of the repository - name: composer install run: docker compose exec -i -t php-fpm composer install - name: sleeping 30 seconds run: sleep 30 - name: Run PHPUnit run: docker compose exec -i -t php-fpm vendor/bin/phpunit
基于上面的代码,我们将分部分解释单元测试是如何自动运行的。
本文中我还会重申我在之前的拉拉斯坦文章中解释过的内容。
姓名:
此字段指定要在 GitHub Actions 中注册的工作流名称。
输入此内容后,它将显示在 GitHub Actions 屏幕上。
这里注册了名称“UnitTest”。
如果未注册,则注册文件的相对路径。
在这种情况下,它将被注册为“./.github/workflows/UnitTest.yml”。
在:
您可以决定哪个操作会触发工作流运行。
这被称为“触发”。
这次我们将使用的代码设置为触发“推送到 GitHub”并运行单元测试。
您不仅可以设置推送的时间,还可以设置详细的触发器,例如在创建拉取请求时触发,或者仅在推送指定分支时触发。
工作机会:
在本部分中,您可以编写将在工作流中执行的流程。
例如,要运行单元测试,您需要执行诸如启动 Docker 和安装 composer 之类的命令。
本节介绍此类操作。
单元测试:
创建职位并命名职位。
您可以使用作业中的 name 键来设置将在 GitHub UI 中显示的名称,但如果未设置,则会被作业名称替换。
继续运行:
定义虚拟机类型。
配置虚拟机
有三种选择 GitHub 托管的运行器
、比 GitHub 托管的运行器更大的运行器,
或者自托管的运行器
在本例中,我们将使用第一个 GitHub 托管的运行器(以下简称运行器)。
运行程序有多种类型,您可以从以下三种中选择:Linux、Windows 和 macOS。
基本上来说,使用 Linux 应该不会有问题,但请根据您的环境进行选择。
这次我们使用最新的Ubuntu虚拟机。
用途:
指定要执行的操作。
这里使用的操作是一个名为“actions/checkout”的模块。
作为角色,它用于使用代码库中的代码。
运行:(首先)
这里我们运行命令docker compose up -d
由于我们假设环境将使用 Docker 进行设置,因此我们将在这里启动 Docker。
工作目录:
这指定了工作目录。
这次,我们写的是${{ github.workspace }}
这样就可以从默认工作目录获取绝对路径。
Docker 将使用获取到的路径启动。
运行:(第二次)
第二次运行会安装 Composer。
该命令正在运行docker compose exec -i -t php composer install
命令提示的是 php,但请在此处输入您的 php 容器名称
通过输入上述命令,composer install 将在 php 容器内执行。
运行:(第三)
第三次运行执行睡眠命令。
该命令执行sleep 30
执行 docker compose up 后,mysql 可能尚未完全启动。
在这种情况下,单元测试无法正确执行,因此处理延迟了 30 秒。
跑:(第四)
最后一次运行,也就是第四次运行,是运行单元测试的时候。
与第二次运行一样,单元测试执行命令写在 php 容器中。
在此命令docker compose exec -i -t php vendor/bin/phpunit请将php您的 php 容器的名称
现在我们终于可以运行单元测试了。
概括
你觉得怎么样?
您可以使用 GitHub Actions 实现很多自动化操作。
虽然实施起来比较困难,但一旦做到了,就能提高工作效率!
非常感谢。
最后
我所在的系统开发部门推出了一个名为“SEKARAKU Lab”的服务网站。Beyond
提供从服务器设计、搭建到运维的一站式服务,所以如果您在服务器端开发方面遇到任何问题,请随时与我们联系。
● SEKARAKU 实验室: https://sekarakulab.beyondjapan.com
4