我有一个大型(约 100 名开发人员)、NX 管理的 Typescript 存储库,其中 github 操作在拉取请求上运行。操作工作流程运行许多步骤,其中主要步骤基本上通过运行
yarn run nx affected --target=build
来编译代码。一切正常。
但是,如果 PR 出现编译错误,开发者很难发现错误。他们需要:
Error: Process completed with exit code 1.
Error:
- 只有现在您才能看到实际的编译错误(请参见下面的屏幕截图)。许多开发人员在这个过程中迷失了方向,尤其是在第 4 步(搜索
Error:
),并且需要帮助。开发者指导只能到此为止...
问题: 在我的工作流程中我可以做些什么来使错误更容易被发现吗?我依稀记得在 Azure Devops 中你可以...
您可以使用 gh 命令直接向拉取请求添加注释。
示例操作文件:
on:
pull_request
jobs:
ci_build:
...
steps:
- name: Build code
run: |
(build command) 2>&1 | tee build.log
- name: Report failures
if: failure()
env:
GH_TOKEN: ${{ github.token }}
PR_ID = ${{ github.event.pull_request.number }}
run: |
tail -n 50 build.log > build_tail.log
gh pr comment ${PR_ID} --body-file build_tail.log
这里修改了构建命令,除了正常输出(转到 GitHub 操作结果)之外,还将所有日志消息放入
build.log
。
后面的步骤仅在失败时运行,并从日志中获取最后 50 行。
gh pr comment
命令用于向拉取请求发布评论。访问 GitHub API 需要 GH_TOKEN,并且从触发事件中获取 PR_ID,以识别构建与哪个拉取请求相关。