【问题标题】:How to use dawidd6/action-download-artifact with pull_request trigger如何使用 dawidd6/action-download-artifact 和 pull_request 触发器
【发布时间】:2022-04-28 06:54:52
【问题描述】:
这是关于 github 工作流操作 dawidd6/action-download-artifact 的问题。
https://github.com/dawidd6/action-download-artifact没有讨论区,所以在这个论坛问这个问题。
这就是我希望在我的 GitHub 存储库中使用此工作流程的方式:
- 已创建拉取请求。
- 这会触发一个工作流 - 我们称之为“构建工作流” - 构建整个存储库并上传构建工件。
- 然后应该启动另一个工作流 - 我们称之为“测试工作流” - 应该使用 action-download-artifact 下载构建工件并运行一些其他操作。
现在如果我将“测试工作流程”的触发器设置为 pull_request,那么如何让它等待相应的“构建工作流程”完成?我要指定 run_id 吗?
现在我使用“workflow_run”作为运行 WF 的触发器。但是,当创建 PR 时,它不会将“测试工作流程”显示为 PR 的检查之一。你能帮我找出使用下载工件操作的正确方法吗?
【问题讨论】:
标签:
download
dependencies
github-actions
pull-request
artifact
【解决方案1】:
您可以编写两个工作流程,其中第一个在拉取请求打开或编辑时构建,第二个在拉取请求关闭和合并时执行测试。 HEAD 提交 SHA 可用于识别两个工作流之间的工件名称。
我将稍微改一下你的要求。
- 在打开或编辑拉取请求(例如添加新提交)时构建所有内容并上传工件。
- 下载工件并在拉取请求关闭并合并时对其进行测试。
这里有两个示例工作流程可以实现这一目标。您将需要创建一个令牌以在工作流之间共享工件(请参阅下面的 secrets.GITHUB_TOKEN)。
构建.yml
name: Build
on:
pull_request:
jobs:
Build:
steps:
- name: Environment Variables
shell: bash
run: |
ARTIFACTS_SHA=$(git rev-parse HEAD)
BUILD_ARTIFACTS=BuildArtifacts_${ARTIFACTS_SHA}
echo "ARTIFACTS_DIR=$ARTIFACTS_DIR" >> $GITHUB_ENV
- name: Build
run: make
- name: Capture Artifacts
uses: actions/upload-artifact@2
with:
name: Artifacts_${{ env.ARTIFACTS_SHA }}
path: path/to/artifact/
Test.yml
name: Test
on:
pull_request:
types: [closed]
jobs:
Test:
steps:
- name: Environment Variables
shell: bash
run: |
ARTIFACTS_SHA=$(git rev-parse HEAD)
BUILD_ARTIFACTS=BuildArtifacts_${ARTIFACTS_SHA}
echo "ARTIFACTS_DIR=$ARTIFACTS_DIR" >> $GITHUB_ENV
- name: Download Artifacts
uses: dawidd6/action-download-artifact@v2
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
workflow: Build.yml
name: ${{ env.BUILD_ARTIFACTS }}