在另一个作业中重用 GitHub 个 Action 工作流步骤

Reusing GitHub Action workflow steps inside another job

我已经使用 workflow_call 触发器创建了一个 Reusable Workflow,但我需要根据其结果 运行 额外的步骤。

示例:

jobs:
  released:
    steps:
      - name: Build
        uses: my-org/some-repo/.github/workflows/build.yml@main

      - name: Upload source maps
        run: something

可重用 Build 步骤构建我的 JS 应用程序并生成源映射。现在我需要将这些源地图作为一个单独的步骤上传到某个地方,应该只 运行 在这个 Released 作业中。

执行上述操作会导致以下错误:

Error : .github#L1
reusable workflows should be referenced at the top-level `jobs.*.uses' key, not within steps

它只允许 运行在作业中而不是在步骤中设置我的可重用工作流。但是这样一来,我就无法再访问源地图了。

我的问题:如何重用 Build 工作流程中的步骤并在 Released 中访问其输出工作?

您可以使用工件在作业之间共享这些输出文件。

使用 upload-artifactBuild 工作流程上传构建文件,并 download-artifactReleased[=] 下载它们28=] 工作流程。

构建工作流程

name: Build

on:
  workflow_call:
    secrets:
      SOME_SECRET:
        required: true

jobs:
  build:
    steps:
      # Your build steps here

      - name: Create build-output artifact
        uses: actions/upload-artifact@master
        with:
          name: build-output
          path: build/

发布的工作流程

name: Released

on:
  push:
    branches:
      - main

jobs:
  build:
    uses: my-org/some-repo/.github/workflows/build.yml@main
    secrets:
      SOME_SECRET: ${{ secrets.SOME_SECRET }}

  released:
    needs: build

    steps:
      - name: Download build-output artifact
        uses: actions/download-artifact@master
        with:
          name: build-output
          path: build/

      # The "build" directory is now available inside this job

      - name: Upload source maps
        run: something

额外提示: 请注意,“my-org/some-repo/.github/workflows/build.yml@main”字符串区分大小写。我浪费了一些时间才弄清楚这是导致以下错误的原因。

Error : .github#L1
error parsing called workflow "my-org/some-repo/.github/workflows/build.yml@main": workflow was not found. See https://docs.github.com/en/actions/learn-github-actions/reusing-workflows#access-to-reusable-workflows for more information.