type
status
date
slug
summary
tags
category
icon
password
前一段时间,公司的 Github Action 费用超了,然后我接到一个需求,需要将 Github Action 配合 label 使用,减少不必要的 CI。
Github Action
Github Action 是 GitHub 推出的一种类似于 Travis 的服务,开发者可以编写 Action 脚本,实现开发、编译、测试、部署一套流程全打通。
GitHub Action 已经出来挺长时间了,现在网上已经有了各种各样的脚本,官方也提供了大量脚本供使用,因此使用起来是想当方便的。
Label
在 GitHub 上,issue 或者 pull request 都可以打标签,用于区分不同的类型,或者不同的作用等等。而在前期的 GitHub Action 的使用中,一旦触发 CI,那么就是把全部的 CI 都跑一遍,这样的操作显然会带来大量的浪费,而开发过程中 CI 都是重要且必不可少的一个环节,那怎么办呢?
- 减少测试用例的数量。– 这个对减少时间的效果很大,要是把用例全删了,那就不用 CI 了,但是显然是不可取的。
- 屏蔽掉部分不需要的 CI。在当前版本中,即使只是修改了一行代码,也会把前端、后端所有的单元测试、E2E 测试以及打包部署等所有流程跑一遍。前端和后端的 E2E,跑一次就得一个小时,既浪费时间,又浪费钱。PS. GitHub Action 的费用是很贵的,每天跑是一笔很大的花销。
那么如何屏蔽掉不用的 CI 呢?Label。Label 可以用来分类,既然可以分类,那我执行 CI 的时候就判断一下类别就 OK 了啊,只有指定标签的 CI 才可以执行。
示例
这里提供一个示例的仓库:action-ci
在本仓库中,标签的选择是通过人手动的去添加,然后触发 CI。实际上应该还可以有更好玩的玩法,可以添加机器人,检测文件改动的位置,然后打上对应的标签,最后触发对应标签的 CI。
- 作者:阿杰鲁
- 链接:http://blog.zaunist.com/article/88adf971-2a8b-4e2c-a044-ea331b62c8e9
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。