diff --git a/app/utils/sentry.js b/app/utils/sentry.js index 069ca748..0885e78d 100644 --- a/app/utils/sentry.js +++ b/app/utils/sentry.js @@ -7,6 +7,8 @@ import env from "env"; export function initSentry(history: RouterHistory) { Sentry.init({ dsn: env.SENTRY_DSN, + environment: env.ENVIRONMENT, + release: env.RELEASE, integrations: [ new Integrations.BrowserTracing({ routingInstrumentation: Sentry.reactRouterV5Instrumentation(history), diff --git a/package.json b/package.json index b072b27a..682d95f1 100644 --- a/package.json +++ b/package.json @@ -67,9 +67,9 @@ "@babel/preset-flow": "^7.10.4", "@babel/preset-react": "^7.10.4", "@rehooks/window-scroll-position": "^1.0.1", - "@sentry/node": "^5.23.0", - "@sentry/react": "^6.0.1", - "@sentry/tracing": "^6.0.1", + "@sentry/node": "^6.1.0", + "@sentry/react": "^6.1.0", + "@sentry/tracing": "^6.1.0", "@tippy.js/react": "^2.2.2", "@tommoor/remove-markdown": "0.3.1", "autotrack": "^2.4.1", @@ -212,4 +212,4 @@ "js-yaml": "^3.13.1" }, "version": "0.52.0" -} +} \ No newline at end of file diff --git a/server/app.js b/server/app.js index c4a63669..8f76bac4 100644 --- a/server/app.js +++ b/server/app.js @@ -114,10 +114,11 @@ if (isProduction) { // catch errors in one place, automatically set status and response headers onerror(app); -if (process.env.SENTRY_DSN) { +if (env.SENTRY_DSN) { Sentry.init({ - dsn: process.env.SENTRY_DSN, - environment: process.env.NODE_ENV, + dsn: env.SENTRY_DSN, + environment: env.ENVIRONMENT, + release: env.RELEASE, maxBreadcrumbs: 0, ignoreErrors: [ // emitted by Koa when bots attempt to snoop on paths such as wp-admin diff --git a/server/env.js b/server/env.js index f4d26c06..76621e57 100644 --- a/server/env.js +++ b/server/env.js @@ -1,12 +1,17 @@ // @flow + +// Note: This entire object is stringified in the HTML exposed to the client +// do not add anything here that should be a secret or password export default { URL: process.env.URL, CDN_URL: process.env.CDN_URL || "", DEPLOYMENT: process.env.DEPLOYMENT, + ENVIRONMENT: process.env.NODE_ENV, SENTRY_DSN: process.env.SENTRY_DSN, TEAM_LOGO: process.env.TEAM_LOGO, SLACK_KEY: process.env.SLACK_KEY, SLACK_APP_ID: process.env.SLACK_APP_ID, SUBDOMAINS_ENABLED: process.env.SUBDOMAINS_ENABLED === "true", GOOGLE_ANALYTICS_ID: process.env.GOOGLE_ANALYTICS_ID, + RELEASE: process.env.SOURCE_COMMIT || process.env.SOURCE_VERSION || undefined, }; diff --git a/server/index.js b/server/index.js index a6a03e57..d8d8587b 100644 --- a/server/index.js +++ b/server/index.js @@ -4,7 +4,11 @@ require("dotenv").config({ silent: true }); // If the DataDog agent is installed and the DD_API_KEY environment variable is // in the environment then we can safely attempt to start the DD tracer if (process.env.DD_API_KEY) { - require("dd-trace").init(); + require("dd-trace").init({ + // SOURCE_COMMIT is used by Docker Hub + // SOURCE_VERSION is used by Heroku + version: process.env.SOURCE_COMMIT || process.env.SOURCE_VERSION, + }); } if ( diff --git a/yarn.lock b/yarn.lock index 498de19c..7f44d9cf 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1473,147 +1473,94 @@ execa "^4.0.0" java-properties "^1.0.0" -"@sentry/browser@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-6.0.1.tgz#5d0b8e3bc893c1c7e55a9238e23ed47adf264fa2" - integrity sha512-iP8Bqxj4Ye8CXA4ja77buPZfXsKiZYUgHFzBQxVMihTHA8ZZLgBMPLQI6uFfHuJJW+1/yLzOf8BhvF2zknAebg== +"@sentry/browser@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-6.1.0.tgz#0e18a07b44bebed729bcf842af33203e388e2053" + integrity sha512-t3y2TLXDWgvfknyH8eKj/9mghJfSEqItFyp74zPu1Src6kOPjkd4Sa7o4+bdkNgA8dIIOrDAhRUbB2sq4sWMCA== dependencies: - "@sentry/core" "6.0.1" - "@sentry/types" "6.0.1" - "@sentry/utils" "6.0.1" + "@sentry/core" "6.1.0" + "@sentry/types" "6.1.0" + "@sentry/utils" "6.1.0" tslib "^1.9.3" -"@sentry/core@5.27.4": - version "5.27.4" - resolved "https://registry.yarnpkg.com/@sentry/core/-/core-5.27.4.tgz#4155ee09ee4deed7364918094bf81654dcf681c0" - integrity sha512-IbI37cIZU/qBQouuUXaLbGF/9xYFp5STqmj1Gv64l0IZe4JnEp06V3yD5GxQ/mJ78vSfOqfwLooVCUw9FA61sQ== +"@sentry/core@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@sentry/core/-/core-6.1.0.tgz#7dd4584dcaf2188a78b94b766068342e6ee65229" + integrity sha512-57mXkp3NoyxRycXrL+Ec6bYS6UYJZp9tYX0lUp5Ry2M0FxDZ3Q4drkjr8MIQOhBaQXP2ukSX4QTVLGMPm60zMw== dependencies: - "@sentry/hub" "5.27.4" - "@sentry/minimal" "5.27.4" - "@sentry/types" "5.27.4" - "@sentry/utils" "5.27.4" + "@sentry/hub" "6.1.0" + "@sentry/minimal" "6.1.0" + "@sentry/types" "6.1.0" + "@sentry/utils" "6.1.0" tslib "^1.9.3" -"@sentry/core@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@sentry/core/-/core-6.0.1.tgz#4024b2b04e5ce78ce35d7795a283fbd235f37757" - integrity sha512-EoxgodyClasI8PA4GyU8Cp88W3R5ebpiLsE7fCcBcOU0DOBRkO8GAZ5IzfCDtYDJ50c9npivum5Oyj2wf8CXYw== +"@sentry/hub@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-6.1.0.tgz#fb22734c91c9d68564737996bf28b7e032e3d8ee" + integrity sha512-JnBSCgNg3VHiMojUl5tCHU8iWPVuE+qqENIzG9A722oJms1kKWBvWl+yQzhWBNdgk5qeAY3F5UzKWJZkbJ6xow== dependencies: - "@sentry/hub" "6.0.1" - "@sentry/minimal" "6.0.1" - "@sentry/types" "6.0.1" - "@sentry/utils" "6.0.1" + "@sentry/types" "6.1.0" + "@sentry/utils" "6.1.0" tslib "^1.9.3" -"@sentry/hub@5.27.4": - version "5.27.4" - resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-5.27.4.tgz#15db6f504672edd70b793e4b3d370dca9cb2fef6" - integrity sha512-Ba1AqcjvSd2S+fpdXtXCrVXdrzq9E2Etb2eHUOkEYwSsq7StMOw7E8YHDPAo+to8zUbpMPz/Z9XGhFkyAbImGQ== +"@sentry/minimal@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@sentry/minimal/-/minimal-6.1.0.tgz#b3abf76d93b95477a3c1029db810818bdc56845f" + integrity sha512-g6sfNKenL7wnsr/tibp8nFiMv/XRH0s0Pt4p151npmNI+SmjuUz3GGYEXk8ChCyaKldYKilkNOFdVXJxUf5gZw== dependencies: - "@sentry/types" "5.27.4" - "@sentry/utils" "5.27.4" + "@sentry/hub" "6.1.0" + "@sentry/types" "6.1.0" tslib "^1.9.3" -"@sentry/hub@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-6.0.1.tgz#6a338522f62d6d6282822e16da4385a5a854f0a8" - integrity sha512-pGckNdhKcr7qYVXgSgA/QVGArATcmQu54YFAR5xTnkWVHpAwNmh0fc4CJCc4JBwS/LXSU1Y0nYiLQduVfnv8Cg== +"@sentry/node@^6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@sentry/node/-/node-6.1.0.tgz#9e20443fdfd15e508da5c0b674ef32960e8a6380" + integrity sha512-yOxYHoPxg8Br19QOsJbonP2uYirv1FFxdNkdeykfO2QBorRUkcirjET5qjRfz73jF1YYtUZBuxwR+f9ZOPqGTg== dependencies: - "@sentry/types" "6.0.1" - "@sentry/utils" "6.0.1" - tslib "^1.9.3" - -"@sentry/minimal@5.27.4": - version "5.27.4" - resolved "https://registry.yarnpkg.com/@sentry/minimal/-/minimal-5.27.4.tgz#2b331ed43d5f8999606fe9f8bf26a85155e8286c" - integrity sha512-biw5YfIQwvDoaRhLarfeRQ6MJ9UJOoDTmu8Kgg18prJy4rtfDowNJP0OBs5XAsTk6SWAXiE3g7vqUJBXgs7BWA== - dependencies: - "@sentry/hub" "5.27.4" - "@sentry/types" "5.27.4" - tslib "^1.9.3" - -"@sentry/minimal@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@sentry/minimal/-/minimal-6.0.1.tgz#f970a59b024d08e61e00d518081eb4b7591f3d77" - integrity sha512-TQ/M5A+OsxtQJ8dzHwrclxKXpJNdQeM1PUoYhff4BvsOXJScvZb7+Yn0OUEQXEc9pSMNt62tnQy4ct80iAMTHw== - dependencies: - "@sentry/hub" "6.0.1" - "@sentry/types" "6.0.1" - tslib "^1.9.3" - -"@sentry/node@^5.23.0": - version "5.27.4" - resolved "https://registry.yarnpkg.com/@sentry/node/-/node-5.27.4.tgz#7fe327a45f865bff7c4b7f0d74d94506ec0a05bc" - integrity sha512-fv3FfQ6FiNV56LKk6t48oNw8qgf7X5fEhqhvKAoU7w+BL9AhChzh9v7sWn9ppDtRFE45tFfsZh0J/8ox5jpnfQ== - dependencies: - "@sentry/core" "5.27.4" - "@sentry/hub" "5.27.4" - "@sentry/tracing" "5.27.4" - "@sentry/types" "5.27.4" - "@sentry/utils" "5.27.4" + "@sentry/core" "6.1.0" + "@sentry/hub" "6.1.0" + "@sentry/tracing" "6.1.0" + "@sentry/types" "6.1.0" + "@sentry/utils" "6.1.0" cookie "^0.4.1" https-proxy-agent "^5.0.0" lru_map "^0.3.3" tslib "^1.9.3" -"@sentry/react@^6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@sentry/react/-/react-6.0.1.tgz#5b7f0284fee35b639cb4538096ee57bf3593792f" - integrity sha512-loI9AnKp32yLRBGVZh5eVpAkpkGnCQ4rx+8GN+BICLwqsQTAJUyPLuyDarEqlH4sHOGJCwYf5s5Iu4uqpAP4vg== +"@sentry/react@^6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@sentry/react/-/react-6.1.0.tgz#f01a5f330ee339743420056872d0ae606a85381d" + integrity sha512-X1Jp1ueHsmHQXBcNWshA43MTdn0B3B06A36yv6mzAznmanpf+7+f7SHrnRFIwuBpTdPsHzolTmSE9VlkZPBgBg== dependencies: - "@sentry/browser" "6.0.1" - "@sentry/minimal" "6.0.1" - "@sentry/types" "6.0.1" - "@sentry/utils" "6.0.1" + "@sentry/browser" "6.1.0" + "@sentry/minimal" "6.1.0" + "@sentry/types" "6.1.0" + "@sentry/utils" "6.1.0" hoist-non-react-statics "^3.3.2" tslib "^1.9.3" -"@sentry/tracing@5.27.4": - version "5.27.4" - resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-5.27.4.tgz#0f6b0ebfa90b9f5bf5bac1fcf0f196010dbdddac" - integrity sha512-f3nG8ozCdcbFOzsnBCZ8w+/WfoNiAd0Ctr643L0rsFbaSzPWxbPMe3LNVrWwFVo6mHacG3/2HYmJ3CYMiWyTKQ== +"@sentry/tracing@6.1.0", "@sentry/tracing@^6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-6.1.0.tgz#cefabd0e4794fefb6a0a17478a8f09b2f1f3d889" + integrity sha512-s6a4Ra3hHn4awiNz4fOEK6TCV2w2iLcxdppijcYEB7S/1rJpmqZgHWDicqufbOmVMOLmyKLEQ7w+pZq3TR3WgQ== dependencies: - "@sentry/hub" "5.27.4" - "@sentry/minimal" "5.27.4" - "@sentry/types" "5.27.4" - "@sentry/utils" "5.27.4" + "@sentry/hub" "6.1.0" + "@sentry/minimal" "6.1.0" + "@sentry/types" "6.1.0" + "@sentry/utils" "6.1.0" tslib "^1.9.3" -"@sentry/tracing@^6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-6.0.1.tgz#82001ce3369e05fe161e57dfb3cb3784fbe3f23b" - integrity sha512-p4laeCu7isrvXiCgM/ix4GU5lckoL2Mw2OI3l93lRYL7fKU8XJs+/2Cybs0J+QY1HP5OTrNIF+VpnJZbpM6MQg== +"@sentry/types@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@sentry/types/-/types-6.1.0.tgz#5f9379229423ca1325acf6709e95687180f67132" + integrity sha512-kIaN52Fw5K+2mKRaHE2YluJ+F/qMGSUzZXIFDNdC6OUMXQ4TM8gZTrITXs8CLDm7cK8iCqFCtzKOjKK6KyOKAg== + +"@sentry/utils@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-6.1.0.tgz#52e3d7050983e685d3a48f9d2efa1e6eb4ae3e6d" + integrity sha512-6JAplzUOS6bEwfX0PDRZBbYRvn9EN22kZfcL0qGHtM9L0QQ5ybjbbVwOpbXgRkiZx++dQbzLFtelxnDhsbFG+Q== dependencies: - "@sentry/hub" "6.0.1" - "@sentry/minimal" "6.0.1" - "@sentry/types" "6.0.1" - "@sentry/utils" "6.0.1" - tslib "^1.9.3" - -"@sentry/types@5.27.4": - version "5.27.4" - resolved "https://registry.yarnpkg.com/@sentry/types/-/types-5.27.4.tgz#ba7cefae6f77bb39a0ac59aeba1bb23ce4ad5216" - integrity sha512-41h3c7tgtSS8UBmfvEckSr+7V7/IVOjt/EiydyOd6s0N18zSFfGY5HdA6g+eFtIJK3DhWkUHCHZNanD5IY5YCQ== - -"@sentry/types@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@sentry/types/-/types-6.0.1.tgz#4d1a281a4a79541b607361523e08058c6676409e" - integrity sha512-cEoe19vtam75Tf6eWmaobfbeV8XwBdr5FJoSVTomzcSsEiP2FHGOEhlE7kVBigzeH5Lri0aibiW6BDi1hIqHdg== - -"@sentry/utils@5.27.4": - version "5.27.4" - resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-5.27.4.tgz#d57ccd72a56e2f97e109d632957f6cd11806e992" - integrity sha512-shV1I/q+Tob3hUxRj11DfMhe9PNDiv85hUUoRloZGGwu275dMwpswb2uwgSmjc2Ao4pnMKVx8TL1hC3kGLVHTQ== - dependencies: - "@sentry/types" "5.27.4" - tslib "^1.9.3" - -"@sentry/utils@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-6.0.1.tgz#061ef604df519e1488960484e9bf0cbcb8d8c9a4" - integrity sha512-bjGuBYnG6fulZ8mLhPGBxttNu96DCN6d7Glw2sfLf4aurn1kjJ/58hP2c8dH0OqWO5e+rGYTsZ5Dr5kqVKNGTg== - dependencies: - "@sentry/types" "6.0.1" + "@sentry/types" "6.1.0" tslib "^1.9.3" "@sindresorhus/is@^0.7.0":