diff options
| -rw-r--r-- | .github/workflows/create_sentry_release.yml | 34 | ||||
| -rw-r--r-- | package.json | 2 | ||||
| -rw-r--r-- | src/index.tsx | 24 | ||||
| -rw-r--r-- | yarn.lock | 82 | 
4 files changed, 140 insertions, 2 deletions
| diff --git a/.github/workflows/create_sentry_release.yml b/.github/workflows/create_sentry_release.yml new file mode 100644 index 0000000..6daf552 --- /dev/null +++ b/.github/workflows/create_sentry_release.yml @@ -0,0 +1,34 @@ +name: Create Sentry release + +on: +  push: +    branches: [ main ] + +jobs: +  build: +    runs-on: ubuntu-latest + +    steps: +      - uses: actions/checkout@v2 +      - uses: EgorDm/gha-yarn-node-cache@v1 +       +      - name: Install dependencies +        run: yarn install +       +      - name: Install dependencies +        run: yarn build +        env: +          REACT_APP_SENTRY_DSN: ${{ secrets.SENTRY_DSN }} +          REACT_APP_SHA: ${{ github.sha }} +          REACT_APP_BRANCH: main +          REACT_APP_OAUTH2_CLIENT_ID: ${{ secrets.CLIENT_ID }} + +      - name: Create Sentry release +        uses: getsentry/[email protected] +        env: +          SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} +          SENTRY_ORG: python-discord +          SENTRY_PROJECT: forms-frontend +        with: +          environment: production +          sourcemaps: ./build/static/js/ diff --git a/package.json b/package.json index ff7968a..f9d54f3 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,8 @@      "@fortawesome/free-brands-svg-icons": "^5.14.0",      "@fortawesome/free-solid-svg-icons": "^5.14.0",      "@fortawesome/react-fontawesome": "^0.1.11", +    "@sentry/react": "^5.25.0", +    "@sentry/tracing": "^5.25.0",      "@testing-library/jest-dom": "^4.2.4",      "@testing-library/react": "^9.3.2",      "@testing-library/user-event": "^7.1.2", diff --git a/src/index.tsx b/src/index.tsx index 634fd81..783d34f 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -3,8 +3,22 @@ import ReactDOM from 'react-dom';  import App from './App';  import * as serviceWorker from './serviceWorker'; +import * as Sentry from "@sentry/react"; +import { Integrations } from "@sentry/tracing"; +  import colors from "./colors"; +if (process.env.NODE_ENV === "production") { +  Sentry.init({ +    dsn: process.env.REACT_APP_SENTRY_DSN, +    integrations: [ +      new Integrations.BrowserTracing(), +    ], +    tracesSampleRate: 0.25, +    release: `forms-frontend@${process.env.REACT_APP_SHA}` +  }); +} +  console.log("%c  Python Discord Forms  ", `font-size: 6em; font-family: "Hind", "Arial"; font-weight: 900; background-color: ${colors.blurple}; border-radius: 10px;`)  console.log("%cWelcome to Python Discord Forms", `font-size: 3em; font-family: "Hind", "Arial";`) @@ -18,7 +32,15 @@ console.log("%cCome join us on Discord! https://discord.gg/python", `font-size:  ReactDOM.render(    <React.StrictMode> -    <App /> +    <Sentry.ErrorBoundary +      fallback={<p>An error has occurred with Python Discord Forms. Please let us know in the Discord server at <a href="https://discord.gg/python">discord.gg/python</a></p>} +      showDialog={true} +      dialogOptions={{ +        title: "You've found a bug in PyDis forms!" +      }} +    > +      <App /> +    </Sentry.ErrorBoundary>    </React.StrictMode>,    document.getElementById('root')  ); @@ -1490,6 +1490,81 @@    resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b"    integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== +"@sentry/[email protected]": +  version "5.25.0" +  resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-5.25.0.tgz#4e3d2132ba1f2e2b26f73c49cbb6977ee9c9fea9" +  integrity sha512-QDVUbUuTu58xCdId0eUO4YzpvrPdoUw1ryVy/Yep9Es/HD0fiSyO1Js0eQVkV/EdXtyo2pomc1Bpy7dbn2EJ2w== +  dependencies: +    "@sentry/core" "5.25.0" +    "@sentry/types" "5.25.0" +    "@sentry/utils" "5.25.0" +    tslib "^1.9.3" + +"@sentry/[email protected]": +  version "5.25.0" +  resolved "https://registry.yarnpkg.com/@sentry/core/-/core-5.25.0.tgz#525ad37f9e8a95603768e3b74b437d5235a51578" +  integrity sha512-hY6Zmo7t/RV+oZuvXHP6nyAj/QnZr2jW0e7EbL5YKMV8q0vlnjcE0LgqFXme726OJemoLk67z+sQOJic/Ztehg== +  dependencies: +    "@sentry/hub" "5.25.0" +    "@sentry/minimal" "5.25.0" +    "@sentry/types" "5.25.0" +    "@sentry/utils" "5.25.0" +    tslib "^1.9.3" + +"@sentry/[email protected]": +  version "5.25.0" +  resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-5.25.0.tgz#6932535604cafaee1ac7f361b0e7c2ce8f7e7bc3" +  integrity sha512-kOlOiJV8wMX50lYpzMlOXBoH7MNG0Ho4RTusdZnXZBaASq5/ljngDJkLr6uylNjceZQP21wzipCQajsJMYB7EQ== +  dependencies: +    "@sentry/types" "5.25.0" +    "@sentry/utils" "5.25.0" +    tslib "^1.9.3" + +"@sentry/[email protected]": +  version "5.25.0" +  resolved "https://registry.yarnpkg.com/@sentry/minimal/-/minimal-5.25.0.tgz#447b5406b45c8c436c461abea4474d6a849ed975" +  integrity sha512-9JFKuW7U+1vPO86k3+XRtJyooiVZsVOsFFO4GulBzepi3a0ckNyPgyjUY1saLH+cEHx18hu8fGgajvI8ANUF2g== +  dependencies: +    "@sentry/hub" "5.25.0" +    "@sentry/types" "5.25.0" +    tslib "^1.9.3" + +"@sentry/react@^5.25.0": +  version "5.25.0" +  resolved "https://registry.yarnpkg.com/@sentry/react/-/react-5.25.0.tgz#269f54db9d6f92410bee07117f8d8e03b219e068" +  integrity sha512-lZwiFj+BQtmaj+Do9hcRSJcdrTisSGq2521/Xm9qGPbhsRW8uTHMJjkDgMHriYxxqXYOQrY9FisJwvkPpkroow== +  dependencies: +    "@sentry/browser" "5.25.0" +    "@sentry/minimal" "5.25.0" +    "@sentry/types" "5.25.0" +    "@sentry/utils" "5.25.0" +    hoist-non-react-statics "^3.3.2" +    tslib "^1.9.3" + +"@sentry/tracing@^5.25.0": +  version "5.25.0" +  resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-5.25.0.tgz#1cfbcf085a7a3b679f417058d09590298ddaa255" +  integrity sha512-KcyHEGFpqSDubHrdWT/vF2hKkjw/ts6NpJ6tPDjBXUNz98BHdAyMKtLOFTCeJFply7/s5fyiAYu44M+M6IG3Bw== +  dependencies: +    "@sentry/hub" "5.25.0" +    "@sentry/minimal" "5.25.0" +    "@sentry/types" "5.25.0" +    "@sentry/utils" "5.25.0" +    tslib "^1.9.3" + +"@sentry/[email protected]": +  version "5.25.0" +  resolved "https://registry.yarnpkg.com/@sentry/types/-/types-5.25.0.tgz#3bcf95e118d655d3f4e8bfa5f0be2e1fe4ea5307" +  integrity sha512-8M4PREbcar+15wrtEqcwfcU33SS+2wBSIOd/NrJPXJPTYxi49VypCN1mZBDyWkaK+I+AuQwI3XlRPCfsId3D1A== + +"@sentry/[email protected]": +  version "5.25.0" +  resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-5.25.0.tgz#b132034be66d7381d30879d2a9e09216fed28342" +  integrity sha512-Hz5spdIkMSRH5NR1YFOp5qbsY5Ud2lKhEQWlqxcVThMG5YNUc10aYv5ijL19v0YkrC2rqPjCRm7GrVtzOc7bXQ== +  dependencies: +    "@sentry/types" "5.25.0" +    tslib "^1.9.3" +  "@sheerun/mutationobserver-shim@^0.3.2":    version "0.3.3"    resolved "https://registry.yarnpkg.com/@sheerun/mutationobserver-shim/-/mutationobserver-shim-0.3.3.tgz#5405ee8e444ed212db44e79351f0c70a582aae25" @@ -5351,7 +5426,7 @@ hmac-drbg@^1.0.0:      minimalistic-assert "^1.0.0"      minimalistic-crypto-utils "^1.0.1" -hoist-non-react-statics@^3.1.0: +hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.3.2:    version "3.3.2"    resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45"    integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== @@ -10467,6 +10542,11 @@ tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0:    resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043"    integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q== +tslib@^1.9.3: +  version "1.14.0" +  resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.0.tgz#d624983f3e2c5e0b55307c3dd6c86acd737622c6" +  integrity sha512-+Zw5lu0D9tvBMjGP8LpvMb0u2WW2QV3y+D8mO6J+cNzCYIN4sVy43Bf9vl92nqFahutN0I8zHa7cc4vihIshnw== +  tsutils@^3.17.1:    version "3.17.1"    resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759" | 
