我目前有一个非常简单的设置,有两个工作流程;build和deploy。截至目前,已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)
| 归档时间: |
|
| 查看次数: |
1930 次 |
| 最近记录: |