# 前言

我最近开源的 awesome-ops (opens new window) 项目,其中的项目分类及表格数据的生成,依赖 yaml-readme (opens new window) 这个项目所实现的 action 来完成。因此,其中的项目都是基于大量 yaml 来收集,在于 yaml 打交道的过程中,不可避免的会遇到错漏的情况,这个时候,增加一个 yaml 语法检测的 action 就势在必行了。

当我有了这个念头之后,就针对这方面的 action 进行了一大波调研,发现市场上有许多对应的 action,真正好用的并不多,因此,在花了一两个小时之后,才发掘到了本文将要介绍的 action,如果你也有此类场景与需求,那么就往下读吧。

# 配置

所用 Actions。

使用配置其实非常简单,基本上阅读完官方介绍文档就可以上手使用了。

我这里就以自己项目中所用的配置 (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

其中所用到的参数也比较简单,这里做几点说明:

  • pull_request: 在触发条件中记得配置此项,从而实现项目再接收到 pr 时自动对项目内的文件进行语法检测。如果失败则无法进行正常 pr,从而实现协作者自行确保提交内容格式正确的义务。
  • comment: 当检测失败时,该 action 会自动将检测到的错误通过评论的形式呈现在对应 pr 的评论区,非常优雅。
  • base_dir: 指定将要扫描的路径,如果不配置,则默认扫描所有后缀符合 yaml 或 json 的文件。

只需如上简单配置即可实现想要的效果。

当然该 action 还有其他一些参数,你可以点此 (opens new window)进行了解。

# 效果

正常情况下,执行成功就会显示通过,如果扫描到语法有问题,则会通过评论的形式在 pr 中,呈现效果如下:

我这里所用到的是 yaml 的语法检测,它还支持 json 语法的检测,如果你也有类似场景,就快应用起来吧。