From a5ea6dc0356f106b9c5340e7d8ddac5c4461a0a2 Mon Sep 17 00:00:00 2001 From: Dan Head Date: Fri, 17 Feb 2017 12:15:37 +0000 Subject: [PATCH] Put commit hash and build time on admin page --- Dockerfile | 2 ++ setup.js | 24 ++++++++++++++++++++++++ src/routes/admin/Admin.js | 10 ++++++++++ src/routes/admin/index.js | 9 +++++++++ 4 files changed, 45 insertions(+) create mode 100644 setup.js diff --git a/Dockerfile b/Dockerfile index 7d4dcb7..5ce6670 100644 --- a/Dockerfile +++ b/Dockerfile @@ -32,6 +32,8 @@ RUN curl https://api.rollbar.com/api/1/deploy/ \ -F revision=$(git log -n 1 --pretty=format:"%H") \ -F local_username="$(git log -n 1 --pretty=format:"%an")" +RUN node setup.js + WORKDIR /usr/src/app/build CMD [ "node", "server.js" ] diff --git a/setup.js b/setup.js new file mode 100644 index 0000000..c3cecb9 --- /dev/null +++ b/setup.js @@ -0,0 +1,24 @@ +/* eslint-disable no-console */ +const exec = require('child_process').exec; +const fs = require('fs'); + +const config = { + build: {}, +}; + +function writeConfigFile() { + fs.writeFile('build/public/config.json', JSON.stringify(config), (err) => { + if (err) { + return console.error(err); + } + return console.log('Config file saved'); + }); +} + +exec('git log -n 1 --pretty=format:"%H"', (err, stdout) => { + if (stdout) { + config.build.hash = stdout; + config.build.time = new Date(); + writeConfigFile(); + } +}); diff --git a/src/routes/admin/Admin.js b/src/routes/admin/Admin.js index 501c386..09e2e4a 100644 --- a/src/routes/admin/Admin.js +++ b/src/routes/admin/Admin.js @@ -22,6 +22,10 @@ class Admin extends React.Component { name: PropTypes.string, total: PropTypes.integer, })).isRequired, + build: PropTypes.shape({ + hash: PropTypes.string, + time: PropTypes.string, + }), }; render() { @@ -50,6 +54,12 @@ class Admin extends React.Component { ))} +
+ Build hash: {this.props.build.hash} +
+
+ Build time: {this.props.build.time} +
); diff --git a/src/routes/admin/index.js b/src/routes/admin/index.js index d3bbacc..c573a9a 100644 --- a/src/routes/admin/index.js +++ b/src/routes/admin/index.js @@ -1,6 +1,7 @@ import React from 'react'; import Layout from '../../components/Layout'; import fetchQL from '../../core/fetchQL'; +import fetch from '../../core/fetch'; import { starters, mains } from '../../config'; const title = 'Admin'; @@ -11,7 +12,14 @@ export default { async action() { const resp = await fetchQL('{getAllPersons{key,firstname,lastname,email,password,completed,starter,main}}'); + const configResp = await fetch('/config.json', { + headers: { + Accept: 'application/json', + 'Content-Type': 'application/json', + }, + }); const { data } = await resp.json(); + const config = await configResp.json(); const people = data.getAllPersons || []; const food = { @@ -37,6 +45,7 @@ export default { people={people} starters={food.starters} mains={food.mains} + build={config.build} />, }; },