iT邦幫忙

2025 iThome 鐵人賽

DAY 14
0
自我挑戰組

用 Discord Bot 玩轉 DevOps系列 第 14

用BOT查看可用 workflows

  • 分享至 

  • xImage
  •  

當一個專案裡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查看成果
https://ithelp.ithome.com.tw/upload/images/20250927/201693290IOuqUBHae.png


上一篇
用BOT查看指定 workflow 的狀態
下一篇
安全性議題 : 「用 GitHub Secrets 管理 Token」
系列文
用 Discord Bot 玩轉 DevOps17
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言