| const fetch = require('node-fetch'); |
| |
| const WAKEUP_URL = 'https://apache-incubator-echarts-bot-1.glitch.me/probot'; |
| |
| (async function() { |
| let isWorking = true; |
| let err; |
| try { |
| const body = await fetch(WAKEUP_URL, { |
| headers: { |
| 'Accept': 'text/html', |
| 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36' |
| } |
| }).then(res => res.text()); |
| if (body.indexOf('Welcome to') === -1) { |
| isWorking = false; |
| console.log('Response body:\n', body); |
| } |
| } catch (e) { |
| err = e; |
| isWorking = false; |
| } finally { |
| if (isWorking) { |
| return console.log('✨ bot is now working~'); |
| } |
| const errLog = '💤 bot may not be working...'; |
| console.error(errLog); |
| if (await isNotificationNeeded()) { |
| throw err || new Error(errLog); |
| } |
| } |
| })(); |
| |
| async function isNotificationNeeded() { |
| const failedActionRuns = await fetch('https://api.github.com/repos/apache/echarts-bot/actions/workflows/8490751/runs?status=failure&per_page=1') |
| .then(res => res.json()); |
| const latestFailedRun = failedActionRuns.workflow_runs[0]; |
| if (!latestFailedRun) { |
| return true |
| } |
| const lastFailedTs = Date.parse(latestFailedRun.run_started_at); |
| // send notification when the failure last for one hour and more |
| return Date.now() - lastFailedTs >= 60 * 60 * 1e3; |
| } |