GitHub Action 错误:“需要顶级‘运行:’部分”

jrk*_*rkt 1 github-actions building-github-actions

我正在尝试让私有 GitHub 操作在我的私有 GitHub 组织中工作。包含这些工作流程“模板”的私人存储库具有这个简单的文件结构,因为我只是试图让最低限度的工作:

\n
.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 .git\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 test\n\xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 action.yml\n
Run Code Online (Sandbox Code Playgroud)\n

文件action.yml内容是:

\n
name: Test\n\non: push\n\njobs:\n  test:\n    name: Test\n    runs-on: ubuntu-latest\n    steps:\n\n    - name: Echo\n      run: |\n        echo Heyyyyy\n
Run Code Online (Sandbox Code Playgroud)\n

我正在尝试在另一个私有存储库中使用此操作,并使用包含以下内容的工作流程文件:

\n
name: Test\n\non:\n  push:\n    branches:\n      - master\n\njobs:\n  test:\n    name: Test\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v2\n        with:\n          repository: <private-actions-repo>\n          token: ${{ secrets.REPO_TOKEN }}\n          path: github-actions\n      - name: Test private action\n        uses: ./github-actions/test\n
Run Code Online (Sandbox Code Playgroud)\n

当此操作运行时,我收到以下错误:\n##[error]Top level 'runs:' section is required for /home/runner/work/<private-repo>/./github-actions/test/action.yaml

\n

为了对此进行调试,我将使用模板的工作流程更新为该cat文件的文件内容:

\n
      - name: Test private action\n        run: |\n          cat ./github-actions/test/action.yml\n
Run Code Online (Sandbox Code Playgroud)\n

..我得到了我期望的内容:

\n
> Run cat ./github-actions/test/action.yml\nname: Test\n\non: push\n\njobs:\n  test:\n    name: Test\n    runs-on: ubuntu-latest\n    steps:\n\n    - name: Echo\n      run: |\n        echo Heyyyyy\n\n
Run Code Online (Sandbox Code Playgroud)\n

为什么从操作存储库中使用它时不起作用,但在目标存储库中使用完全相同的内容?

\n

riQ*_*iQQ 11

您必须区分工作流程、操作和不同的操作类型。

工作流是顶层元素。操作是可在工作流中使用的构建块。您定义的操作action.yml实际上是一个工作流程,但应该是一个composite run steps action,即特定类型的操作,必须遵循以下规则: https: //docs.github.com/en/actions/creating-actions/metadata- github-actions 语法#runs-for-composite-run-steps-actions

您可以在此处找到示例composite run steps action: https: //docs.github.com/en/actions/creating-actions/creating-a-composite-run-steps-action#creating-an-action-metadata-file

如果您使用以下 as action.yaml,它应该可以工作:

name: Test
description: 'composite run action'

runs:
  using: "composite"
  steps: 
    - name: Echo
      shell: bash
      run: |
        echo Heyyyyy
Run Code Online (Sandbox Code Playgroud)