写了个开源项目,随着项目越来越大,项目 bug 越来越多,因此想在 PR 流程中引入自动化测试,自动化测试全部通过才允许合入。
期望:
1 、单元测试( go 项目,也就是执行一下 go test )
2 、接口测试
目前我们公司内部的接口测试工具,启动测试的时候自动创建 redis 、mysql 等等容器,然后启动项目,执行测试 case
比如有一个登录接口,在测试工具中我可以创建登录接口,然后指定登录账号密码,然后断言接口返回值。登录成功的话可能还会在 redis 记录 token ,在 mysql 记录登录日志。然后断言也能写 redis key ,mysql 查询语句,然后断言返回值
登录成功后的 token 、session 等数据传给后续用例使用
测试 case 可以设置分组、并行执行(主要是测试效率,比如我们 5 万+测试 case ,10 分钟可以跑完,不影响代码合入效率)
我找了一圈,接口测试好像都没有类似的工具?想来问问开源项目中有没有类似的工具,并且能够引入 Github PR 流程的?
2
guanzhangzhang 217 天前
你 makefile 里写对应 target 就行,至于什么中间件,你可以自己 compose 啥的启动,但是那样好像没看到啥开源项目这样搞。
一般都是纯 go test 使用 github.com/golang/mock 之类的库做单元测试,很多开源项目里你看接口实现,跳转里你可以看到 mock 啥的实现的 |
3
jiangwei2222 OP @guanzhangzhang PR 创建的时候可以使用 action? 我在 action 说明里面确实找到了 PR 时触发,但是怎么保证 ation 成功才能合并呢?
|
4
wdssmq 217 天前
|
5
BeautifulSoap 217 天前 via Android
GitHub Actions 了解下。我司基本大部分 CI/CD 都已经全交给 Github Actions 来做了,比 Jenkins 好用太多了真的(除了调试太地狱)
Actions 当然可以用 PR 为 trigger ,并且可以设置所有的 Github Actions 流程必须通过之后,PR 才能合并(在 repo 设置里) |
6
jiangwei2222 OP @wdssmq 请问是直接配一个 PR 类型的 action 就会在 PR 信息里面显示吗?我找了很久也没在 github 找到哪里有 PR 设置,看他这个 action 内容,也没有调用 api 设置 PR 评论
|
7
jiangwei2222 OP @BeautifulSoap '设置所有的 Github Actions 流程必须通过之后,PR 才能合并(在 repo 设置里)' 这个是必须配置 Action 才有设置吗,我没找到这个设置呢,现在项目有 release action
|
8
crazzy 217 天前
设置 Pull Request 触发的 Action 语法
```yaml on: pull_request: ``` 还可以具体一点的设置是打开、关闭 PR 的时候触发 https://github.com/DIYgod/RSSHub/blob/master/.github/workflows/lint.yml --- 强制 Action 成功后合并,印象中 GitHub 似乎是没有的,但是 GitLab 有。 不过可以换个思路去理解,有合并权限的基本上都有写权限,既然有写权限,那么就算 CI 不成功他可以直接写进去啊 ;) GitLab 的权限是比较严格的。针对目录、文件级别的权限,必须要指定哪些人审核了才行,还可以强制指定需要审核同意数量。 --- 简而言之就是,如果不是很多人天天专职在一个仓库提交,因为这个浪费的时间很多,没必要折腾这个。等你觉得这是必需品了再去折腾。开源的东西,就 GitHub Action 差不多就够了。 当然也不是没有人觉得不够,他们选择自建 CI/CD ,例如 Kubernetes 就不用 GitHub Action 。但是他们的 CI/CD 是结合 Workflow 的,更进一步。 |
9
BeautifulSoap 217 天前
@jiangwei2222 Repo 的 Settings - Branches , 然后为指定分支或者用通配符设置分支保护,分支保护选项里勾上 "Require status checks to pass before merging"。顺便还能勾上 "Require a pull request before merging", "Require conversation resolution before merging" 等选项加强限制( Github Actions 能很简单地配合 linter 自动给 pr 做 code rebview ,然后直接以 code 评论地形式指出代码里不符合 linter 规范的地方,配合分支保护里的设置能很好处理 pr )
|
10
BeautifulSoap 217 天前
|
11
guanzhangzhang 217 天前
@jiangwei2222 #3 下面可以看 action 的绿色成功,成功就可以合并了,大项目的下面好多的,例如 rpm 打包,deb 打包,static 打包,单元测试,特定系统上跑单元测试啥的。都绿色后,没啥影响就可以决定合入了
|