Read HEAD commit and use as releases value

This commit is contained in:
Luke "Jared" Bennett 2017-05-19 21:13:57 +01:00
parent 9d29eb7e29
commit fa04b50b3c
No known key found for this signature in database
GPG Key ID: 402ED51FB5D306C2
5 changed files with 51 additions and 19 deletions

View File

@ -6,6 +6,10 @@ const index = function index() {
currentUserId: gon.current_user_id,
whitelistUrls: [gon.gitlab_url],
isProduction: process.env.NODE_ENV,
release: process.env.HEAD_COMMIT_SHA,
tags: {
HEAD_COMMIT_SHA: process.env.HEAD_COMMIT_SHA,
},
});
return RavenConfig;

View File

@ -57,6 +57,8 @@ const RavenConfig = {
configure() {
Raven.config(this.options.sentryDsn, {
release: this.options.release,
tags: this.options.tags,
whitelistUrls: this.options.whitelistUrls,
environment: this.options.isProduction ? 'production' : 'development',
ignoreErrors: this.IGNORE_ERRORS,

View File

@ -2,6 +2,7 @@
var fs = require('fs');
var path = require('path');
var execSync = require('child_process').execSync;
var webpack = require('webpack');
var StatsPlugin = require('stats-webpack-plugin');
var CompressionPlugin = require('compression-webpack-plugin');
@ -197,7 +198,33 @@ var config = {
}
}
function getHeadCommitSHA() {
// Simple SHA validation.
// Match 5-40 numbers or lowercase letters between a and f.
const SHA_REGEX = /^\b[0-9a-f]{5,40}\b$/;
let stdout;
try {
stdout = execSync('git rev-parse HEAD');
} catch (error) {
throw error;
}
const headCommitSHA = stdout.trim();
if (!SHA_REGEX.test(headCommitSHA)) {
throw new Error(`\`git rev-parse HEAD\` output is not a valid SHA1: ${headCommitSHA}`);
}
return headCommitSHA;
}
if (IS_PRODUCTION) {
const processEnv = {
NODE_ENV: JSON.stringify('production'),
};
processEnv.HEAD_COMMIT_SHA = getHeadCommitSHA();
config.devtool = 'source-map';
config.plugins.push(
new webpack.NoEmitOnErrorsPlugin(),
@ -209,7 +236,7 @@ if (IS_PRODUCTION) {
sourceMap: true
}),
new webpack.DefinePlugin({
'process.env': { NODE_ENV: JSON.stringify('production') }
'process.env': processEnv,
}),
new CompressionPlugin({
asset: '[path].gz[query]',

View File

@ -2,18 +2,14 @@ import RavenConfig from '~/raven/raven_config';
import index from '~/raven/index';
describe('RavenConfig options', () => {
let sentryDsn;
let currentUserId;
let gitlabUrl;
let isProduction;
const sentryDsn = 'sentryDsn';
const currentUserId = 'currentUserId';
const gitlabUrl = 'gitlabUrl';
const isProduction = 'isProduction';
const headCommitSHA = 'headCommitSHA';
let indexReturnValue;
beforeEach(() => {
sentryDsn = 'sentryDsn';
currentUserId = 'currentUserId';
gitlabUrl = 'gitlabUrl';
isProduction = 'isProduction';
window.gon = {
sentry_dsn: sentryDsn,
current_user_id: currentUserId,
@ -21,6 +17,7 @@ describe('RavenConfig options', () => {
};
process.env.NODE_ENV = isProduction;
process.env.HEAD_COMMIT_SHA = headCommitSHA;
spyOn(RavenConfig, 'init');
@ -33,6 +30,10 @@ describe('RavenConfig options', () => {
currentUserId,
whitelistUrls: [gitlabUrl],
isProduction,
release: headCommitSHA,
tags: {
HEAD_COMMIT_SHA: headCommitSHA,
},
});
});

View File

@ -25,17 +25,9 @@ describe('RavenConfig', () => {
});
describe('init', () => {
let options;
const options = {};
beforeEach(() => {
options = {
sentryDsn: '//sentryDsn',
ravenAssetUrl: '//ravenAssetUrl',
currentUserId: 1,
whitelistUrls: ['//gitlabUrl'],
isProduction: true,
};
spyOn(RavenConfig, 'configure');
spyOn(RavenConfig, 'bindRavenErrors');
spyOn(RavenConfig, 'setUser');
@ -84,6 +76,10 @@ describe('RavenConfig', () => {
sentryDsn: '//sentryDsn',
whitelistUrls: ['//gitlabUrl'],
isProduction: true,
release: 'release',
tags: {
HEAD_COMMIT_SHA: 'headCommitSha',
},
};
ravenConfig = jasmine.createSpyObj('ravenConfig', ['shouldSendSample']);
@ -100,6 +96,8 @@ describe('RavenConfig', () => {
it('should call Raven.config', () => {
expect(Raven.config).toHaveBeenCalledWith(options.sentryDsn, {
release: options.release,
tags: options.tags,
whitelistUrls: options.whitelistUrls,
environment: 'production',
ignoreErrors: ravenConfig.IGNORE_ERRORS,