在弄这个项目 SourLemonJuice/i18nglish.c 的时候碰到了点问题

在 github workflow 的配置文件中 defaults.run 能为工作流配置 shell 和工作目录等属性,除此之外还有个类似的配置项 jobs.<job_id>.defaults 该配置只会将设置的值应用到 当前的工作(job) 中。

以此为基础我写了这堆东西

全局(defaults.run):

defaults:
  run:
    working-directory: source/

特定工作(jobs.id.defaults):

defaults:
  run:
    shell: msys2 {0}

但执行过程中构建报错了,此处的报错还是 make: *** No rule to make target 'i18nglish.exe'. Stop. 而非找不到 makefile 也让找错的过程更不顺利

说回来,文档中对于 jobs.<job_id>.defaults 的描述是:

使用相同名称定义了多个默认设置时,GitHub 会使用最具体的默认设置。 例如,在作业中定义的默认设置将覆盖在工作流程中定义的同名默认设置。

总的来说它确实是这么做的,毕竟其他的 job 都没有用 msys2 的终端,但在这个 job 中 working-directory 却是未设置的。
job ID:26656961410 中的 pwd 步骤可以看到 shell 并没有进入到 source/ 下

所以,我可以合理推测一下,文档中说的 使用最具体的默认设置 是指最具体的 jobs.<id>.defaults 块,而非其下面的子属性,比如 .defaults.run.shell 之类的。
如果在 job 中定义了 jobs.<id>.defaults 就完全使用该块中的配置,没有定义的子项也不会向上寻找全局的 defaults

换句话说 jobs.<id>.defaults 的内容不会继承于 defaults

所以,这是一次调整过后的 job ID:26659054006
其中的 pwd 步骤表明了 shell 已经处在 source/ 目录下了