如何使用GitHub Actions在PR中添加评论

4
在GitHub API中,有一个API用于创建问题评论。我希望在GitHub Actions CI/CD管道中使用它。
我创建了工作流程。
name: Workflow

on:
  push:
    branches:
    - main
  pull_request:

jobs:
  test:
    name: Test
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2

      - name: Run jest coverage and log the result to GitHub summary
        run: |
          npm run test-coverage >> $GITHUB_STEP_SUMMARY
          echo "UNITTESTCOVERAGE=$GITHUB_STEP_SUMMARY" >> $GITHUB_ENV
          echo "" >> $GITHUB_STEP_SUMMARY

      - name: Post jest coverage comments
        env:
          PR_NUMBER: ${{ github.event.pull_request.number }}
          REPO: ${{ github.repository }}
          SUMMARY_URL: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}
        run: |
          curl \
            -X POST \
            -H "Accept: application/vnd.github.v3+json" \
            -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
            https://api.github.com/repos/$REPO/issues/$PR_NUMBER/comments \
            -d '{"body":"# Job Summary\n'$SUMMARY_URL'\n'$UNITTESTCOVERAGE'\n"}'

  deploy:
    ...

GitHub机器人不会展示Jest测试覆盖率结果,而是添加了评论。
Job Summary
...

/home/runner/work/_temp/_runner_file_commands/step_summary_d0****01-f**9-4**7-b**7-f0******dc3f

如何获取实际结果?

更新1

我移除了不相关的步骤以使其更加清晰。

回应

Response from GitHub api


更新2

我设置了jest --coverage以创建文本格式的覆盖率报告(和其他格式,这里不重要),我想创建一个评论来显示文本格式的报告。

package.json中,我添加了npm run test-coverage来运行Jest覆盖率报告。因此,npm run test-coverage将在终端中打印结果。

我使用了npm run test-coverage >> $GITHUB_STEP_SUMMARY将结果重定向到GitHub步骤摘要,这样我就可以在GitHub步骤摘要中看到覆盖率报告。

我想使用GitHub API创建一条评论,在PR中显示覆盖率报告。我使用echo "UNITTESTCOVERAGE=$GITHUB_STEP_SUMMARY" >> $GITHUB_ENV设置环境变量UNITTESTCOVERAGE$GITHUB_STEP_SUMMARY,并希望UNITTESTCOVERAGE可以获取覆盖率报告。

然而,步骤发布 jest 覆盖率评论无法获取覆盖率报告。GitHub API 创建的评论显示了一个文件/目录路径,而不是报告。如何通过 GitHub API 将覆盖率报告添加到评论中?

请展示最后一次运行步骤的初始化方式(您应该看到传递的变量值),以及完整的日志。此外,请删除不相关的步骤(例如,lint、步骤摘要)。 - rethab
你也可以尝试使用已经为你调用API的操作(示例)来自Github Marketplace,这可能已经处理了许多不同的情况。 - GuiFalourd
@rethab 我发现我发布了旧的结果。我已经更新了帖子,添加了截图并删除了无关部分。 - obelisk0114
我不理解你的问题。请查看https://stackoverflow.com/help/how-to-ask并创建一个最小化的可复现示例(这可能意味着您需要从头开始创建一个新的工作流程)。此外,请不要粘贴屏幕截图,而是复制/粘贴文本,因为这样更容易在SO上搜索问题。 - rethab
@rethab 我已经更新了帖子并添加了更多的解释。这个工作流是最小化的复制,其他步骤已经被删除。 - obelisk0114
1个回答

3
环境变量$GITHUB_STEP_SUMMARY是一个文件名。
你的代码执行以下操作:
  • npm run test-coverage >> $GITHUB_STEP_SUMMARY
    • 将覆盖报告写入步骤摘要文件
  • echo "UNITTESTCOVERAGE=$GITHUB_STEP_SUMMARY" >> $GITHUB_ENV
    • 将环境变量UNITTESTCOVERAGE设置为与GITHUB_STEP_SUMMARY相同(一个文件名)
  • echo "" >> $GITHUB_STEP_SUMMARY
    • 在步骤摘要后追加空行
然而,你可能想要做的是将文件内容设置为新的环境变量值并把它赋值给步骤摘要环境变量。可以使用以下命令: echo "UNITTESTCOVERAGE=$(cat $GITHUB_STEP_SUMMARY)" >> $GITHUB_ENV

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接