From c4fe889e71bf63342cae91cf963eefe3fbe9654b Mon Sep 17 00:00:00 2001 From: Dakota Benjamin Date: Tue, 22 Sep 2020 16:00:43 -0400 Subject: [PATCH] Add sentry dsn envvars for deployment --- .circleci/config.yml | 15 ++++++++++++++- backend/config.py | 2 +- frontend/.env.expand | 1 + frontend/src/config/index.js | 1 + frontend/src/index.js | 3 ++- .../cloudformation/tasking-manager.template.js | 5 +++++ 6 files changed, 24 insertions(+), 3 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 247d92c86e..98fd354c30 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -162,6 +162,8 @@ jobs: type: env_var_name upload_api_key: type: env_var_name + sentry_backend_dsn: + type: env_var_name working_directory: /home/circleci/tasking-manager docker: - image: circleci/python:3.7-buster-node @@ -171,7 +173,7 @@ jobs: - run: name: Set Environment Variables command: | - echo "export JSON_CONFIG='{\"GitSha\":\"$CIRCLE_SHA1\", \"NetworkEnvironment\":\"<< parameters.environment_name >>\", \"AutoscalingPolicy\":\"<< parameters.autoscaling_policy >>\", \"DBSnapshot\":\"\", \"DatabaseDump\":\"\", \"NewRelicLicense\":\"${<< parameters.new_relic_license >>}\", \"PostgresDB\":\"${<< parameters.postgres_db >>}\", \"PostgresEndpoint\":\"\", \"PostgresPassword\":\"${<< parameters.postgres_password >>}\", \"PostgresUser\":\"${<< parameters.postgres_user >>}\", \"DatabaseSize\":\"${<< parameters.db_size >>}\",\"ELBSubnets\":\"${<< parameters.elb_subnets >>}\", \"SSLCertificateIdentifier\":\"${<< parameters.ssl_cert >>}\", \"TaskingManagerLogDirectory\":\"${<< parameters.log_dir >>}\", \"TaskingManagerConsumerKey\":\"${<< parameters.consumer_key >>}\",\"TaskingManagerConsumerSecret\":\"${<< parameters.consumer_secret >>}\",\"TaskingManagerSecret\":\"${<< parameters.tm_secret >>}\",\"TaskingManagerLogLevel\":\"<< parameters.log_level >>\",\"TaskingManagerImageUploadAPIURL\":\"${<< parameters.upload_api_url >>}\", \"TaskingManagerImageUploadAPIKey\":\"${<< parameters.upload_api_key >>}\",\"TaskingManagerURL\":\"${<< parameters.app_url >>}\", \"TaskingManagerOrgName\":\"${<< parameters.org_name >>}\", \"TaskingManagerOrgCode\":\"${<< parameters.org_code >>}\", \"TaskingManagerEmailContactAddress\":\"${<< parameters.email_contact_address >>}\"}'" >> $BASH_ENV + echo "export JSON_CONFIG='{\"GitSha\":\"$CIRCLE_SHA1\", \"NetworkEnvironment\":\"<< parameters.environment_name >>\", \"AutoscalingPolicy\":\"<< parameters.autoscaling_policy >>\", \"DBSnapshot\":\"\", \"DatabaseDump\":\"\", \"NewRelicLicense\":\"${<< parameters.new_relic_license >>}\", \"PostgresDB\":\"${<< parameters.postgres_db >>}\", \"PostgresEndpoint\":\"\", \"PostgresPassword\":\"${<< parameters.postgres_password >>}\", \"PostgresUser\":\"${<< parameters.postgres_user >>}\", \"DatabaseSize\":\"${<< parameters.db_size >>}\",\"ELBSubnets\":\"${<< parameters.elb_subnets >>}\", \"SSLCertificateIdentifier\":\"${<< parameters.ssl_cert >>}\", \"TaskingManagerLogDirectory\":\"${<< parameters.log_dir >>}\", \"TaskingManagerConsumerKey\":\"${<< parameters.consumer_key >>}\",\"TaskingManagerConsumerSecret\":\"${<< parameters.consumer_secret >>}\",\"TaskingManagerSecret\":\"${<< parameters.tm_secret >>}\",\"TaskingManagerLogLevel\":\"<< parameters.log_level >>\",\"TaskingManagerImageUploadAPIURL\":\"${<< parameters.upload_api_url >>}\", \"TaskingManagerImageUploadAPIKey\":\"${<< parameters.upload_api_key >>}\",\"TaskingManagerURL\":\"${<< parameters.app_url >>}\", \"TaskingManagerOrgName\":\"${<< parameters.org_name >>}\", \"TaskingManagerOrgCode\":\"${<< parameters.org_code >>}\", \"SentryBackendDSN\":\"${<< parameters.sentry_backend_dsn >>}\", \"TaskingManagerEmailContactAddress\":\"${<< parameters.email_contact_address >>}\"}'" >> $BASH_ENV - run: name: Install modules command: | @@ -354,6 +356,8 @@ jobs: type: env_var_name homepage_stats_api_url: type: env_var_name + sentry_frontend_dsn: + type: env_var_name working_directory: /home/circleci/tasking-manager docker: - image: circleci/python:3.7-buster-node @@ -419,6 +423,7 @@ jobs: export TM_IMAGE_UPLOAD_API_URL=${<< parameters.upload_api_url >>} export TM_USER_STATS_API_URL=${<< parameters.user_stats_api_url >>} export TM_HOMEPAGE_STATS_API_URL=${<< parameters.homepage_stats_api_url >>} + export TM_SENTRY_FRONTEND_DSN=${<< parameters.sentry_frontend_dsn >>} cd ${CIRCLE_WORKING_DIRECTORY}/frontend/ yarn CI=true GENERATE_SOURCEMAP=false yarn build @@ -481,6 +486,7 @@ workflows: org_homepage_video_url: TM_HOMEPAGE_VIDEO_URL #=https://cdn.hotosm.org/tasking-manager/mapping.mp4 upload_api_url: TM_IMAGE_UPLOAD_API_URL upload_api_key: TM_IMAGE_UPLOAD_API_KEY + sentry_backend_dsn: TM_SENTRY_BACKEND_DSN - frontend_deploy: name: staging filters: @@ -530,6 +536,7 @@ workflows: upload_api_key: TM_IMAGE_UPLOAD_API_KEY user_stats_api_url: TM_USER_STATS_API_URL homepage_stats_api_url: TM_HOMEPAGE_STATS_API_URL + sentry_frontend_dsn: TM_SENTRY_FRONTEND_DSN - backend_deploy: name: teachosm filters: @@ -577,6 +584,7 @@ workflows: org_homepage_video_url: TM_HOMEPAGE_VIDEO_URL upload_api_url: TM_IMAGE_UPLOAD_API_URL upload_api_key: TM_IMAGE_UPLOAD_API_KEY + sentry_backend_dsn: TM_SENTRY_BACKEND_DSN - frontend_deploy: name: teachosm filters: @@ -626,6 +634,7 @@ workflows: upload_api_key: TM_IMAGE_UPLOAD_API_KEY user_stats_api_url: TM_USER_STATS_API_URL homepage_stats_api_url: TM_HOMEPAGE_STATS_API_URL + sentry_frontend_dsn: TM_SENTRY_FRONTEND_DSN - backend_deploy: name: assisted filters: @@ -673,6 +682,7 @@ workflows: org_homepage_video_url: TM_HOMEPAGE_VIDEO_URL upload_api_url: TM_IMAGE_UPLOAD_API_URL upload_api_key: TM_IMAGE_UPLOAD_API_KEY + sentry_backend_dsn: TM_SENTRY_BACKEND_DSN - frontend_deploy: name: assisted filters: @@ -722,6 +732,7 @@ workflows: upload_api_key: TM_IMAGE_UPLOAD_API_KEY user_stats_api_url: TM_USER_STATS_API_URL homepage_stats_api_url: TM_HOMEPAGE_STATS_API_URL + sentry_frontend_dsn: TM_SENTRY_FRONTEND_DSN backend-production: jobs: - backend_deploy: @@ -769,6 +780,7 @@ workflows: org_homepage_video_url: TM_HOMEPAGE_VIDEO_URL upload_api_url: TM_IMAGE_UPLOAD_API_URL upload_api_key: TM_IMAGE_UPLOAD_API_KEY + sentry_backend_dsn: TM_SENTRY_BACKEND_DSN frontend-production: jobs: - frontend_deploy: @@ -819,3 +831,4 @@ workflows: upload_api_key: TM_IMAGE_UPLOAD_API_KEY user_stats_api_url: TM_USER_STATS_API_URL homepage_stats_api_url: TM_HOMEPAGE_STATS_API_URL + sentry_frontend_dsn: TM_SENTRY_FRONTEND_DSN diff --git a/backend/config.py b/backend/config.py index ffe51c3b9d..f6c6026597 100644 --- a/backend/config.py +++ b/backend/config.py @@ -24,7 +24,7 @@ class EnvironmentConfig: API_VERSION = os.getenv("TM_APP_API_VERSION", "v2") ORG_CODE = os.getenv("TM_ORG_CODE", "") ORG_NAME = os.getenv("TM_ORG_NAME", "") - ENVIRONMENT = os.getenv("TM_ENVIRONMENT", "") + ENVIRONMENT = os.getenv("TM_ENVIRONMENT", "") # The default tag used in the OSM changeset comment DEFAULT_CHANGESET_COMMENT = os.getenv("TM_DEFAULT_CHANGESET_COMMENT", None) diff --git a/frontend/.env.expand b/frontend/.env.expand index a6279181b4..691525fe9f 100644 --- a/frontend/.env.expand +++ b/frontend/.env.expand @@ -35,3 +35,4 @@ REACT_APP_OSM_REGISTER_URL=$OSM_REGISTER_URL REACT_APP_ID_EDITOR_URL=$ID_EDITOR_URL REACT_APP_POTLATCH2_EDITOR_URL=$POTLATCH2_EDITOR_URL REACT_APP_SENTRY_FRONTEND_DSN=$TM_SENTRY_FRONTEND_DSN +REACT_APP_ENVIRONMENT=$TM_ENVIRONMENT diff --git a/frontend/src/config/index.js b/frontend/src/config/index.js index 302921f036..9d2277236e 100644 --- a/frontend/src/config/index.js +++ b/frontend/src/config/index.js @@ -12,6 +12,7 @@ export const USER_STATS_API_URL = // APPLICATION SETTINGS export const DEFAULT_LOCALE = process.env.REACT_APP_DEFAULT_LOCALE || 'en'; +export const ENVIRONMENT= process.env.REACT_APP_ENVIRONMENT || ''; export const PROJECTCARD_CONTRIBUTION_SHOWN_THRESHOLD = process.env.REACT_APP_PROJECTCARD_CONTRIBUTION_SHOWN_THRESHOLD || 5; export const INTERMEDIATE_LEVEL_COUNT = diff --git a/frontend/src/index.js b/frontend/src/index.js index 46347551a4..eaa7a70233 100644 --- a/frontend/src/index.js +++ b/frontend/src/index.js @@ -10,11 +10,12 @@ import { store } from './store'; import { getUserDetails } from './store/actions/auth'; import { ConnectedIntl } from './utils/internationalization'; import * as serviceWorker from './serviceWorker'; -import { ENABLE_SERVICEWORKER, SENTRY_FRONTEND_DSN } from './config'; +import { ENABLE_SERVICEWORKER, SENTRY_FRONTEND_DSN, ENVIRONMENT } from './config'; if (SENTRY_FRONTEND_DSN) { Sentry.init({ dsn: SENTRY_FRONTEND_DSN, + environment: ENVIRONMENT, integrations: [new Integrations.BrowserTracing()], tracesSampleRate: 0.1, }); diff --git a/scripts/aws/cloudformation/tasking-manager.template.js b/scripts/aws/cloudformation/tasking-manager.template.js index 1d1b158845..7f4d2fef43 100644 --- a/scripts/aws/cloudformation/tasking-manager.template.js +++ b/scripts/aws/cloudformation/tasking-manager.template.js @@ -123,6 +123,10 @@ const Parameters = { TaskingManagerOrgCode: { Description: 'Org Code', Type: 'String' + }, + SentryBackendDSN: { + Description: "DSN for sentry", + Type: 'String' } }; @@ -392,6 +396,7 @@ const Resources = { './venv/bin/python3.6 manage.py db upgrade', 'echo "------------------------------------------------------------"', cf.sub('export NEW_RELIC_LICENSE_KEY="${NewRelicLicense}"'), + cf.sub('export TM_SENTRY_BACKEND_DSN="${SentryBackendDSN}"'), 'export NEW_RELIC_ENVIRONMENT=$TM_ENVIRONMENT', cf.sub('NEW_RELIC_CONFIG_FILE=./scripts/aws/cloudformation/newrelic.ini newrelic-admin run-program gunicorn -b 0.0.0.0:8000 --worker-class gevent --workers 5 --timeout 179 --access-logfile ${TaskingManagerLogDirectory}/gunicorn-access.log --access-logformat \'%(h)s %(l)s %(u)s %(t)s \"%(r)s\" %(s)s %(b)s %(T)s \"%(f)s\" \"%(a)s\"\' manage:application &'), cf.sub('sudo cfn-init -v --stack ${AWS::StackName} --resource TaskingManagerLaunchConfiguration --region ${AWS::Region} --configsets default'),