如何在GitHub Actions中收集uses步骤多行输出并评论PR?
解决方案
要收集quentinguidee/pep8-action@v1的完整多行输出并作为PR评论发布,无需复杂自定义脚本,可通过以下步骤实现:
1. 捕获PEP8检查的完整输出
由于该Action未内置输出参数,可直接通过npx执行它并捕获标准输出,再通过$GITHUB_OUTPUT将结果传递给后续步骤:
- id: pep8-check run: | # 执行PEP8检查并捕获完整结果 PEP8_RESULTS=$(npx quentinguidee/pep8-action@v1) # 将多行结果写入GITHUB_OUTPUT,保留换行格式 echo "results<<EOF" >> $GITHUB_OUTPUT echo "$PEP8_RESULTS" >> $GITHUB_OUTPUT echo "EOF" >> $GITHUB_OUTPUT
2. 将结果作为PR评论发布
使用官方的actions/github-scriptAction,无需自行编写复杂API调用代码,直接将捕获的结果格式化为Markdown评论:
- name: 发布PEP8检查结果到PR uses: actions/github-script@v6 if: steps.pep8-check.outputs.results != '' with: script: | github.rest.issues.createComment({ issue_number: context.issue.number, owner: context.repo.owner, repo: context.repo.repo, body: `### PEP8代码规范检查结果\n\`\`\`\n${{ steps.pep8-check.outputs.results }}\n\`\`\`` })
完整工作流示例
name: PEP8检查并发布PR评论 on: [pull_request] jobs: pep8-lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - id: pep8-check run: | PEP8_RESULTS=$(npx quentinguidee/pep8-action@v1) echo "results<<EOF" >> $GITHUB_OUTPUT echo "$PEP8_RESULTS" >> $GITHUB_OUTPUT echo "EOF" >> $GITHUB_OUTPUT - name: 发布PR评论 uses: actions/github-script@v6 if: steps.pep8-check.outputs.results != '' with: script: | github.rest.issues.createComment({ issue_number: context.issue.number, owner: context.repo.owner, repo: context.repo.repo, body: `### PEP8代码规范检查结果\n\`\`\`\n${{ steps.pep8-check.outputs.results }}\n\`\`\`` })
说明
- 用
npx直接执行Action的npm包,既避免编写冗余自定义脚本,又能完整捕获所有输出行 - 通过
here-doc格式(<<EOF)写入$GITHUB_OUTPUT,确保多行文本的换行符被完整保留 - 添加
if判断,仅当存在PEP8检查结果时才发布评论,避免空评论干扰PR
内容的提问来源于stack exchange,提问作者Kirill Golikov
相关产品推荐
相关产品推荐

