當一個專案裡workflows 數量越來越多,可能包含測試、建置、部署、甚至資料處理等不同流程,為了要快速知道有哪些可以使用,因此我希望可以在聊天工具裡輸入指令,就能即時列出目前專案中所有可用的 workflows
撰寫程式碼
def format_workflow_runs(workflow_runs, workflow_filter=None):
"""格式化 workflow 運行資訊"""
if not workflow_runs:
return "📭 沒有找到 workflow 運行記錄"
message = "🚀 **GitHub Actions Pipeline 狀態**\n\n"
for i, run in enumerate(workflow_runs[:3]):
status_emoji = {
'completed': '✅' if run['conclusion'] == 'success' else '❌',
'in_progress': '🔄',
'queued': '⏳',
'pending': '⏳',
'action_required': '⚠️',
'cancelled': '⏹️'
}
conclusion_map = {
'success': '成功',
'failure': '失敗',
'cancelled': '已取消',
'skipped': '已跳過',
'timed_out': '超時',
None: '進行中'
}
emoji = status_emoji.get(run['status'], '❓')
conclusion = conclusion_map.get(run['conclusion'], '未知')
created_at = datetime.fromisoformat(run['created_at'].replace('Z', '+00:00'))
formatted_time = created_at.strftime("%m/%d %H:%M")
run_duration = ""
if run['status'] == 'completed' and run['updated_at']:
updated_at = datetime.fromisoformat(run['updated_at'].replace('Z', '+00:00'))
duration = updated_at - created_at
run_duration = f"⏱️ {duration.total_seconds():.0f}秒"
message += (
f"{emoji} **{run['name']}**\n"
f" 📋 狀態: {conclusion}\n"
f" 🕒 時間: {formatted_time}\n"
f" 🔢 運行ID: #{run['run_number']}\n"
f" 🎯 分支: {run['head_branch']}\n"
f" 📁 檔案: `{run['path'].split('/')[-1]}`\n"
f" {run_duration}\n"
f" 🔗 [查看詳情]({run['html_url']})\n\n"
)
return message
回到discord查看成果