【问题标题】:GitHub Actions: pass data from workflow to another workflow?GitHub Actions:将数据从工作流程传递到另一个工作流程?
【发布时间】:2021-07-10 10:33:24
【问题描述】:

GitHub Actions 允许根据此文档使用 workflow_run 事件从另一个工作流触发工作流:Events that trigger workflows - Webhook Events - workflow_run

这很好用。但是,对于我计划使用除第一个工作流程之外的所有工作流程的情况,可能会依赖于有关先前工作流程的一些信息......例如某些字符串/条件/等...

我们如何将数据从一个工作流程传递到另一个工作流程?

是否有一些类似于needs.jobs.<job_id>.* 的参考可用于将数据从一个作业传递到另一个作业?

注意:在工作流 B 中使用工作流 A 中内置的工件是一个不同的问题(问和回答 here),可以通过使用以下操作:dawidd6/action-download-artifact@v2

【问题讨论】:

  • 您是否尝试使用 repository_dispatch 触发器?有了它,您可以从一个工作流发送一个调度事件来启动另一个工作流,通过请求负载发送一些数据。
  • 使用repository_dispatch似乎是针对其他情况的。由于有专门针对我的目的的workflow_run 事件,我宁愿使用它而不是构建一个古怪的解决方法......

标签: github-actions


【解决方案1】:

您可以使用repository_dispatch action 发送包含您需要的数据的事件。然后它将触发另一个具有on: repository_dispatch 和特定事件名称的工作流。查看操作文档以获取更多信息。

您可以在client-payload 中传递您想要的数据。对于更大的文件,我认为可以使用工件。

例如,您有第一个工作流程:


name: Test

on:
  - push
jobs:
  preflight-job:
    name: First Step
    runs-on: ubuntu-latest
    steps:
      - name: Repository Dispatch
        uses: peter-evans/repository-dispatch@v1
        with:
          token: ${{ secrets.PAT }}
          event-type: my-event
          client-payload: '{"ref": "${{ github.ref }}", "sha": "${{ github.sha }}", "test": "test message"}'

然后创建另一个将由该事件触发的工作流文件:


name: Repository Dispatch
on:
  repository_dispatch:
    types: [my-event]
jobs:
  myEvent:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
        with:
          ref: ${{ github.event.client_payload.ref }}
          
      - run: echo ${{ github.event.client_payload.sha }}
      - run: echo ${{ github.event.client_payload.test }}

【讨论】:

    猜你喜欢
    • 2023-01-11
    • 2023-02-01
    • 1970-01-01
    • 2020-06-10
    • 1970-01-01
    • 2022-01-10
    • 2022-01-10
    • 2020-04-03
    • 2022-11-02
    相关资源
    最近更新 更多