Github 的 PR 可以引入测试流程吗?

208 天前
 jiangwei2222

写了个开源项目,随着项目越来越大,项目 bug 越来越多,因此想在 PR 流程中引入自动化测试,自动化测试全部通过才允许合入。

期望:

1 、单元测试( go 项目,也就是执行一下 go test )

2 、接口测试

目前我们公司内部的接口测试工具,启动测试的时候自动创建 redis 、mysql 等等容器,然后启动项目,执行测试 case

比如有一个登录接口,在测试工具中我可以创建登录接口,然后指定登录账号密码,然后断言接口返回值。登录成功的话可能还会在 redis 记录 token ,在 mysql 记录登录日志。然后断言也能写 redis key ,mysql 查询语句,然后断言返回值

登录成功后的 token 、session 等数据传给后续用例使用

测试 case 可以设置分组、并行执行(主要是测试效率,比如我们 5 万+测试 case ,10 分钟可以跑完,不影响代码合入效率)

我找了一圈,接口测试好像都没有类似的工具?想来问问开源项目中有没有类似的工具,并且能够引入 Github PR 流程的?

1297 次点击
所在节点    GitHub
11 条回复
kkhaike
208 天前
guanzhangzhang
208 天前
你 makefile 里写对应 target 就行,至于什么中间件,你可以自己 compose 啥的启动,但是那样好像没看到啥开源项目这样搞。
一般都是纯 go test 使用 github.com/golang/mock 之类的库做单元测试,很多开源项目里你看接口实现,跳转里你可以看到 mock 啥的实现的
jiangwei2222
208 天前
@guanzhangzhang PR 创建的时候可以使用 action? 我在 action 说明里面确实找到了 PR 时触发,但是怎么保证 ation 成功才能合并呢?
wdssmq
208 天前
@jiangwei2222

https://github.com/DIYgod/RSSHub/pull/15395

执行结果会在相应 pr 下显示,人工目视决定要不要合。。
BeautifulSoap
208 天前
GitHub Actions 了解下。我司基本大部分 CI/CD 都已经全交给 Github Actions 来做了,比 Jenkins 好用太多了真的(除了调试太地狱)

Actions 当然可以用 PR 为 trigger ,并且可以设置所有的 Github Actions 流程必须通过之后,PR 才能合并(在 repo 设置里)
jiangwei2222
208 天前
@wdssmq 请问是直接配一个 PR 类型的 action 就会在 PR 信息里面显示吗?我找了很久也没在 github 找到哪里有 PR 设置,看他这个 action 内容,也没有调用 api 设置 PR 评论
jiangwei2222
208 天前
@BeautifulSoap '设置所有的 Github Actions 流程必须通过之后,PR 才能合并(在 repo 设置里)' 这个是必须配置 Action 才有设置吗,我没找到这个设置呢,现在项目有 release action
crazzy
208 天前
设置 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 的,更进一步。
BeautifulSoap
207 天前
@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 )
BeautifulSoap
207 天前
guanzhangzhang
207 天前
@jiangwei2222 #3 下面可以看 action 的绿色成功,成功就可以合并了,大项目的下面好多的,例如 rpm 打包,deb 打包,static 打包,单元测试,特定系统上跑单元测试啥的。都绿色后,没啥影响就可以决定合入了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1036313

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX