我有一个GitHub操作步骤,像这样(从一个更大的test.yml
文件中提取):
steps:
- name: Parse
shell: bash
env:
TYPE: ${{matrix.package-type}}
BV: ${{matrix.builder-version}}
# This comment is line 63, the "#" is in column 9
NULL: ${{ matrix.beta-version }}
run: |
echo TYPE is "$TYPE"
echo BV is "$BV"
printf "Null is '%s'n" "$NULL"
当我运行它时,我得到以下错误:
The workflow is not valid. .github/workflows/test.yml (Line: 64, Col: 9): Unexpected value ''
为什么这行无效?我怎么修理它?
如果您正在使用可重用的工作流,请确保您没有将runs-on
传递给uses
工作流的作业。runs-on
包含在工作流文件本身中,而不是在顶级作业中。
工作流无效。.github/workflows/REDACTED(行:123,Col: 5):意外值'uses' .github/workflows/REDACTED。yml (Line: 124, Col: 5):意外值'with'
原来GitHub动作YAML解析器中有一些奇怪的地方,它将NULL
视为一个特殊的令牌。我猜它会解析
NULL: ${{ matrix.beta-version }}
as if it was
'': ${{ matrix.beta-version }}
将NULL
更改为null
没有帮助。(旁注,在不区分大小写的比较中,env
的键必须是唯一的,这意味着您不能同时拥有FOO
和foo
,即使在设置环境变量名时保留了大小写。)
最好的修复/解决方法是避免使用"NULL"然后用别的词,比如"NIL"。但是,如果必须使用"NULL",则可以将其放在引号中:
"NULL": ${{ matrix.beta-version }}
在我的例子中,这是因为go-version
在矩阵部分看起来像这样:
matrix:
go-version: 1.17
os: [ubuntu-latest, macos-latest]
需要改成数组:[1.17]