如何提取GitHub Actions工作流日志中的制品下载URL并存储为变量用于Teams通知
提取GitHub Actions制品下载URL并复用的两种方法
方法一:利用upload-artifact官方输出(推荐,稳定可靠)
actions/upload-artifact@v4本身就提供了制品下载URL的输出变量,完全不用手动解析日志,步骤如下:
- 你的上传步骤已经设置了
id: upload-artifact,直接在后续步骤里读取它的输出即可。如果要把URL存入环境变量供Teams通知使用,添加这样的步骤:
- name: 保存制品下载URL到环境变量 if: ${{ !cancelled() }} run: | echo "ARTIFACT_DOWNLOAD_URL=${{ steps.upload-artifact.outputs.download-url }}" >> $GITHUB_ENV
- 后续的Teams通知步骤里,直接用
${{ env.ARTIFACT_DOWNLOAD_URL }}调用这个变量就行。
方法二:解析日志提取URL(不推荐,日志格式可能变动)
如果一定要从日志里提取,可通过shell命令过滤出目标行再提取地址:
- name: 从日志提取制品URL并保存 if: ${{ !cancelled() }} run: | # 过滤出包含"Artifact download URL:"的日志行,提取URL部分 ARTIFACT_URL=$(grep "Artifact download URL:" $GITHUB_WORKSPACE/actions-runner/_diag/Worker_*.log | sed 's/Artifact download URL: //') echo "ARTIFACT_DOWNLOAD_URL=$ARTIFACT_URL" >> $GITHUB_ENV
注意:日志路径可能因runner环境不同有所变化,而且这种方法完全依赖日志格式,一旦GitHub调整日志输出就会失效,优先用方法一。
之后在Teams通知步骤里,用${{ env.ARTIFACT_DOWNLOAD_URL }}就能引用这个URL了。
内容的提问来源于stack exchange,提问作者WKOW
相关产品推荐
相关产品推荐

