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

13

我使用workflow_call触发器创建了一个可重用的工作流程,但我需要根据其结果运行其他步骤。

例如:

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

      - name: Upload source maps
        run: something
可重用的“Build”步骤构建我的JS应用程序并生成源代码映射。现在我需要将这些源代码映射作为单独的步骤上传到某个地方,该步骤仅应在此“Released”作业内运行。
执行上述操作会导致以下错误:
错误:.github#L1 可重用的工作流应在顶级`jobs.*.uses'键中引用,而不是在步骤内
它只允许在作业内运行可重用的工作流程,而不是在步骤内运行。但是通过这样做,我无法再访问源代码映射。
我的问题是:如何重用“Build”工作流程中的步骤,并在“Released”作业内访问其输出?

如果我理解正确,将您的任务分成多个作业,并通过输出进行通信,这可能会有所帮助。https://dev59.com/yVIH5IYBdhLWcg3wjfi4#61236803 - rethab
如果我理解正确的话,输出仅适用于字符串值。在这种情况下,我需要访问生成的源地图文件。 - Duncan Lukkenaer
构建任务能否将源代码映射作为构建产物上传(使用artifact-upload),然后发布任务会再次下载它们并将其上传到任何其他想要上传的位置? - rethab
1
您可以在此存储库的.github/actions/<action-folder-name>目录中使用composite类型创建本地操作,并在工作流作业中使用步骤uses: ./.github/actions/<action-folder-name>访问它。此操作可以具有输出变量,您可以在其他步骤中访问该变量。 - GuiFalourd
3
我已经制作了一个示例:工作流程本地(复合)操作带有输出,工作流程运行。请告诉我它是否解决了你的问题。 - GuiFalourd
1个回答

9

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

使用upload-artifactBuild工作流上传构建文件,使用download-artifactReleased工作流中下载它们。

构建工作流程

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” 字符串是大小写敏感的。我浪费了一些时间来弄清楚这是下面错误的原因。

错误: .github#L1
解析“my-org/some-repo/.github/workflows/build.yml@main”工作流时出错:找不到工作流。有关更多信息,请参见https://docs.github.com/zh/actions/learn-github-actions/reusing-workflows#access-to-reusable-workflows


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接