From 840a5cf1207ed78df3302211a23d369dd3c12b89 Mon Sep 17 00:00:00 2001 From: John Firebaugh Date: Mon, 2 Jul 2018 14:09:58 -0700 Subject: [build] Record binary size via GitHub check --- scripts/check_binary_size.js | 47 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100755 scripts/check_binary_size.js (limited to 'scripts/check_binary_size.js') diff --git a/scripts/check_binary_size.js b/scripts/check_binary_size.js new file mode 100755 index 0000000000..70ddbc7e0e --- /dev/null +++ b/scripts/check_binary_size.js @@ -0,0 +1,47 @@ +#!/usr/bin/env node + +const jwt = require('jsonwebtoken'); +const github = require('@octokit/rest')(); +const prettyBytes = require('pretty-bytes'); +const fs = require('fs'); + +const SIZE_CHECK_APP_ID = 14028; +const SIZE_CHECK_APP_INSTALLATION_ID = 229425; + +const file = process.argv[2]; +const label = process.argv[3]; +const {size} = fs.statSync(file); + +process.on('unhandledRejection', error => { + console.log(error); + process.exit(1) +}); + +const key = Buffer.from(process.env['SIZE_CHECK_APP_PRIVATE_KEY'], 'base64').toString('binary'); +const payload = { + exp: Math.floor(Date.now() / 1000) + 60, + iat: Math.floor(Date.now() / 1000), + iss: SIZE_CHECK_APP_ID +}; + +const token = jwt.sign(payload, key, {algorithm: 'RS256'}); +github.authenticate({type: 'app', token}); + +github.apps.createInstallationToken({installation_id: SIZE_CHECK_APP_INSTALLATION_ID}) + .then(({data}) => { + github.authenticate({type: 'token', token: data.token}); + return github.checks.create({ + owner: 'mapbox', + repo: 'mapbox-gl-native', + name: `Size - ${label}`, + head_branch: process.env['CIRCLE_BRANCH'], + head_sha: process.env['CIRCLE_SHA1'], + status: 'completed', + conclusion: 'success', + completed_at: new Date().toISOString(), + output: { + title: prettyBytes(size), + summary: `\`${file}\` is ${size} bytes (${prettyBytes(size)})` + } + }); + }); -- cgit v1.2.1