Read HEAD commit and use as releases value
This commit is contained in:
parent
9d29eb7e29
commit
fa04b50b3c
|
@ -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;
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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]',
|
||||
|
|
|
@ -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,
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
@ -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,
|
||||
|
|
Loading…
Reference in New Issue