利用Github Action自动检测项目中 yaml 或 json 的语法
文章发布较早,内容可能过时,阅读注意甄别。
# 前言
我最近开源的 awesome-ops (opens new window) 项目,其中的项目分类及表格数据的生成,依赖 yaml-readme (opens new window) 这个项目所实现的 action 来完成。因此,其中的项目都是基于大量 yaml 来收集,在于 yaml 打交道的过程中,不可避免的会遇到错漏的情况,这个时候,增加一个 yaml 语法检测的 action 就势在必行了。
当我有了这个念头之后,就针对这方面的 action 进行了一大波调研,发现市场上有许多对应的 action,真正好用的并不多,因此,在花了一两个小时之后,才发掘到了本文将要介绍的 action,如果你也有此类场景与需求,那么就往下读吧。
# 配置
所用 Actions。
- json-yaml-validate (opens new window):用于快速验证存储库中的 JSON 和 YAML 文件的 GitHub Action
使用配置其实非常简单,基本上阅读完官方介绍文档就可以上手使用了。
我这里就以自己项目中所用的配置 (opens new window)进行说明:
name: yaml-validate
on:
push:
branches:
- main
pull_request:
workflow_dispatch:
permissions:
contents: read
pull-requests: write # enable write permissions for pull request comments
jobs:
json-yaml-validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: json-yaml-validate
id: json-yaml-validate
uses: GrantBirki/json-yaml-validate@v2.6.0 # replace with the latest version
with:
comment: "true" # enable comment mode
base_dir: "items"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
其中所用到的参数也比较简单,这里做几点说明:
pull_request:
在触发条件中记得配置此项,从而实现项目再接收到 pr 时自动对项目内的文件进行语法检测。如果失败则无法进行正常 pr,从而实现协作者自行确保提交内容格式正确的义务。comment:
当检测失败时,该 action 会自动将检测到的错误通过评论的形式呈现在对应 pr 的评论区,非常优雅。base_dir:
指定将要扫描的路径,如果不配置,则默认扫描所有后缀符合 yaml 或 json 的文件。
只需如上简单配置即可实现想要的效果。
当然该 action 还有其他一些参数,你可以点此 (opens new window)进行了解。
# 效果
正常情况下,执行成功就会显示通过,如果扫描到语法有问题,则会通过评论的形式在 pr 中,呈现效果如下:
我这里所用到的是 yaml 的语法检测,它还支持 json 语法的检测,如果你也有类似场景,就快应用起来吧。
上次更新: 2024/12/05, 21:39:23