如何在 github actions 中配置一系列工作流程来传递 git sha?

Tom*_*son 5 github-actions

我目前有一个非常简单的设置,有两个工作流程;builddeploy。截至目前,已deploy为我们部署到开发、测试和生产阶段。这样做有一个缺点,例如很难看到最新的生产部署是什么,而且如果我想重新部署测试或生产,我需要触发整个工作流程。

当我只有上面提到的两个时,我可以build通过访问 来读取工作流程的 git sha github.event.workflow_run.head_sha,因此当前的流程可以工作(不理想,但它有效)。

我的计划现在是为部署到开发、测试和生产提供单独的工作流程,但我知道有一个问题,即知道 git sha 触发了部署到开发将触发的构建。当时我的计划是使用作业的输出,但如何从一个工作流程中访问另一个工作流程中的输出?

所以我想做这样的事情:

name: Deploy dev
on:
  workflow_run:
    workflows: [Build]
    types: [completed]
  workflow_dispatch:
  

jobs:
  on-build-failure:
    runs-on: ubuntu-latest
    if: ${{ github.event.workflow_run.conclusion == 'failure' }}
    steps:
      - run: |
          echo "First workflow was a failure"
          exit 1

  on-build-success:
    outputs:
      commit-sha: ${{ github.event.workflow_run.head_sha }}
    runs-on: ubuntu-latest
    if: ${{ github.event.workflow_run.conclusion == 'success' }}
    steps:
      - run: echo "Build succeeded, continue with deploy"
Run Code Online (Sandbox Code Playgroud)

然后在部署测试中:

name: Deploy test
on:
  workflow_run:
    workflows: [Deploy dev]
    types: [completed]
  workflow_dispatch:
  
jobs:

  on-build-failure:
     runs-on: ubuntu-latest
     if: ${{ github.event.workflow_run.conclusion == 'failure' }}
     steps:
       - run: |
          echo "First workflow was a failure"
          exit 1

  on-build-success:
    runs-on: ubuntu-latest
    outputs:
      commit-sha: ${{ github.event.workflow_run.outputs.commit-sha }}
    if: ${{ github.event.workflow_run.conclusion == 'success' }}
    steps:
      - run: echo "Build succeeded, continue with deploy ${{ github.event.workflow_run.outputs.commit-sha }}"
Run Code Online (Sandbox Code Playgroud)