封装GitHub workflow,减少新项目的启动成本
新项目想搭建一个强大的 github workflow 还是比较麻烦的,需要自己攒各种组件。能否封装 GitHub workflow、封装最佳实践,减少新项目的启动成本?
1. Reusable workflow
一类特殊的workflow,可以让别的workflow像函数调用一样复用,如下图
image.pnghttps://docs.github.com/cn/actions/using-workflows/reusing-workflows#creating-a-reusable-workflow
https://www.codewrecks.com/post/github/github-actions-templates/
1.1. 社区可供复用的 reusable workflow
生态比较小。感觉可以启动一个 awesome 项目了
https://github.com/VeryGoodOpenSource/very_good_workflows
Dart/flutter 的
https://github.com/chainguard-dev/actions
https://github.com/OpenAstronomy/github-actions-workflows
2. starter workflow: 给新项目用的 workflow 模板
新项目在 action 里可以点一点、选择 starter workflow template
image.png
就会生成一个模板,供你修改、commit:
image.png
文档见
https://docs.github.com/en/actions/using-workflows/creating-starter-workflows-for-your-organization
https://docs.github.com/en/actions/using-workflows/using-starter-workflows
2.1. 如何开发自己的 workflow 模板?
A. 自己在组织的 .github仓库里创建
没法给别的组织用
B. github 预置了一些,可供选择
好像没法ziyou的把自己做的上架给别人用。但是你确实能看到一些 template 是由第三方团体做的,比如GitHub Actions for Azure:
https://github.com/Azure/actions-workflow-samples
https://github.com/Azure/actions
试用了几个预置模板,体验不好。模板里会读一些配置文件,你没有这些配置文件就报错。也就是说,不会生成默认配置文件。这产品做的,最后一公里掉链子
总的来说,感觉产品设计的格局有点小
3. cli 工具,生成 workflow
https://github.com/Azure/draft
不过这个只管生成用于部署到aks的workflow
https://github.com/fregante/ghat
这个是从指定仓库“生成”workflow(其实就是复制过来),但看描述说,这个工具方便做后续更新