mirror of
https://github.com/TryGhost/Ghost.git
synced 2025-01-27 22:49:56 -05:00
Updated Sentry env to use PRO_ENV when available (#19441)
refs [ARCH-33](https://linear.app/tryghost/issue/ARCH-33/fix-sentry-environment) To ensure that we are correctly identifying the environment that data is being sent to Sentry from, we can use the `PRO_ENV` environment variable if it is available. This will be set to `production` in production and `staging` in staging. If `PRO_ENV` is not available, we will fall back to retrieving the environment from config (`env`)
This commit is contained in:
parent
1fa2a11cbc
commit
1263cf148e
4 changed files with 94 additions and 2 deletions
|
@ -19,7 +19,13 @@ module.exports = function getSiteProperties() {
|
||||||
|
|
||||||
if (config.get('client_sentry') && !config.get('client_sentry').disabled) {
|
if (config.get('client_sentry') && !config.get('client_sentry').disabled) {
|
||||||
siteProperties.sentry_dsn = config.get('client_sentry').dsn;
|
siteProperties.sentry_dsn = config.get('client_sentry').dsn;
|
||||||
siteProperties.sentry_env = config.get('env');
|
|
||||||
|
let environment = config.get('PRO_ENV');
|
||||||
|
if (!environment) {
|
||||||
|
environment = config.get('env');
|
||||||
|
}
|
||||||
|
|
||||||
|
siteProperties.sentry_env = environment;
|
||||||
}
|
}
|
||||||
|
|
||||||
return siteProperties;
|
return siteProperties;
|
||||||
|
|
|
@ -60,7 +60,12 @@ const beforeSend = function (event, hint) {
|
||||||
if (sentryConfig && !sentryConfig.disabled) {
|
if (sentryConfig && !sentryConfig.disabled) {
|
||||||
const Sentry = require('@sentry/node');
|
const Sentry = require('@sentry/node');
|
||||||
const version = require('@tryghost/version').full;
|
const version = require('@tryghost/version').full;
|
||||||
const environment = config.get('env');
|
|
||||||
|
let environment = config.get('PRO_ENV');
|
||||||
|
if (!environment) {
|
||||||
|
environment = config.get('env');
|
||||||
|
}
|
||||||
|
|
||||||
const sentryInitConfig = {
|
const sentryInitConfig = {
|
||||||
dsn: sentryConfig.dsn,
|
dsn: sentryConfig.dsn,
|
||||||
release: 'ghost@' + version,
|
release: 'ghost@' + version,
|
||||||
|
|
|
@ -0,0 +1,66 @@
|
||||||
|
const assert = require('assert/strict');
|
||||||
|
const configUtils = require('../../../../utils/configUtils');
|
||||||
|
const getSiteProperties = require('../../../../../core/server/services/public-config/site');
|
||||||
|
|
||||||
|
describe('Public-config Service', function () {
|
||||||
|
describe('Site Properties', function () {
|
||||||
|
describe('Sentry', function () {
|
||||||
|
const fakeDSN = 'https://aaabbbccc000111222333444555667@sentry.io/1234567';
|
||||||
|
|
||||||
|
afterEach(async function () {
|
||||||
|
await configUtils.restore();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should not include sentry properties if sentry disabled via config', function () {
|
||||||
|
configUtils.set({
|
||||||
|
client_sentry: {
|
||||||
|
disabled: true
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const siteProperties = getSiteProperties();
|
||||||
|
|
||||||
|
assert.equal(siteProperties.sentry_dsn, undefined);
|
||||||
|
assert.equal(siteProperties.sentry_env, undefined);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should not include sentry properties if sentry not present in config', function () {
|
||||||
|
const siteProperties = getSiteProperties();
|
||||||
|
|
||||||
|
assert.equal(siteProperties.sentry_dsn, undefined);
|
||||||
|
assert.equal(siteProperties.sentry_env, undefined);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should include sentry properties if sentry not disabled in config', function () {
|
||||||
|
configUtils.set({
|
||||||
|
client_sentry: {
|
||||||
|
disabled: false,
|
||||||
|
dsn: fakeDSN
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const siteProperties = getSiteProperties();
|
||||||
|
|
||||||
|
assert.equal(siteProperties.sentry_dsn, fakeDSN);
|
||||||
|
assert.equal(siteProperties.sentry_env, 'testing'); // testing is the default env
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should use PRO_ENV env var for sentry_env property if in config', function () {
|
||||||
|
const env = 'staging';
|
||||||
|
|
||||||
|
configUtils.set({
|
||||||
|
client_sentry: {
|
||||||
|
disabled: false,
|
||||||
|
dsn: fakeDSN
|
||||||
|
},
|
||||||
|
PRO_ENV: env
|
||||||
|
});
|
||||||
|
|
||||||
|
const siteProperties = getSiteProperties();
|
||||||
|
|
||||||
|
assert.equal(siteProperties.sentry_dsn, fakeDSN);
|
||||||
|
assert.equal(siteProperties.sentry_env, env);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
|
@ -51,6 +51,21 @@ describe('UNIT: sentry', function () {
|
||||||
assert.equal(initArgs[0].environment, 'testing', 'should be the testing env');
|
assert.equal(initArgs[0].environment, 'testing', 'should be the testing env');
|
||||||
assert.ok(initArgs[0].hasOwnProperty('beforeSend'), 'should have a beforeSend function');
|
assert.ok(initArgs[0].hasOwnProperty('beforeSend'), 'should have a beforeSend function');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('initialises sentry with the correct environment', function () {
|
||||||
|
const env = 'staging';
|
||||||
|
|
||||||
|
configUtils.set({
|
||||||
|
PRO_ENV: env
|
||||||
|
});
|
||||||
|
|
||||||
|
delete require.cache[require.resolve('../../../core/shared/sentry')];
|
||||||
|
require('../../../core/shared/sentry');
|
||||||
|
|
||||||
|
const initArgs = Sentry.init.getCall(1).args;
|
||||||
|
|
||||||
|
assert.equal(initArgs[0].environment, env, 'should be the correct env');
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('beforeSend', function () {
|
describe('beforeSend', function () {
|
||||||
|
|
Loading…
Add table
Reference in a new issue