【问题标题】:How do I view the logs of a run?如何查看运行日志?
【发布时间】:2022-08-05 09:06:36
【问题描述】:
根据GitHub CLI docs for gh run view,我应该可以使用以下命令查询运行日志:
gh run view --log <run-id>
例如,要在 vitejs/vite 存储库中获取 run 2796702959 的完整日志:
gh run view -R vitejs/vite --log 2796702959
但是该命令什么也不返回。启用调试不会显示任何错误:
GH_DEBUG=true gh run view -R vitejs/vite --log 2796702959
⣾* Request at 2022-08-04 19:55:51.795659 -0500 CDT m=+0.012528935
* Request to https://api.github.com/repos/vitejs/vite/actions/runs/2796702959
⣻* Request took 283.249521ms
* Request at 2022-08-04 19:55:52.08233 -0500 CDT m=+0.299195200
* Request to https://api.github.com/repos/vitejs/vite/actions/runs/2796702959/jobs
⣾%
我如何实际获取运行日志?
标签:
github
github-api
github-cli
【解决方案1】:
从gh v2.11.3 开始,该特定命令有问题(cli/cli#5011)。
一种解决方法是使用 Bash 脚本通过 gh api 直接调用 API:
#!/usr/bin/env bash -e
REPO_NAME=${1?Missing repo name argument} # example: vitejs/vite
JOB_ID=${2?Missing job ID argument}
ZIPFILE=$(mktemp)
TMPDIR=$(mktemp -d)
Color_Off='\033[0m'
BBlack='\033[1;30m'
On_Cyan='\033[46m'
function downloadLogs() {
echo "downloading logs for job $JOB_ID ..."
gh api /repos/$REPO_NAME/actions/runs/$JOB_ID/logs > $ZIPFILE
echo "unzipping logs ..."
unzip -d $TMPDIR $ZIPFILE
rm -f $ZIPFILE
}
function dumpLogs() {
find $TMPDIR -type f -maxdepth 1 -print0 |
while IFS= read -r -d $'\0' file; do
echo
basefile=$(basename "$file")
echo -e "${BBlack}${On_Cyan} $basefile ${Color_Off}"
echo
cat "$file"
done
}
downloadLogs
dumpLogs
用法:
./gh-logs.sh <repo-name> <job-id>
例子:
./gh-logs.sh vitejs/vite 2796702959 | less -R