forked from github/docs
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ping-staging-apps.js
executable file
·40 lines (32 loc) · 1012 Bytes
/
ping-staging-apps.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#!/usr/bin/env node
import xDotenv from 'dotenv'
import assert from 'assert'
import got from 'got'
import { chain } from 'lodash-es'
import chalk from 'chalk'
import Heroku from 'heroku-client'
// [start-readme]
//
// This script finds all Heroku staging apps and pings them to make sure they're always "warmed" and responsive to requests.
//
// [end-readme]
xDotenv.config()
assert(process.env.HEROKU_API_TOKEN)
const heroku = new Heroku({ token: process.env.HEROKU_API_TOKEN })
main()
async function main() {
const apps = chain(await heroku.get('/apps'))
.orderBy('name')
.value()
async function ping(app) {
// ?warmup param has no effect but makes it easier to find these requests in the logs
const url = `https://${app.name}.herokuapp.com/en?warmup`
try {
const response = await got(url)
console.log(chalk.green(url, response.statusCode))
} catch (error) {
console.log(chalk.red(url, error.response.statusCode))
}
}
Promise.all(apps.map(ping))
}