使用 GitHub Actions 自动化单元测试
目录
你好!
我是系统开发部的松木。
继续上一篇关于 GitHub Actions 的文章,这次我们将讨论 GitHub Actions。
这次的主题是“让我们将 PHP 的 UnitTest 留给 GitHub Actions 来自动化它!”
注意事项
在本文中,我们将假设您正在使用 Docker 构建 Laravel 环境来继续本文。
| |- docker | |- my.cnf | |- docker-compose.yml |
什么是 GitHub 操作?
这一点在之前的文章中已经有过简单的解释,所以请看一下。
● 使用 GitHub Actions 实现 Larastan 自动化!
环境
码头工人:23.0.1
拉拉维尔:10.x
PHP:8.2
MySQL:8.0
代码内容
这次我们将使用的代码如下。
下面的代码写在“/.github/workflows/unitTest.yml”中。
名称:UnitTest on:push:jobs:unitTest:runs-on:ubuntu-latest 步骤: - 名称:查看代码使用:actions/ [email protected] - 名称:设置 Docker Compose 运行:docker compose up -dworking- directory: ${{ github.workspace }} # 指定仓库根目录 - name:composer install run: docker compose exec -i -t php-fpmcomposer install - name:三十秒 sleep run: sleep 30 - name:运行 PHPUnit 运行: docker compose exec -i -t php-fpmvendor/bin/phpunit
根据上面的代码,我们将解释UnitTest自动运行的机制。
本文还重申了之前 Larastan 文章中讨论的内容。
姓名:
该字段描述要在 GitHub Actions 中注册的工作流程的名称。
输入此内容后,它将显示在 GitHub Actions 屏幕上。
这里,注册了名称“UnitTest”。
如果没有注册,则会注册文件的相对路径。
在这种情况下,它将使用名称“./.github/workflows/UnitTest.yml”进行注册。
在:
您可以决定哪些操作触发工作流程。
这称为“触发器”。
这次使用的代码中,“Push to GitHub”是运行UnitTest的触发器。
除了推送时机之外,您还可以详细设置触发器,例如在创建拉取请求时触发,或者仅在推送指定分支时触发。
职位:
您可以在此项中编写将在工作流程中执行的流程。
例如,要运行UnitTest,需要执行启动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 命令。
该命令正在运行sleep 30
docker compose up后mysql可能还没有完全启动,所以
在这种情况下,UnitTest 无法正常运行,因此我们将进程延迟 30 秒。
运行:(第四次)
单元测试在第四次也是最后一次运行中执行。
与第二次运行类似,UnitTest执行命令是写在php容器内的。
此命令docker compose exec -i -t phpvendor/bin/phpunit
请将php您的 php 容器的名称
至此我终于可以运行UnitTest了。
概括
你觉得怎么样?
您可以使用 GitHub Actions 自动化许多事情,
实施起来会很困难,但是一旦实施了,你的工作效率一定会提高!
非常感谢。
最后
我们为我所属的系统开发部门开设了服务网站“SEKARAKU Lab”。
Beyond是从服务器设计搭建到运营的一站式服务,所以如果您在服务器端开发方面遇到任何问题,请随时联系我们。
● SEKARAKU 实验室: https://sekarakulab.beyondjapan.com