GitHub Actions:如何将可重用工作流程作为步骤调用?

Cod*_*000 11 github github-actions

我有一个通过事件触发的主 GitHub Actions 工作流程workflow_dispatch,以及一个通过事件触发的可重用工作流程workflow_call

是否可以通过主工作流程中的步骤而不是作为作业来运行可重用工作流程?

主要工作流程:

name: main-workflow
on:
  workflow_dispatch:
    inputs:
      message:
       type: string
       description: 'A message to pass to reusable workflow'

jobs:
  use-reusable-workflow:
    runs-on: ubuntu-latest
    steps:
      - name: Call reusable workflow
        uses: my-org/reusable-workflow@main
        with:
          workflow: reusable-workflow.yml
          inputs: |
            message=${{ github.event.inputs.message }}
          secrets: |
            A_SECRET: ${{ secrets.A_SECRET }}
Run Code Online (Sandbox Code Playgroud)

运行主工作流程时,我收到以下错误:

错误:在以下位置找不到“action.yml”、“action.yaml”或“Dockerfile”

Gui*_*urd 10

根据GitHub官方文档

您可以使用uses关键字调用可重用的工作流程。与在工作流中使用操作不同,您可以直接在作业中调用可重用工作流,而不是从作业步骤中调用。

因此,您无法从作业中调用可重用的工作流程step


您的情况的解决方法可能是使用本地操作,它基本上允许您在与工作流程相同的存储库中使用操作。

本地操作调用示例:

jobs:
  my_first_job:
    steps:
      - name: Check out repository
        uses: actions/checkout@v3
      - name: Use local my-action
        uses: ./.github/actions/my-action
Run Code Online (Sandbox Code Playgroud)

请注意,您需要告知工作流程存储库中包含操作的目录路径。因此,要访问操作文件,您必须在将操作与actions/checkout.

此本地操作可以是复合操作,类似于可重用工作流可以使用操作、脚本或 shell 命令实现的操作。我推荐这篇文章来了解复合操作和可重用工作流程之间的区别