使用 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 自动化!

使用 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
加载中...
4票,平均分:1.00/14
1,051
X Facebook Hatena书签 口袋

这篇文章的作者

关于作者

松木

我喜欢扑克和橄榄球。
我最喜欢的漫威角色是“绿巨人”。

我的座右铭是:专注力 x 时间 + 运气