如何将 Markdown 页面附加到 GitHub Actions 工作流程运行摘要?

Daa*_*aan 16 github-api github-actions

GitHub Action“dotnet-tests-report”将包含测试结果的 Markdown 页面附加到 Github Action 工作流程运行摘要。这真的很好。工作流程完成后,结果会立即变得清晰。以视觉方式清晰。

它是开源的,但代码很复杂,所以我仍然不知道如何做到这一点。

我想要的是这样的:

  1. 运行一些生成 Markdown 文件的命令行语句
  2. 运行一些“发布”此内容的代码
  3. 将其附加到 Github Actions 中的摘要中
  4. 很高兴我公司的每个人都能看到工作流程附加的结果

GitHub Actions 运行结果截图

riQ*_*iQQ 10

它使用 GitHub API创建检查运行

POST https://api.github.com/repos/{owner}/{repo}/check-runs

创建或更新检查运行时,您可以output在请求正文中指定参数。该操作使用报告参数dotnet-tests-report的文本属性:output

输出对象的属性 描述
title(细绳) 必需的。检查运行的标题。
summary(细绳) 必需的。检查运行的摘要。该参数支持Markdown。
text(细绳) 检查运行的详细信息。该参数支持Markdown。
annotations(对象数组) 将分析中的信息添加到特定代码行。注释在 GitHub 上拉取请求的“检查和文件更改”选项卡中可见。Checks API 将每个 API 请求的注释数量限制为最多 50 个。要创建超过 50 个注释,您必须向更新检查运行端点发出多个请求。每次更新检查运行时,注释都会附加到检查运行已存在的注释列表中。有关如何在 GitHub 上查看注释的详细信息,请参阅“关于状态检查”。有关如何使用此参数的详细信息,请参阅annotations对象描述。
images(对象数组) 将图像添加到 GitHub 拉取请求 UI 中显示的输出。有关详细信息,请参阅images对象描述。

查看操作的代码:https://github.com/zyborg/dotnet-tests-report/blob/237826dc017f02ebf61377af95d1a12f8409a527/action.ps1#L133-L149

$url = "https://api.github.com/repos/$repoFullName/check-runs"
$hdr = @{
    Accept = 'application/vnd.github.antiope-preview+json'
    Authorization = "token $ghToken"
}
$bdy = @{
    name       = $report_name
    head_sha   = $ref
    status     = 'completed'
    conclusion = $conclusion
    output     = @{
        title   = $report_title
        summary = "This run completed at ``$([datetime]::Now)``"
        text    = $reportData
    }
}
Invoke-WebRequest -Headers $hdr $url -Method Post -Body ($bdy | ConvertTo-Json)
Run Code Online (Sandbox Code Playgroud)


Von*_*onC 10

Konrad Pabjan于 2022 年 5 月发布的帖子“通过工作摘要增强 GitHub 操作确实提到:

\n
\n

Actions 用户长期以来一直要求此类功能。
\n操作中用户生成的内容以前仅限于日志和注释。聚合和分组大量信息可能很困难。

\n

注释在突出显示错误和警告等内容时非常重要,但不适合丰富的输出,例如测试摘要或构建报告。

\n

为了解决这些问题,我们\xe2\x80\x99甚至看到用户使用我们的 API(使用作为运行的一部分提供的 API)手动创建检查运行GITHUB_TOKEN,这会导致生产力下降。

\n
\n

(这是riQQ答案所描述的,这不是最优的)

\n
\n

很明显,存在功能差距,迫使用户即兴创作不太理想的解决方案,这就是我们开发工作摘要的原因!

\n
\n

所以:

\n
\n

GitHub Actions 作业摘要允许在每个作业生成的运行摘要上自定义 Markdown 内容

\n

自定义 Markdown 内容可用于各种创意目的,例如:

\n
    \n
  • 聚合并显示测试结果
  • \n
  • 生成报告
  • \n
  • 独立于日志的自定义输出
  • \n
\n

创建摘要

\n

只需将 Markdown 内容输出到我们引入的名为 的新环境变量$GITHUB_STEP_SUMMARY
\n添加到此文件的任何 Markdown 内容都将显示在“操作运行摘要”页面上。
\n那\xe2\x80\x99就是它!

\n
\n
steps:\n  - name: Adding markdown\n    run: echo \xe2\x80\x98### Hello world! :rocket:\xe2\x80\x99 >> $GITHUB_STEP_SUMMARY\n
Run Code Online (Sandbox Code Playgroud)\n

https://github.blog/wp-content/uploads/2022/05/newjobsummary.png

\n

或者,将测试作为 CI 的一部分运行:

\n

作为 CI 的一部分运行测试

\n