首页 > 解决方案 > 我的 GitHub 操作中嵌入式 shell 脚本的 YAML 语法有什么问题?

问题描述

在我的 GitHub 操作工作流中,我有以下部分(在作业/构建/步骤下):

      - name: Install/Select GCC and G++
        run: |
          sudo apt-get install -y gcc-${{ matrix.gcc }} g++-${{ matrix.gcc }}
          echo "CC=/usr/bin/gcc-${{ matrix.gcc }}" >> $GITHUB_ENV
          echo "CXX=/usr/bin/g++-${{ matrix.gcc }}" >> $GITHUB_ENV
          echo "CUDAHOSTCXX=/usr/bin/g++-${{ matrix.gcc }}" >> $GITHUB_ENV

GitHub 无法运行它,发出:

工作流文件无效

第 82 行的 yaml 语法有错误

现在,我从另一个存储库中提取了这个相同的代码应该可以工作的存储库......这是怎么回事?

标签: yamlgithub-actions

解决方案


这是相关行,从 68 开始,跳过了一些行:

    steps:
      - uses: actions/checkout@v2
      - name: Install CUDA
        # .. snip ..

      - name: Install/Select GCC and G++
        run: |
          sudo apt-get install -y gcc-${{ matrix.gcc }} g++-${{ matrix.gcc }}
          echo "CC=/usr/bin/gcc-${{ matrix.gcc }}" >> $GITHUB_ENV
          echo "CXX=/usr/bin/g++-${{ matrix.gcc }}" >> $GITHUB_ENV
          echo "CUDAHOSTCXX=/usr/bin/g++-${{ matrix.gcc }}" >> $GITHUB_ENV
    - name: CMake configure

steps:是 YAML 映射的一部分。下一行开始一个 YAML 序列,它缩进了两个空格。因此,该序列在第 82 行以- name: CMake configure. 我不知道为什么 GitHub 将其显示为第 83 行;如果您将其复制粘贴到编辑器,则该空行不存在。可能是行尾问题,但我懒得启动十六进制编辑器来找出答案。

在任何情况下,在第 82 行,YAML 解析器结束了映射键的值,steps因此期望另一个映射键或映射结束。但是,它会找到一个序列项。那是你的错误。

您似乎打算将以下序列项作为steps:. 如果是这样,请将它们缩进到与前面的项目相同的级别。


推荐阅读