From ce333117d92e3f889da33f6c5a6308b8d10d31e2 Mon Sep 17 00:00:00 2001 From: Na'aman Hirschfeld Date: Sun, 10 Dec 2023 12:40:50 +0100 Subject: [PATCH 1/3] chore: fix next build issues and add frontend docker build stage --- .github/workflows/build-frontend.yaml | 55 +++++++++++++++++++ docker/Dockerfile.frontend | 15 +++-- .../src/app/[locale]/privacy-policy/page.tsx | 2 - .../components/static-site/cta-section.tsx | 2 + .../static-site/features-section.tsx | 2 + .../src/components/static-site/footer.tsx | 2 + .../src/components/static-site/header.tsx | 2 + .../components/static-site/intro-section.tsx | 2 + monorepo.iml | 5 ++ 9 files changed, 79 insertions(+), 8 deletions(-) create mode 100644 .github/workflows/build-frontend.yaml diff --git a/.github/workflows/build-frontend.yaml b/.github/workflows/build-frontend.yaml new file mode 100644 index 00000000..fdb9b4e3 --- /dev/null +++ b/.github/workflows/build-frontend.yaml @@ -0,0 +1,55 @@ +name: 'Build (Frontend)' +on: + push: + branches: + - development + - production + paths: + - '.github/workflows/build-frontend.yaml' + - 'package.json' + - 'shared/ts/**' + - 'frontend/**' +env: + SERVICE_NAME: frontend + FILE_PATH: ./docker/Dockerfile.frontend +jobs: + build: + runs-on: ubuntu-latest + timeout-minutes: 15 + environment: ${{ github.ref_name }} + permissions: + contents: read + id-token: write + steps: + - name: Checkout + id: checkout + uses: actions/checkout@v4 + - name: Authenticate to Google Cloud + id: auth + uses: google-github-actions/auth@v2 + with: + token_format: access_token + workload_identity_provider: projects/${{vars.GCP_PROJECT_NUMBER}}/locations/global/workloadIdentityPools/${{vars.GCP_WORKLOAD_IDENTITY_POOL}}/providers/${{vars.GCP_OIDC_PROVIDER_NAME}} + service_account: ${{vars.GCP_SERVICE_ACCOUNT_NAME}}@${{vars.GCP_PROJECT_ID}}.iam.gserviceaccount.com + - name: Login to Artifact Registry + uses: docker/login-action@v3 + with: + registry: ${{vars.GCP_REGION}}-docker.pkg.dev + username: oauth2accesstoken + password: ${{ steps.auth.outputs.access_token }} + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + - name: Set up Docker BuildX + uses: docker/setup-buildx-action@v3 + - name: Build and Push + uses: docker/build-push-action@v5 + with: + push: true + context: . + file: ${{env.FILE_PATH}} + build-args: | + BUILD_TARGET=${{env.SERVICE_NAME}} + SERVICE_NAME=${{env.SERVICE_NAME}} + tags: | + ${{vars.GCP_REGION}}-docker.pkg.dev/${{vars.GCP_PROJECT_ID}}/basemind/${{env.SERVICE_NAME}}:latest + ${{vars.GCP_REGION}}-docker.pkg.dev/${{vars.GCP_PROJECT_ID}}/basemind/${{env.SERVICE_NAME}}:${{github.sha}} diff --git a/docker/Dockerfile.frontend b/docker/Dockerfile.frontend index 50bfad57..86e28550 100644 --- a/docker/Dockerfile.frontend +++ b/docker/Dockerfile.frontend @@ -4,16 +4,18 @@ RUN npm i -g pnpm FROM base AS install WORKDIR /app/ COPY package.json pnpm-lock.yaml tsconfig.json .npmrc pnpm-workspace.yaml ./ -COPY frontend/*.* ./frontend/ +COPY frontend/package.json frontend/pnpm-lock.yaml frontend/tsconfig.json ./frontend/ RUN pnpm install -r --ignore-scripts \ && pnpm add -D @next/swc-linux-arm64-gnu @next/swc-linux-arm64-musl -w +COPY frontend/next.config.js frontend/tailwind.config.ts ./frontend/ FROM install AS build WORKDIR /app/ -COPY shared/ts shared/ts +COPY shared/ts/src shared/ts/src COPY frontend/src frontend/src COPY frontend/public frontend/public -WORKDIR /app/frontend + +WORKDIR /app/frontend/ RUN pnpm run build FROM base AS app @@ -25,10 +27,11 @@ RUN addgroup --system --gid 1001 nodejs \ && adduser --system --uid 1001 app COPY frontend/public frontend/public -COPY --from=build --chown=app:nodejs /app/frontend/dist frontend/dist +COPY --from=build --chown=app:nodejs /app/frontend/dist /app/frontend/dist -COPY package.json pnpm-lock.yaml .npmrc pnpm-workspace.yaml ./ -COPY frontend/package.json frontend/pnpm-lock.yaml frontend/next.config.js frontend/tailwind.config.js ./frontend/ +COPY package.json pnpm-lock.yaml tsconfig.json .npmrc pnpm-workspace.yaml ./ +COPY frontend/package.json frontend/pnpm-lock.yaml frontend/tsconfig.json ./frontend/ +COPY frontend/next.config.js frontend/tailwind.config.ts ./frontend/ RUN pnpm install -r --prod WORKDIR /app/frontend diff --git a/frontend/src/app/[locale]/privacy-policy/page.tsx b/frontend/src/app/[locale]/privacy-policy/page.tsx index fcc4fdb4..6c7b2914 100644 --- a/frontend/src/app/[locale]/privacy-policy/page.tsx +++ b/frontend/src/app/[locale]/privacy-policy/page.tsx @@ -4,12 +4,10 @@ import { } from '@/components/legal-document-view'; import { Footer } from '@/components/static-site/footer'; import { StaticPageHeader } from '@/components/static-site/header'; -import { TrackStaticPage } from '@/components/static-site/track-static-page'; export default function PrivacyPolicyPage() { return (
-
diff --git a/frontend/src/components/static-site/cta-section.tsx b/frontend/src/components/static-site/cta-section.tsx index 5ee281e8..a42e7120 100644 --- a/frontend/src/components/static-site/cta-section.tsx +++ b/frontend/src/components/static-site/cta-section.tsx @@ -1,3 +1,5 @@ +'use client'; + import Link from 'next/link'; import { useTranslations } from 'next-intl'; diff --git a/frontend/src/components/static-site/features-section.tsx b/frontend/src/components/static-site/features-section.tsx index da5910e2..e0d45ca5 100644 --- a/frontend/src/components/static-site/features-section.tsx +++ b/frontend/src/components/static-site/features-section.tsx @@ -1,3 +1,5 @@ +'use client'; + import Image from 'next/image'; import { useTranslations } from 'next-intl'; diff --git a/frontend/src/components/static-site/footer.tsx b/frontend/src/components/static-site/footer.tsx index 6a0da24b..2a6a5f3c 100644 --- a/frontend/src/components/static-site/footer.tsx +++ b/frontend/src/components/static-site/footer.tsx @@ -1,3 +1,5 @@ +'use client'; + import Link from 'next/link'; import { useTranslations } from 'next-intl'; diff --git a/frontend/src/components/static-site/header.tsx b/frontend/src/components/static-site/header.tsx index 8570fa16..d6ac17dd 100644 --- a/frontend/src/components/static-site/header.tsx +++ b/frontend/src/components/static-site/header.tsx @@ -1,3 +1,5 @@ +'use client'; + import Link from 'next/link'; import { useTranslations } from 'next-intl'; import { ChevronRight } from 'react-bootstrap-icons'; diff --git a/frontend/src/components/static-site/intro-section.tsx b/frontend/src/components/static-site/intro-section.tsx index 4f63ce62..704da140 100644 --- a/frontend/src/components/static-site/intro-section.tsx +++ b/frontend/src/components/static-site/intro-section.tsx @@ -1,3 +1,5 @@ +'use client'; + import Image from 'next/image'; import Link from 'next/link'; import { useTranslations } from 'next-intl'; diff --git a/monorepo.iml b/monorepo.iml index 92862012..2843a056 100644 --- a/monorepo.iml +++ b/monorepo.iml @@ -1,5 +1,10 @@ + + + + + From 9ae7ce0aab6a46617800600376b45b0667581e0f Mon Sep 17 00:00:00 2001 From: Na'aman Hirschfeld Date: Sun, 10 Dec 2023 12:41:51 +0100 Subject: [PATCH 2/3] chore: temp allowed build in PR --- .github/workflows/build-frontend.yaml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build-frontend.yaml b/.github/workflows/build-frontend.yaml index fdb9b4e3..9834fadf 100644 --- a/.github/workflows/build-frontend.yaml +++ b/.github/workflows/build-frontend.yaml @@ -1,5 +1,8 @@ name: 'Build (Frontend)' on: + pull_request: + branches: + - main push: branches: - development @@ -16,7 +19,7 @@ jobs: build: runs-on: ubuntu-latest timeout-minutes: 15 - environment: ${{ github.ref_name }} + environment: development # ${{ github.ref_name }} permissions: contents: read id-token: write From a4ca319bd334622d8b9e77d80ef10de12814b64b Mon Sep 17 00:00:00 2001 From: Na'aman Hirschfeld Date: Sun, 10 Dec 2023 12:46:50 +0100 Subject: [PATCH 3/3] chore: allow build only on the designated branches --- .github/workflows/build-frontend.yaml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/workflows/build-frontend.yaml b/.github/workflows/build-frontend.yaml index 9834fadf..fdb9b4e3 100644 --- a/.github/workflows/build-frontend.yaml +++ b/.github/workflows/build-frontend.yaml @@ -1,8 +1,5 @@ name: 'Build (Frontend)' on: - pull_request: - branches: - - main push: branches: - development @@ -19,7 +16,7 @@ jobs: build: runs-on: ubuntu-latest timeout-minutes: 15 - environment: development # ${{ github.ref_name }} + environment: ${{ github.ref_name }} permissions: contents: read id-token: write