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)?
任何有创意的解决方案将不胜感激!
选项1.使用workflow_run触发器。这是最简单的选项,因为您可以从
找到触发工作流程的运行 IDgithub.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’