diff --git a/.env.example b/.env.example index cd81e8b..4882799 100644 --- a/.env.example +++ b/.env.example @@ -13,6 +13,7 @@ LICENSE= # NEXT_PUBLIC_APP_URL=http://localhost:3000 NEXT_PUBLIC_WEBAPP_URL=http://localhost:3000 +NEXT_PUBLIC_API_V2_URL=http://localhost:5555/api/v2 # Configure NEXTAUTH_URL manually if needed, otherwise it will resolve to {NEXT_PUBLIC_WEBAPP_URL}/api/auth # NEXTAUTH_URL=http://localhost:3000/api/auth diff --git a/.github/workflows/docker-build-push-dockerhub.yml b/.github/workflows/docker-build-push-dockerhub.yml index 21559c4..c467e69 100644 --- a/.github/workflows/docker-build-push-dockerhub.yml +++ b/.github/workflows/docker-build-push-dockerhub.yml @@ -20,7 +20,7 @@ on: # Uncomment below to allow specific version workflow run # inputs: # version: - # description: 'Version to build' + # description: 'Version to build' # required: true # Leaving in example for releases. Initially we simply push to 'latest' @@ -37,6 +37,12 @@ jobs: # Steps represent a sequence of tasks that will be executed as part of the job steps: + - name: Free Disk Space (Ubuntu) + uses: jlumbroso/free-disk-space@main + with: + # Free about 4.5 GB, elminating our disk space issues + tool-cache: true + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it, uncomment below # - name: Checkout code at specified version # uses: actions/checkout@v2 @@ -66,7 +72,7 @@ jobs: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - + - name: Docker meta id: meta uses: docker/metadata-action@v5 @@ -93,7 +99,7 @@ jobs: - name: Start database run: | docker compose up -d database - + - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 with: @@ -118,6 +124,7 @@ jobs: labels: ${{ steps.meta.outputs.labels }} build-args: | NEXT_PUBLIC_WEBAPP_URL=${{ env.NEXT_PUBLIC_WEBAPP_URL }} + NEXT_PUBLIC_API_V2_URL=${{ env.NEXT_PUBLIC_API_V2_URL }} NEXT_PUBLIC_LICENSE_CONSENT=${{ env.NEXT_PUBLIC_LICENSE_CONSENT }} NEXT_PUBLIC_TELEMETRY_KEY=${{ env.NEXT_PUBLIC_TELEMETRY_KEY }} DATABASE_URL=postgresql://${{ env.POSTGRES_USER }}:${{ env.POSTGRES_PASSWORD }}@${{ env.DATABASE_HOST }}/${{ env.POSTGRES_DB }} @@ -128,7 +135,7 @@ jobs: tags="${{ steps.meta.outputs.tags }}" IFS=',' read -ra ADDR <<< "$tags" # Convert string to array using ',' as delimiter tag=${ADDR[0]} # Get the first tag - + docker run --rm --network stack \ -p 3000:3000 \ -e DATABASE_URL=postgresql://${{ env.POSTGRES_USER }}:${{ env.POSTGRES_PASSWORD }}@database/${{ env.POSTGRES_DB }} \ @@ -136,7 +143,7 @@ jobs: -e NEXTAUTH_SECRET=${{ env.NEXTAUTH_SECRET }} \ -e CALENDSO_ENCRYPTION_KEY=${{ env.CALENDSO_ENCRYPTION_KEY }} \ $tag & - + server_pid=$! @@ -144,7 +151,7 @@ jobs: sleep 120 echo ${{ env.NEXT_PUBLIC_WEBAPP_URL }}/auth/login - + for i in {1..60}; do echo "Checking server health ($i/60)..." response=$(curl -o /dev/null -s -w "%{http_code}" ${{ env.NEXT_PUBLIC_WEBAPP_URL }}/auth/login) @@ -157,22 +164,13 @@ jobs: fi sleep 1 done - + echo "Server health check failed" kill $server_pid exit 1 env: NEXTAUTH_SECRET: 'EI4qqDpcfdvf4A+0aQEEx8JjHxHSy4uWiZw/F32K+pA=' CALENDSO_ENCRYPTION_KEY: '0zfLtY99wjeLnsM7qsa8xsT+Q0oSgnOL' - - - # - name: Push image - # run: | - # tags="${{ steps.meta.outputs.tags }}" - # IFS=',' read -ra ADDR <<< "$tags" # Convert string to array using ',' as delimiter - # for tag in "${ADDR[@]}"; do - # docker push $tag - # done - name: Push image id: docker_push @@ -180,21 +178,22 @@ jobs: with: context: ./ file: ./Dockerfile - push: true + push: true platforms: linux/amd64 tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} build-args: | NEXT_PUBLIC_WEBAPP_URL=${{ env.NEXT_PUBLIC_WEBAPP_URL }} + NEXT_PUBLIC_API_V2_URL=${{ env.NEXT_PUBLIC_API_V2_URL }} NEXT_PUBLIC_LICENSE_CONSENT=${{ env.NEXT_PUBLIC_LICENSE_CONSENT }} NEXT_PUBLIC_TELEMETRY_KEY=${{ env.NEXT_PUBLIC_TELEMETRY_KEY }} DATABASE_URL=postgresql://${{ env.POSTGRES_USER }}:${{ env.POSTGRES_PASSWORD }}@${{ env.DATABASE_HOST }}/${{ env.POSTGRES_DB }} DATABASE_DIRECT_URL=postgresql://${{ env.POSTGRES_USER }}:${{ env.POSTGRES_PASSWORD }}@${{ env.DATABASE_HOST }}/${{ env.POSTGRES_DB }} if: ${{ !github.event.release.prerelease }} - + - name: Image digest run: echo ${{ steps.docker_build.outputs.digest }} - + - name: Cleanup run: | docker compose down diff --git a/Dockerfile b/Dockerfile index 167c7c4..e8a0dad 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,8 +8,10 @@ ARG DATABASE_URL ARG NEXTAUTH_SECRET=secret ARG CALENDSO_ENCRYPTION_KEY=secret ARG MAX_OLD_SPACE_SIZE=4096 +ARG NEXT_PUBLIC_API_V2_URL ENV NEXT_PUBLIC_WEBAPP_URL=http://NEXT_PUBLIC_WEBAPP_URL_PLACEHOLDER \ + NEXT_PUBLIC_API_V2_URL=$NEXT_PUBLIC_API_V2_URL \ NEXT_PUBLIC_LICENSE_CONSENT=$NEXT_PUBLIC_LICENSE_CONSENT \ CALCOM_TELEMETRY_DISABLED=$CALCOM_TELEMETRY_DISABLED \ DATABASE_URL=$DATABASE_URL \ @@ -21,16 +23,16 @@ ENV NEXT_PUBLIC_WEBAPP_URL=http://NEXT_PUBLIC_WEBAPP_URL_PLACEHOLDER \ COPY calcom/package.json calcom/yarn.lock calcom/.yarnrc.yml calcom/playwright.config.ts calcom/turbo.json calcom/git-init.sh calcom/git-setup.sh ./ COPY calcom/.yarn ./.yarn COPY calcom/apps/web ./apps/web +COPY calcom/apps/api/v2 ./apps/api/v2 COPY calcom/packages ./packages COPY calcom/tests ./tests -RUN yarn config set httpTimeout 1200000 && \ - npx turbo prune --scope=@calcom/web --docker && \ - yarn install && \ - yarn db-deploy && \ - yarn --cwd packages/prisma seed-app-store - -RUN yarn turbo run build --filter=@calcom/web +RUN yarn config set httpTimeout 1200000 +RUN npx turbo prune --scope=@calcom/web --docker +RUN yarn install +RUN yarn db-deploy +RUN yarn --cwd packages/prisma seed-app-store +RUN yarn --cwd apps/web workspace @calcom/web run build # RUN yarn plugin import workspace-tools && \ # yarn workspaces focus --all --production diff --git a/docker-compose.yaml b/docker-compose.yaml index 9004bbb..0a01514 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -27,6 +27,7 @@ services: dockerfile: Dockerfile args: NEXT_PUBLIC_WEBAPP_URL: ${NEXT_PUBLIC_WEBAPP_URL} + NEXT_PUBLIC_API_V2_URL: ${NEXT_PUBLIC_API_V2_URL} NEXT_PUBLIC_LICENSE_CONSENT: ${NEXT_PUBLIC_LICENSE_CONSENT} CALCOM_TELEMETRY_DISABLED: ${CALCOM_TELEMETRY_DISABLED} NEXTAUTH_SECRET: ${NEXTAUTH_SECRET}