טיפ גיטהאב: איך להדפיס את הלוג של ההרצה האחרונה דרך שורת הפקודה
לגיטהאב יש כלי שורת פקודה שנקרא gh שהוא סוג של קסם, כי הוא מאפשר לעשות כל דבר שאפשר לעשות דרך האתר, משורת הפקודה ועם פלט JSON שמאוד קל לפענוח. בעבר כתבתי עליו בפוסט איך ליצור Pull Request משורת הפקודה והיום הוא חוזר בשביל לענות על עוד שאלה מתלמיד - איך להדפיס את הלוג של ההרצה האחרונה של Github Action משורת הפקודה? ופה עלינו בסך הכל לשלב שתי פקודות.
הפקודה הראשונה שצריך להכיר היא gh run list
. כשאני מריץ את הפקודה מתיקיה עם ריפוזיטורי, היא מדפיסה למסך את כל ההרצות של ה Actions מהריפוזיטורי. בעזרת המתג --json
אני יכול לבקש רק פרטים מסוימים על כל הרצה ובעזרת -L
אני מגביל את מספר התוצאות. ככה זה נראה עם ריפו שלי בהגבלה ל-3 הרצות אחרונות:
$ PAGER= gh run list --json name,databaseId,startedAt -L 3
[
{
"databaseId": 4289773851,
"name": "publish-daily-post-to-telegram",
"startedAt": "2023-02-28T05:11:50Z"
},
{
"databaseId": 4279130715,
"name": "publish-daily-post-to-telegram",
"startedAt": "2023-02-27T05:11:47Z"
},
{
"databaseId": 4273470712,
"name": "publish-daily-post-to-telegram",
"startedAt": "2023-02-26T05:10:54Z"
}
]
הפקודה השניה שצריך להכיר היא gh run view
שמקבלת מספר ריצה ומדפיסה פרטים עליה. המתג --log
יגרום ל view להציג את הלוג המלא של ההרצה. ככה זה נראה אצלי עם ההרצה העדכנית ביותר:
$ PAGER= gh run view --log 4289773851 | head
publish Set up job 2023-02-28T05:12:00.4187561Z Current runner version: '2.301.1'
publish Set up job 2023-02-28T05:12:00.4215234Z ##[group]Operating System
publish Set up job 2023-02-28T05:12:00.4215881Z Ubuntu
publish Set up job 2023-02-28T05:12:00.4216132Z 22.04.2
publish Set up job 2023-02-28T05:12:00.4216414Z LTS
publish Set up job 2023-02-28T05:12:00.4216728Z ##[endgroup]
publish Set up job 2023-02-28T05:12:00.4217052Z ##[group]Runner Image
publish Set up job 2023-02-28T05:12:00.4217433Z Image: ubuntu-22.04
publish Set up job 2023-02-28T05:12:00.4217721Z Version: 20230219.1
publish Set up job 2023-02-28T05:12:00.4218252Z Included Software: https://github.com/actions/runner-images/blob/ubuntu22/20230219.1/images/linux/Ubuntu2204-Readme.md
וזה כמובן ממשיך לכל הלוג.
שילוב של שתי הפקודות יאפשר לי בשורה אחת לקבל את הלוג המלא של ההרצה האחרונה של Action בריפו:
$ PAGER= gh run view --log $(gh run list --json databaseId -q '.[].databaseId' -L 1)
נ.ב. המתג -q
מקבל שאילתה בפורמט של jq. בזכותו פלט הפקודה היה רק מזהה הריצה במקום ה JSON המלא.