diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f8cd27c49d..f89fdd04ff 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -155,58 +155,51 @@ jobs: with: file: coverage/lcov.info - build-deploy-frontend: + build-nextjs-container: needs: javascript-tests runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 - - name: Heroku login - env: - HEROKU_API_KEY: ${{ secrets.HEROKU_API_KEY }} - run: heroku container:login - - name: Build the Docker image env: - HEROKU_API_KEY: ${{ secrets.HEROKU_API_KEY }} - EMBEDLY_KEY: ${{ secrets.EMBEDLY_KEY_RC }} ORIGIN: https://next.rc.learn.mit.edu MITOL_API_BASE_URL: https://api.rc.learn.mit.edu SITE_NAME: MIT Learn SUPPORT_EMAIL: mitlearn-support@mit.edu + EMBEDLY_KEY: ${{ secrets.EMBEDLY_KEY_RC }} MITOL_AXIOS_WITH_CREDENTIALS: true - CSRF_COOKIE_NAME: learn-rc-csrftoken - NEXT_PUBLIC_SENTRY_DSN: ${{ secrets.SENTRY_DSN_RC }} - NEXT_PUBLIC_SENTRY_ENV: rc - NEXT_PUBLIC_SENTRY_PROFILES_SAMPLE_RATE: 0.0 - NEXT_PUBLIC_SENTRY_TRACES_SAMPLE_RATE: 0.0 - NEXT_PUBLIC_VERSION: ${{ github.sha }} - NEXT_PUBLIC_POSTHOG_API_KEY: ${{ secrets.POSTHOG_API_KEY_RC }} + CSRF_COOKIE_NAME: ${{ secrets.CSRF_COOKIE_NAME_RC }} + POSTHOG_API_HOST: https://app.posthog.com + POSTHOG_PROJECT_ID: ${{ secrets.POSTHOG_PROJECT_ID_RC }} + POSTHOG_API_KEY: ${{ secrets.POSTHOG_PROJECT_API_KEY_RC }} + SENTRY_DSN: ${{ secrets.SENTRY_DSN_RC }} + SENTRY_ENV: ${{ secrets.MITOL_ENVIRONMENT_RC }} + SENTRY_PROFILES_SAMPLE_RATE: ${{ secrets.SENTRY_PROFILES_SAMPLE_RATE_RC }} + SENTRY_TRACES_SAMPLE_RATE: ${{ secrets.SENTRY_TRACES_SAMPLE_RATE_RC }} + APPZI_URL: ${{ secrets.APPZI_URL_RC }} + VERSION: ${{ github.sha }} run: | - heroku container:push web \ - --app mitopen-rc-nextjs \ - --recursive \ - --arg NEXT_PUBLIC_ORIGIN=$ORIGIN,\ - NEXT_PUBLIC_MITOL_API_BASE_URL=$MITOL_API_BASE_URL,\ - NEXT_PUBLIC_SITE_NAME="$SITE_NAME",\ - NEXT_PUBLIC_MITOL_SUPPORT_EMAIL=$SUPPORT_EMAIL,\ - NEXT_PUBLIC_EMBEDLY_KEY=$EMBEDLY_KEY,\ - NEXT_PUBLIC_MITOL_AXIOS_WITH_CREDENTIALS=$MITOL_AXIOS_WITH_CREDENTIALS,\ - NEXT_PUBLIC_CSRF_COOKIE_NAME=$CSRF_COOKIE_NAME,\ - NEXT_PUBLIC_VERSION=$NEXT_PUBLIC_VERSION,\ - NEXT_PUBLIC_SENTRY_DSN=$NEXT_PUBLIC_SENTRY_DSN,\ - NEXT_PUBLIC_SENTRY_ENV=$NEXT_PUBLIC_SENTRY_ENV,\ - NEXT_PUBLIC_SENTRY_PROFILES_SAMPLE_RATE=$NEXT_PUBLIC_SENTRY_PROFILES_SAMPLE_RATE,\ - NEXT_PUBLIC_SENTRY_TRACES_SAMPLE_RATE=$NEXT_PUBLIC_SENTRY_TRACES_SAMPLE_RATE,\ - NEXT_PUBLIC_POSTHOG_API_KEY=$NEXT_PUBLIC_POSTHOG_API_KEY \ - --context-path . - - - name: Release on Heroku - if: github.ref == 'refs/heads/nextjs' - env: - HEROKU_API_KEY: ${{ secrets.HEROKU_API_KEY }} - run: heroku container:release --app mitopen-rc-nextjs web + docker build \ + -f frontends/main/Dockerfile.web \ + --build-arg NEXT_PUBLIC_ORIGIN=$ORIGIN \ + --build-arg NEXT_PUBLIC_MITOL_API_BASE_URL=$MITOL_API_BASE_URL \ + --build-arg NEXT_PUBLIC_SITE_NAME="$SITE_NAME" \ + --build-arg NEXT_PUBLIC_MITOL_SUPPORT_EMAIL=$SUPPORT_EMAIL \ + --build-arg NEXT_PUBLIC_EMBEDLY_KEY=$EMBEDLY_KEY \ + --build-arg NEXT_PUBLIC_MITOL_AXIOS_WITH_CREDENTIALS=$MITOL_AXIOS_WITH_CREDENTIALS \ + --build-arg NEXT_PUBLIC_CSRF_COOKIE_NAME=$CSRF_COOKIE_NAME \ + --build-arg NEXT_PUBLIC_POSTHOG_API_HOST=$POSTHOG_API_HOST \ + --build-arg NEXT_PUBLIC_POSTHOG_PROJECT_ID=$POSTHOG_PROJECT_ID \ + --build-arg NEXT_PUBLIC_POSTHOG_API_KEY=$POSTHOG_API_KEY \ + --build-arg NEXT_PUBLIC_SENTRY_DSN=$SENTRY_DSN \ + --build-arg NEXT_PUBLIC_SENTRY_ENV=$SENTRY_ENV \ + --build-arg NEXT_PUBLIC_SENTRY_PROFILES_SAMPLE_RATE=$SENTRY_PROFILES_SAMPLE_RATE \ + --build-arg NEXT_PUBLIC_SENTRY_TRACES_SAMPLE_RATE=$SENTRY_TRACES_SAMPLE_RATE \ + --build-arg NEXT_PUBLIC_APPZI_URL=$APPZI_URL \ + --build-arg NEXT_PUBLIC_VERSION=$VERSION \ + -t mitodl/mit-learn-frontend:$VERSION . build-storybook: runs-on: ubuntu-latest diff --git a/.github/workflows/production.yml b/.github/workflows/production.yml index 389deea711..248d3932e2 100644 --- a/.github/workflows/production.yml +++ b/.github/workflows/production.yml @@ -19,64 +19,78 @@ jobs: with: ref: release - - uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4 - with: - node-version: "^20" - cache: yarn - cache-dependency-path: yarn.lock + - name: Set VERSION + run: echo "VERSION=$(./scripts/get_version.sh)" >> $GITHUB_ENV - - name: Setup environment - run: sudo apt-get install libelf1 + - name: Write commit SHA to file + run: echo $GITHUB_SHA > frontends/main/public/hash.txt - - name: Install frontend dependencies - run: yarn install --immutable + - name: Heroku login + env: + HEROKU_API_KEY: ${{ secrets.HEROKU_API_KEY }} + run: heroku container:login - - name: Set VERSION - run: echo "VERSION=$(./scripts/get_version.sh)" >> $GITHUB_ENV + - name: Release Backend on Heroku + uses: akhileshns/heroku-deploy@581dd286c962b6972d427fcf8980f60755c15520 + with: + heroku_api_key: ${{ secrets.HEROKU_API_KEY }} + heroku_app_name: mitopen-production + heroku_email: ${{ secrets.HEROKU_EMAIL }} + branch: release - - name: Build frontend - run: NODE_ENV=production yarn build + - name: Build and push the Docker image env: + HEROKU_APP_NAME: mitopen-production-nextjs + HEROKU_API_KEY: ${{ secrets.HEROKU_API_KEY }} + ORIGIN: https://learn.mit.edu + MITOL_API_BASE_URL: https://api.learn.mit.edu + SITE_NAME: MIT Learn + SUPPORT_EMAIL: mitlearn-support@mit.edu EMBEDLY_KEY: ${{ secrets.EMBEDLY_KEY_PROD }} - POSTHOG_ENABLED: true + MITOL_AXIOS_WITH_CREDENTIALS: true + CSRF_COOKIE_NAME: ${{ secrets.CSRF_COOKIE_NAME_PROD }} POSTHOG_API_HOST: https://app.posthog.com - POSTHOG_TIMEOUT_MS: 1000 POSTHOG_PROJECT_ID: ${{ secrets.POSTHOG_PROJECT_ID_PROD }} - POSTHOG_PROJECT_API_KEY: ${{ secrets.POSTHOG_PROJECT_API_KEY_PROD }} + POSTHOG_API_KEY: ${{ secrets.POSTHOG_PROJECT_API_KEY_PROD }} SENTRY_DSN: ${{ secrets.SENTRY_DSN_PROD }} SENTRY_ENV: ${{ secrets.MITOL_ENVIRONMENT_PROD }} + SENTRY_PROFILES_SAMPLE_RATE: ${{ secrets.SENTRY_PROFILES_SAMPLE_RATE_PROD }} + SENTRY_TRACES_SAMPLE_RATE: ${{ secrets.SENTRY_TRACES_SAMPLE_RATE_PROD }} APPZI_URL: ${{ secrets.APPZI_URL_PROD }} - CSRF_COOKIE_NAME: ${{ secrets.CSRF_COOKIE_NAME_PROD }} - MITOL_AXIOS_WITH_CREDENTIALS: true - MITOL_API_BASE_URL: https://api.learn.mit.edu - MITOL_SUPPORT_EMAIL: mitlearn-support@mit.edu - - - uses: akhileshns/heroku-deploy@581dd286c962b6972d427fcf8980f60755c15520 - with: - heroku_api_key: ${{ secrets.HEROKU_API_KEY }} - heroku_app_name: "mitopen-production" - heroku_email: ${{ secrets.HEROKU_EMAIL }} - branch: release + VERSION: ${{ github.sha }} + run: | + heroku container:push web \ + --app $HEROKU_APP_NAME \ + --recursive \ + --arg NEXT_PUBLIC_ORIGIN=$ORIGIN,\ + NEXT_PUBLIC_MITOL_API_BASE_URL=$MITOL_API_BASE_URL,\ + NEXT_PUBLIC_SITE_NAME="$SITE_NAME",\ + NEXT_PUBLIC_MITOL_SUPPORT_EMAIL=$SUPPORT_EMAIL,\ + NEXT_PUBLIC_EMBEDLY_KEY=$EMBEDLY_KEY,\ + NEXT_PUBLIC_MITOL_AXIOS_WITH_CREDENTIALS=$MITOL_AXIOS_WITH_CREDENTIALS,\ + NEXT_PUBLIC_CSRF_COOKIE_NAME=$CSRF_COOKIE_NAME,\ + NEXT_PUBLIC_POSTHOG_API_HOST=$POSTHOG_API_HOST,\ + NEXT_PUBLIC_POSTHOG_PROJECT_ID=$POSTHOG_PROJECT_ID,\ + NEXT_PUBLIC_POSTHOG_API_KEY=$POSTHOG_API_KEY,\ + NEXT_PUBLIC_SENTRY_DSN=$SENTRY_DSN,\ + NEXT_PUBLIC_SENTRY_ENV=$SENTRY_ENV,\ + NEXT_PUBLIC_SENTRY_PROFILES_SAMPLE_RATE=$SENTRY_PROFILES_SAMPLE_RATE,\ + NEXT_PUBLIC_SENTRY_TRACES_SAMPLE_RATE=$SENTRY_TRACES_SAMPLE_RATE,\ + NEXT_PUBLIC_APPZI_URL=$APPZI_URL,\ + NEXT_PUBLIC_VERSION=$VERSION \ + --context-path . - - name: Write commit SHA to file - run: echo $GITHUB_SHA > frontends/mit-learn/build/static/hash.txt - - - name: Upload frontend build to s3 - uses: jakejarvis/s3-sync-action@master - with: - args: --acl public-read --follow-symlinks + - name: Release Frontend on Heroku env: - AWS_S3_BUCKET: ol-mitlearn-app-storage-production - AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID_PROD }} - AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY_PROD }} - SOURCE_DIR: "frontends/mit-learn/build" # optional: defaults to entire repository - DEST_DIR: "frontend" # This dir will get cluttered but it is okay for now + HEROKU_APP_NAME: mitopen-production-nextjs + HEROKU_API_KEY: ${{ secrets.HEROKU_API_KEY }} + run: heroku container:release --app $HEROKU_APP_NAME web - name: Purge Fastly cache uses: jcoene/fastly-purge-action@master with: - api_key: "${{ secrets.FASTLY_API_KEY_PROD }}" - service_id: "${{ secrets.FASTLY_SERVICE_ID_PROD }}" + api_key: "${{ secrets.FASTLY_API_KEY_PROD_NEXTJS }}" + service_id: "${{ secrets.FASTLY_SERVICE_ID_PROD_NEXTJS }}" # runs ONLY on a failure of the CI workflow on-failure: diff --git a/.github/workflows/release-candidate.yml b/.github/workflows/release-candidate.yml index 952b188479..c32c06ac33 100644 --- a/.github/workflows/release-candidate.yml +++ b/.github/workflows/release-candidate.yml @@ -19,64 +19,78 @@ jobs: with: ref: release-candidate - - uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4 - with: - node-version: "^20" - cache: yarn - cache-dependency-path: yarn.lock + - name: Set VERSION + run: echo "VERSION=$(./scripts/get_version.sh)" >> $GITHUB_ENV - - name: Setup environment - run: sudo apt-get install libelf1 + - name: Write commit SHA to file + run: echo $GITHUB_SHA > frontends/main/public/hash.txt - - name: Install frontend dependencies - run: yarn install --immutable + - name: Heroku login + env: + HEROKU_API_KEY: ${{ secrets.HEROKU_API_KEY }} + run: heroku container:login - - name: Set VERSION - run: echo "VERSION=$(./scripts/get_version.sh)" >> $GITHUB_ENV + - name: Release Backend on Heroku + uses: akhileshns/heroku-deploy@581dd286c962b6972d427fcf8980f60755c15520 + with: + heroku_api_key: ${{ secrets.HEROKU_API_KEY }} + heroku_app_name: mitopen-rc + heroku_email: ${{ secrets.HEROKU_EMAIL }} + branch: release-candidate - - name: Build frontend - run: NODE_ENV=production yarn build + - name: Build and push the Docker image env: + HEROKU_APP_NAME: mitopen-rc-nextjs + HEROKU_API_KEY: ${{ secrets.HEROKU_API_KEY }} + ORIGIN: https://next.rc.learn.mit.edu + MITOL_API_BASE_URL: https://api.rc.learn.mit.edu + SITE_NAME: MIT Learn + SUPPORT_EMAIL: mitlearn-support@mit.edu EMBEDLY_KEY: ${{ secrets.EMBEDLY_KEY_RC }} - POSTHOG_ENABLED: true + MITOL_AXIOS_WITH_CREDENTIALS: true + CSRF_COOKIE_NAME: ${{ secrets.CSRF_COOKIE_NAME_RC }} POSTHOG_API_HOST: https://app.posthog.com - POSTHOG_TIMEOUT_MS: 1000 POSTHOG_PROJECT_ID: ${{ secrets.POSTHOG_PROJECT_ID_RC }} - POSTHOG_PROJECT_API_KEY: ${{ secrets.POSTHOG_PROJECT_API_KEY_RC }} + POSTHOG_API_KEY: ${{ secrets.POSTHOG_PROJECT_API_KEY_RC }} SENTRY_DSN: ${{ secrets.SENTRY_DSN_RC }} SENTRY_ENV: ${{ secrets.MITOL_ENVIRONMENT_RC }} - CSRF_COOKIE_NAME: ${{ secrets.CSRF_COOKIE_NAME_RC }} + SENTRY_PROFILES_SAMPLE_RATE: ${{ secrets.SENTRY_PROFILES_SAMPLE_RATE_RC }} + SENTRY_TRACES_SAMPLE_RATE: ${{ secrets.SENTRY_TRACES_SAMPLE_RATE_RC }} APPZI_URL: ${{ secrets.APPZI_URL_RC }} - MITOL_AXIOS_WITH_CREDENTIALS: true - MITOL_API_BASE_URL: https://api.rc.learn.mit.edu - MITOL_SUPPORT_EMAIL: mitlearn-support@mit.edu - - - uses: akhileshns/heroku-deploy@581dd286c962b6972d427fcf8980f60755c15520 - with: - heroku_api_key: ${{ secrets.HEROKU_API_KEY }} - heroku_app_name: "mitopen-rc" - heroku_email: ${{ secrets.HEROKU_EMAIL }} - branch: release-candidate + VERSION: ${{ github.sha }} + run: | + heroku container:push web \ + --app $HEROKU_APP_NAME \ + --recursive \ + --arg NEXT_PUBLIC_ORIGIN=$ORIGIN,\ + NEXT_PUBLIC_MITOL_API_BASE_URL=$MITOL_API_BASE_URL,\ + NEXT_PUBLIC_SITE_NAME="$SITE_NAME",\ + NEXT_PUBLIC_MITOL_SUPPORT_EMAIL=$SUPPORT_EMAIL,\ + NEXT_PUBLIC_EMBEDLY_KEY=$EMBEDLY_KEY,\ + NEXT_PUBLIC_MITOL_AXIOS_WITH_CREDENTIALS=$MITOL_AXIOS_WITH_CREDENTIALS,\ + NEXT_PUBLIC_CSRF_COOKIE_NAME=$CSRF_COOKIE_NAME,\ + NEXT_PUBLIC_POSTHOG_API_HOST=$POSTHOG_API_HOST,\ + NEXT_PUBLIC_POSTHOG_PROJECT_ID=$POSTHOG_PROJECT_ID,\ + NEXT_PUBLIC_POSTHOG_API_KEY=$POSTHOG_API_KEY,\ + NEXT_PUBLIC_SENTRY_DSN=$SENTRY_DSN,\ + NEXT_PUBLIC_SENTRY_ENV=$SENTRY_ENV,\ + NEXT_PUBLIC_SENTRY_PROFILES_SAMPLE_RATE=$SENTRY_PROFILES_SAMPLE_RATE,\ + NEXT_PUBLIC_SENTRY_TRACES_SAMPLE_RATE=$SENTRY_TRACES_SAMPLE_RATE,\ + NEXT_PUBLIC_APPZI_URL=$APPZI_URL,\ + NEXT_PUBLIC_VERSION=$VERSION \ + --context-path . - - name: Write commit SHA to file - run: echo $GITHUB_SHA > frontends/mit-learn/build/static/hash.txt - - - name: Upload frontend build to s3 - uses: jakejarvis/s3-sync-action@master - with: - args: --acl public-read --follow-symlinks + - name: Release Frontend on Heroku env: - AWS_S3_BUCKET: ol-mitlearn-app-storage-rc - AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID_RC }} - AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY_RC }} - SOURCE_DIR: "frontends/mit-learn/build" # optional: defaults to entire repository - DEST_DIR: "frontend" # This dir will get cluttered but it is okay for now + HEROKU_APP_NAME: mitopen-rc-nextjs + HEROKU_API_KEY: ${{ secrets.HEROKU_API_KEY }} + run: heroku container:release --app $HEROKU_APP_NAME web - name: Purge Fastly cache uses: jcoene/fastly-purge-action@master with: - api_key: "${{ secrets.FASTLY_API_KEY_RC }}" - service_id: "${{ secrets.FASTLY_SERVICE_ID_RC }}" + api_key: "${{ secrets.FASTLY_API_KEY_RC_NEXTJS }}" + service_id: "${{ secrets.FASTLY_SERVICE_ID_RC_NEXTJS }}" # runs ONLY on a failure of the CI workflow on-failure: diff --git a/frontends/main/Dockerfile.web b/frontends/main/Dockerfile.web index 36e4b9b550..f1cd82337d 100644 --- a/frontends/main/Dockerfile.web +++ b/frontends/main/Dockerfile.web @@ -8,27 +8,44 @@ # --build-arg NEXT_PUBLIC_EMBEDLY_KEY= \ # --build-arg NEXT_PUBLIC_MITOL_AXIOS_WITH_CREDENTIALS=true \ # --build-arg NEXT_PUBLIC_CSRF_COOKIE_NAME=csrftoken-local \ +# --build-arg NEXT_PUBLIC_POSTHOG_API_HOST= \ +# --build-arg NEXT_PUBLIC_POSTHOG_PROJECT_ID= \ +# --build-arg NEXT_PUBLIC_POSTHOG_API_KEY= \ +# --build-arg NEXT_PUBLIC_SENTRY_DSN= \ +# --build-arg NEXT_PUBLIC_SENTRY_ENV= \ +# --build-arg NEXT_PUBLIC_SENTRY_PROFILES_SAMPLE_RATE= \ +# --build-arg NEXT_PUBLIC_SENTRY_TRACES_SAMPLE_RATE= \ +# --build-arg NEXT_PUBLIC_APPZI_URL= \ +# --build-arg NEXT_PUBLIC_VERSION= \ # -t mitodl/mit-learn-frontend:latest . + # Run: # docker run -p 8062:8062 -e PORT=8062 mit-learn-frontend:latest - # Heroku build/push: # # heroku container:push web \ # --app mitopen-rc-nextjs \ # --recursive \ -# --arg NEXT_PUBLIC_ORIGIN=https://next.rc.learn.mit.edu, \ -# NEXT_PUBLIC_MITOL_API_BASE_URL=https://api.rc.learn.mit.edu, \ -# NEXT_PUBLIC_SITE_NAME="MIT Learn", \ -# NEXT_PUBLIC_MITOL_SUPPORT_EMAIL=mitlearn-support@mit.edu, \ -# NEXT_PUBLIC_EMBEDLY_KEY=*******, \ -# NEXT_PUBLIC_MITOL_AXIOS_WITH_CREDENTIALS=true, \ -# NEXT_PUBLIC_CSRF_COOKIE_NAME=learn-rc-csrftoken \ +# --arg NEXT_PUBLIC_ORIGIN=https://next.rc.learn.mit.edu +# NEXT_PUBLIC_MITOL_API_BASE_URL=https://api.rc.learn.mit.edu,\ +# NEXT_PUBLIC_SITE_NAME="MIT Learn",\ +# NEXT_PUBLIC_MITOL_SUPPORT_EMAIL=mitlearn-support@mit.edu,\ +# NEXT_PUBLIC_EMBEDLY_KEY=*******,\ +# NEXT_PUBLIC_MITOL_AXIOS_WITH_CREDENTIALS=$MITOL_AXIOS_WITH_CREDENTIALS,\ +# NEXT_PUBLIC_CSRF_COOKIE_NAME=learn-rc-csrftoken,\ +# NEXT_PUBLIC_POSTHOG_API_HOST=$POSTHOG_API_HOST,\ +# NEXT_PUBLIC_POSTHOG_PROJECT_ID=$POSTHOG_PROJECT_ID,\ +# NEXT_PUBLIC_POSTHOG_API_KEY=$POSTHOG_API_KEY,\ +# NEXT_PUBLIC_SENTRY_DSN=$SENTRY_DSN,\ +# NEXT_PUBLIC_SENTRY_ENV=$SENTRY_ENV,\ +# NEXT_PUBLIC_SENTRY_PROFILES_SAMPLE_RATE=$SENTRY_PROFILES_SAMPLE_RATE,\ +# NEXT_PUBLIC_SENTRY_TRACES_SAMPLE_RATE=$SENTRY_TRACES_SAMPLE_RATE,\ +# NEXT_PUBLIC_APPZI_URL=$APPZI_URL,\ +# NEXT_PUBLIC_VERSION=$VERSION \ # --context-path . - # Heroku release: # heroku ps:scale frontend=1 --app mitopen-rc-nextjs # heroku container:release --app mitopen-rc-nextjs frontend @@ -97,6 +114,27 @@ ENV NEXT_PUBLIC_MITOL_AXIOS_WITH_CREDENTIALS=$NEXT_PUBLIC_MITOL_AXIOS_WITH_CREDE ARG NEXT_PUBLIC_CSRF_COOKIE_NAME ENV NEXT_PUBLIC_CSRF_COOKIE_NAME=$NEXT_PUBLIC_CSRF_COOKIE_NAME +ARG NEXT_PUBLIC_POSTHOG_API_HOST +ENV NEXT_PUBLIC_POSTHOG_API_HOST=$NEXT_PUBLIC_POSTHOG_API_HOST +ARG NEXT_PUBLIC_POSTHOG_PROJECT_ID +ENV NEXT_PUBLIC_POSTHOG_PROJECT_ID=$NEXT_PUBLIC_POSTHOG_PROJECT_ID +ARG NEXT_PUBLIC_POSTHOG_API_KEY +ENV NEXT_PUBLIC_POSTHOG_API_KEY=$NEXT_PUBLIC_POSTHOG_API_KEY + +ARG NEXT_PUBLIC_SENTRY_DSN +ENV NEXT_PUBLIC_SENTRY_DSN=$NEXT_PUBLIC_SENTRY_DSN +ARG NEXT_PUBLIC_SENTRY_ENV +ENV NEXT_PUBLIC_SENTRY_ENV=$NEXT_PUBLIC_SENTRY_ENV +ARG NEXT_PUBLIC_VERSION +ENV NEXT_PUBLIC_VERSION=$NEXT_PUBLIC_VERSION +ARG NEXT_PUBLIC_SENTRY_PROFILES_SAMPLE_RATE +ENV NEXT_PUBLIC_SENTRY_PROFILES_SAMPLE_RATE=$NEXT_PUBLIC_SENTRY_PROFILES_SAMPLE_RATE +ARG NEXT_PUBLIC_SENTRY_TRACES_SAMPLE_RATE +ENV NEXT_PUBLIC_SENTRY_TRACES_SAMPLE_RATE=$NEXT_PUBLIC_SENTRY_TRACES_SAMPLE_RATE + +ARG NEXT_PUBLIC_APPZI_URL +ENV NEXT_PUBLIC_APPZI_URL=$NEXT_PUBLIC_APPZI_URL + ENV NEXT_PUBLIC_DEFAULT_SEARCH_MODE="phrase" ENV NEXT_PUBLIC_DEFAULT_SEARCH_SLOP="6" ENV NEXT_PUBLIC_DEFAULT_SEARCH_STALENESS_PENALTY="2.5" diff --git a/frontends/main/src/components/ConfiguredPostHogProvider/ConfiguredPostHogProvider.tsx b/frontends/main/src/components/ConfiguredPostHogProvider/ConfiguredPostHogProvider.tsx index 78b3e9cb8e..e69b9afc5d 100644 --- a/frontends/main/src/components/ConfiguredPostHogProvider/ConfiguredPostHogProvider.tsx +++ b/frontends/main/src/components/ConfiguredPostHogProvider/ConfiguredPostHogProvider.tsx @@ -4,7 +4,7 @@ import { PostHogProvider } from "posthog-js/react" const ConfiguredPostHogProvider: React.FC<{ children: React.ReactNode }> = ({ children, }) => { - const apiKey = process.env.NEXT_PUBLIC_POSTHOG_PROJECT_API_KEY || "" + const apiKey = process.env.NEXT_PUBLIC_POSTHOG_API_KEY || "" const apiHost = process.env.NEXT_PUBLIC_POSTHOG_API_HOST || "https://us.i.posthog.com" const featureFlags = JSON.parse(process.env.FEATURE_FLAGS || "") diff --git a/frontends/main/src/page-components/Dialogs/AddToListDialog.tsx b/frontends/main/src/page-components/Dialogs/AddToListDialog.tsx index 08d03c11df..8d26f98175 100644 --- a/frontends/main/src/page-components/Dialogs/AddToListDialog.tsx +++ b/frontends/main/src/page-components/Dialogs/AddToListDialog.tsx @@ -104,7 +104,7 @@ const AddToListDialogInner: React.FC = ({ }, onSubmit: async (values) => { if (resource) { - if (process.env.NEXT_PUBLIC_POSTHOG_PROJECT_API_KEY) { + if (process.env.NEXT_PUBLIC_POSTHOG_API_KEY) { posthog.capture("lr_add_to_list", { listType: listType, resourceId: resource?.id, diff --git a/frontends/main/src/page-components/LearningResourceDrawer/LearningResourceDrawer.test.tsx b/frontends/main/src/page-components/LearningResourceDrawer/LearningResourceDrawer.test.tsx index 9b895813db..391c2a25e9 100644 --- a/frontends/main/src/page-components/LearningResourceDrawer/LearningResourceDrawer.test.tsx +++ b/frontends/main/src/page-components/LearningResourceDrawer/LearningResourceDrawer.test.tsx @@ -41,7 +41,7 @@ describe("LearningResourceDrawer", () => { "Renders drawer content when resource=id is in the URL and captures the view if PostHog $descriptor", async ({ enablePostHog }) => { setMockResponse.get(urls.userMe.get(), {}) - process.env.NEXT_PUBLIC_POSTHOG_PROJECT_API_KEY = enablePostHog + process.env.NEXT_PUBLIC_POSTHOG_API_KEY = enablePostHog ? "12345abcdef" // pragma: allowlist secret : "" const resource = factories.learningResources.resource() diff --git a/frontends/main/src/page-components/LearningResourceDrawer/LearningResourceDrawer.tsx b/frontends/main/src/page-components/LearningResourceDrawer/LearningResourceDrawer.tsx index f4a7aaf3f4..eea8943d73 100644 --- a/frontends/main/src/page-components/LearningResourceDrawer/LearningResourceDrawer.tsx +++ b/frontends/main/src/page-components/LearningResourceDrawer/LearningResourceDrawer.tsx @@ -26,7 +26,7 @@ const RESOURCE_DRAWER_PARAMS = [RESOURCE_DRAWER_QUERY_PARAM] as const const useCapturePageView = (resourceId: number) => { const { data, isSuccess } = useLearningResourcesDetail(Number(resourceId)) const posthog = usePostHog() - const apiKey = process.env.NEXT_PUBLIC_POSTHOG_PROJECT_API_KEY + const apiKey = process.env.NEXT_PUBLIC_POSTHOG_API_KEY useEffect(() => { if (!apiKey || apiKey.length < 1) return diff --git a/frontends/main/src/page-components/SearchDisplay/SearchDisplay.tsx b/frontends/main/src/page-components/SearchDisplay/SearchDisplay.tsx index 022a5a8f52..233422cb17 100644 --- a/frontends/main/src/page-components/SearchDisplay/SearchDisplay.tsx +++ b/frontends/main/src/page-components/SearchDisplay/SearchDisplay.tsx @@ -617,15 +617,14 @@ const SearchDisplay: React.FC = ({ const posthog = usePostHog() - const NEXT_PUBLIC_POSTHOG_PROJECT_API_KEY = - process.env.NEXT_PUBLIC_POSTHOG_PROJECT_API_KEY + const NEXT_PUBLIC_POSTHOG_API_KEY = process.env.NEXT_PUBLIC_POSTHOG_API_KEY const toggleMobileDrawer = (newOpen: boolean) => () => { setMobileDrawerOpen(newOpen) } const captureSearchEvent = () => { - if (NEXT_PUBLIC_POSTHOG_PROJECT_API_KEY) { + if (NEXT_PUBLIC_POSTHOG_API_KEY) { posthog.capture("search_update") } } diff --git a/frontends/main/src/page-components/SearchField/SearchField.tsx b/frontends/main/src/page-components/SearchField/SearchField.tsx index b19c22f968..fdb476928a 100644 --- a/frontends/main/src/page-components/SearchField/SearchField.tsx +++ b/frontends/main/src/page-components/SearchField/SearchField.tsx @@ -25,7 +25,7 @@ const SearchField: React.FC = ({ ) => { onSubmit(event) setPage?.(1) - if (process.env.NEXT_PUBLIC_POSTHOG_PROJECT_API_KEY) { + if (process.env.NEXT_PUBLIC_POSTHOG_API_KEY) { posthog.capture("search_update", { isEnter: isEnter }) } } diff --git a/frontends/main/validateEnv.js b/frontends/main/validateEnv.js index ed1ff36222..d83fa2aa35 100644 --- a/frontends/main/validateEnv.js +++ b/frontends/main/validateEnv.js @@ -21,7 +21,7 @@ const schema = yup.object().shape({ .string() .oneOf(["true", "false"]), NEXT_PUBLIC_CSRF_COOKIE_NAME: yup.string().required(), - NEXT_PUBLIC_POSTHOG_PROJECT_API_KEY: yup.string(), + NEXT_PUBLIC_POSTHOG_API_KEY: yup.string(), NEXT_PUBLIC_POSTHOG_FEATURE_PREFIX: yup.string(), NEXT_PUBLIC_POSTHOG_API_HOST: yup.string(), })