diff --git a/Dockerfile b/Dockerfile index e4aeb9f4f51..90944d76e83 100644 --- a/Dockerfile +++ b/Dockerfile @@ -23,6 +23,13 @@ RUN ln -s /srv/node/node_modules RUN npm run build +RUN GITREF=$(git rev-parse HEAD) \ +GITTAG=$(git name-rev --tags --name-only $GITREF) \ +SOURCE='https://github.com/mozilla/addons-frontend' && \ +echo "{\"source\": \"$SOURCE\", \ +\"version\": \"$GITTAG\", \ +\"commit\": \"$GITREF\"}" > version.json + ENV SERVER_HOST 0.0.0.0 ENV SERVER_PORT 4000 diff --git a/src/core/server/base.js b/src/core/server/base.js index 7e76e339803..34accdebd82 100644 --- a/src/core/server/base.js +++ b/src/core/server/base.js @@ -23,6 +23,7 @@ import log from 'core/logger'; const env = config.util.getEnv('NODE_ENV'); +const version = path.join(config.get('basePath'), 'version.json'); const isDeployed = config.get('isDeployed'); const isDevelopment = config.get('isDevelopment'); @@ -65,6 +66,18 @@ function baseServer(routes, createStore, { appInstanceName = appName } = {}) { app.use(Express.static(path.join(config.get('basePath'), 'dist'))); + // Return version information as json + app.get('/__version__', (req, res) => { + fs.stat(version, (err) => { + if (err) { + res.sendStatus(415); + } else { + res.setHeader('Content-Type', 'application/json'); + fs.createReadStream(version).pipe(res); + } + }); + }); + // Return 200 for csp reports - this will need to be overridden when deployed. app.post('/__cspreport__', (req, res) => res.status(200).end('ok'));