iT邦幫忙

2026 iThome 鐵人賽

DAY 30
0
自我挑戰組

30 天養大一個開源專案:baodao-skill 從零開始系列 第 30 篇

【Day 30】第 30 天的實際數字:27 個技能、28 次排程 run 裡 15 次紅燈,tag 停在 v0.8.1

  • 分享至 

  • xImage
  •  

最後一天不寫感想,直接量。下面這支腳本把倉庫現在的技能數、排程 run 的成績和連續綠燈次數印出來,我在 2026-10-07 03:44 KST 實際跑過。

一支腳本量完最後的狀態

import json, urllib.request, urllib.error
from collections import Counter

def get(u):
    try:
        return json.load(urllib.request.urlopen(u, timeout=30))
    except urllib.error.HTTPError as e:
        raise SystemExit(f'GitHub API {e.code}: {e.read().decode()[:100]}')

R = 'https://api.github.com/repos/tahodev/baodao-skill'
items = get(R + '/contents/')
skip = {'.github', 'docs', 'scripts', 'tests'}
skills = [i['name'] for i in items if i['type'] == 'dir' and i['name'] not in skip]
print('技能目錄', len(skills))

runs = get(R + '/actions/runs?event=schedule&per_page=100')['workflow_runs']
runs.sort(key=lambda r: r['created_at'])
print('排程 run', len(runs), dict(Counter(r['conclusion'] for r in runs)))

streak = 0
for r in reversed(runs):
    if r['conclusion'] != 'success':
        break
    streak += 1
print('最近連續綠燈', streak, ',最新', runs[-1]['created_at'], runs[-1]['conclusion'])

2026-10-07 實測輸出:

技能目錄 27
排程 run 28 {'failure': 15, 'success': 13}
最近連續綠燈 4 ,最新 2026-10-06T18:19:21Z success

這支腳本有個假設:頂層目錄除了 .github、docs、scripts、tests 都是技能。目前剛好成立,27 這個數字和 README、CHANGELOG 0.9.0 寫的一致。以後新增別的非技能目錄,這個數字會被灌水。

最後的成績單

項目 數字 來源
技能 27 個 上面腳本,與 0.9.0 的 CHANGELOG 一致
CHANGELOG 版本 21 個,從 0.1.0(9/9)到 0.9.0(10/3) CHANGELOG.md
路線圖 24 項已完成、3 項未完成 docs/roadmap.md
排程 run 28 次,13 綠、15 紅 上面腳本
最近連續綠燈 4 次(10/3 到 10/6 的排程 run) 上面腳本
open issue 0 GitHub API,2026-10-07

15 次紅燈拆開來是 5 次 URL 檢查、10 次 counts 步驟,第 29 天已經逐一對過。最後一次紅燈是 10/2(run #63),之後 0.8.5 修正,連續四次綠燈。

三項到最後都沒做

2026-10-07 03:44 KST 再測一次:tisvcloud.freeway.gov.tw(國道即時路況)、soa.tainan.gov.tw(台南)、data.kcg.gov.tw(高雄)三個網址,curl -m 15 都是 000。連不上就沒辦法實測,所以國道即時路況、台南和高雄的垃圾車,以及圖書館館藏查詢,路線圖上仍然沒打勾。這是環境限制,不是這些來源一定壞了,我只能說從我的環境驗證不了。

一個要承認的落差:tag 停在 v0.8.1

CHANGELOG 寫到 0.9.0,但 GitHub 上的 tag 清單最新是 v0.8.1,而且 Releases 頁只有 v0.4.2 和 v0.1.0 兩筆。也就是 0.8.2 到 0.9.0 這五個版本,使用者在 GitHub 的 Releases 頁看不到,只有 CHANGELOG 看得到。這件事我一直沒補,先把事實記在這裡。

錯誤處理

這支腳本只打 2 次 API,未登入每小時限 60 次。遇到 HTTPError(例如額度用完的 403)會印出狀態碼和訊息就停,不會用不完整的資料算出一個看起來正常的數字。查剩餘額度可以用:

curl -s https://api.github.com/rate_limit | jq -c .resources.core

來源

  • 倉庫:https://github.com/tahodev/baodao-skill
  • CHANGELOG:https://github.com/tahodev/baodao-skill/blob/main/CHANGELOG.md
  • 路線圖:https://github.com/tahodev/baodao-skill/blob/main/docs/roadmap.md
  • 最近一次排程 run(#79):https://github.com/tahodev/baodao-skill/actions/runs/37510399443
  • 全部排程 run:https://github.com/tahodev/baodao-skill/actions?query=event%3Aschedule

上一篇
【Day 29】15 次紅燈拆開來看:10 次是 counts 步驟的基準數太死,5 次是 URL 檢查
系列文
30 天養大一個開源專案:baodao-skill 從零開始 共 30 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言