如何在 GitHub Actions 中的工作流程之间共享工件?

问题描述 投票:0回答:1

workflowA 生成 workflowB 需要使用的工件。 两个工作流程都是使用

workflow_dispatch
手动触发的,我不喜欢使用
workflow_call
workflow_run
事件(因为我不希望工作流程 A 完成后立即触发工作流程 B)。

对于工件下载,我使用的是

actions/download-artifact@v4
。 为了引用工作流程A生成的工件,我需要
run-id
,请参阅download-artifact文档

我希望工作流程 B 自动获取

run-id
,而不是手动输入(如果定义为工作流程 B 的输入)。

GitHub Actions 中有办法支持这一点吗? 例如,有没有办法在工作流程之间共享输出和/或环境变量 (env)?

任何有创意的解决方案将不胜感激!

github continuous-integration github-actions continuous-deployment
1个回答
0
投票

选项1.使用workflow_run触发器。这是最简单的选项,因为您可以从

找到触发工作流程的运行 ID
github.event.workflow_run.id

但是,您不想立即触发此工作流程。如果您仍然想从这种简单性中受益,您可以将第二个工作流程与需要手动批准的环境相关联。

选项 2.使用 GitHub API 获取所有最近的运行。按工作流程名称过滤它们。第一个找到的条目就是您想要的条目。您将需要使用与下载工件相同的 PAT。您需要使用所需的权限生成它并将其存储在存储库机密中。

您可以使用 GitHub CLI(默认安装在 GitHub 托管运行器上)来简化 API 调用:

GH_TOKEN=${{ secrets.PAT }} 
gh api /repos/$GITHUB_REPOSITORY/actions/runs | jq -r ‘.[] | select(.name == “Workflow 1”) | .[0].id’
© www.soinside.com 2019 - 2024. All rights reserved.