diff --git a/.github/workflows/testnet-package.yaml b/.github/workflows/testnet-package.yaml new file mode 100644 index 0000000..6945a1b --- /dev/null +++ b/.github/workflows/testnet-package.yaml @@ -0,0 +1,76 @@ +name: Build and Push Image +on: + push: + branches: ['dev'] +jobs: + build-and-push-image: + runs-on: portkey-runner + permissions: + contents: read + outputs: + short_sha: ${{ steps.vars.outputs.short_sha }} + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Set short git commit SHA + id: vars + run: | + calculatedSha=$(git rev-parse --short ${{ github.sha }}) + echo "short_sha=$calculatedSha" >> "$GITHUB_OUTPUT" + - name: Create image tag + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ secrets.REPOSITORY_REGION }}-docker.pkg.dev/${{ secrets.PROJECT_ID }}/${{ secrets.REPOSITORY }}/portkey-crypto-gift # change this to your project frontend name + tags: | + type=sha + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Build and push + uses: docker/build-push-action@v5 + env: + NEXT_PUBLIC_APP_APPLE_REDIRECT_URI: ${{ secrets.NEXT_PUBLIC_APP_APPLE_REDIRECT_URI }} + NEXT_PUBLIC_APP_MAINNET_SERVICE: ${{ secrets.NEXT_PUBLIC_APP_MAINNET_SERVICE }} + NEXT_PUBLIC_APP_TESTNET_SERVICE: ${{ secrets.NEXT_PUBLIC_APP_TESTNET_SERVICE }} + NEXT_PUBLIC_APP_MAINNET_CONNECT: ${{ secrets.NEXT_PUBLIC_APP_MAINNET_CONNECT }} + NEXT_PUBLIC_APP_TESTNET_CONNECT: ${{ secrets.NEXT_PUBLIC_APP_TESTNET_CONNECT }} + NEXT_PUBLIC_APP_MAINNET_GRAPHQL: ${{ secrets.NEXT_PUBLIC_APP_MAINNET_GRAPHQL }} + NEXT_PUBLIC_APP_TESTNET_GRAPHQL: ${{ secrets.NEXT_PUBLIC_APP_TESTNET_GRAPHQL }} + NEXT_PUBLIC_APP_APPLE_REDIRECT_URI_V2: ${{ secrets.NEXT_PUBLIC_APP_APPLE_REDIRECT_URI_V2 }} + with: + context: . + push: true + platforms: linux/amd64 + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + cache-from: type=gha + cache-to: type=gha,mode=max + build-args: | + NEXT_PUBLIC_APP_APPLE_REDIRECT_URI: ${{ secrets.NEXT_PUBLIC_APP_APPLE_REDIRECT_URI }} + NEXT_PUBLIC_APP_MAINNET_SERVICE: ${{ secrets.NEXT_PUBLIC_APP_MAINNET_SERVICE }} + NEXT_PUBLIC_APP_TESTNET_SERVICE: ${{ secrets.NEXT_PUBLIC_APP_TESTNET_SERVICE }} + NEXT_PUBLIC_APP_MAINNET_CONNECT: ${{ secrets.NEXT_PUBLIC_APP_MAINNET_CONNECT }} + NEXT_PUBLIC_APP_TESTNET_CONNECT: ${{ secrets.NEXT_PUBLIC_APP_TESTNET_CONNECT }} + NEXT_PUBLIC_APP_MAINNET_GRAPHQL: ${{ secrets.NEXT_PUBLIC_APP_MAINNET_GRAPHQL }} + NEXT_PUBLIC_APP_TESTNET_GRAPHQL: ${{ secrets.NEXT_PUBLIC_APP_TESTNET_GRAPHQL }} + NEXT_PUBLIC_APP_APPLE_REDIRECT_URI_V2: ${{ secrets.NEXT_PUBLIC_APP_APPLE_REDIRECT_URI_V2 }} + + dispatch: + runs-on: portkey-runner + needs: build-and-push-image + steps: + - name: Deploy + uses: actions/github-script@v6 + with: + github-token: ${{ secrets.TOK }} + script: | + await github.rest.actions.createWorkflowDispatch({ + owner: 'Portkey-Wallet', + repo: 'devops', + workflow_id: 'deployment_testnet.yaml', + ref: 'master', + inputs: { + appName: 'portkey-login-page', + commit_sha: 'sha-${{ needs.build-and-push-image.outputs.short_sha }}', + } + }) diff --git a/Dockerfile b/Dockerfile index a590924..a9cbd28 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,14 +1,108 @@ -FROM node:16.18.1 +FROM node:20.11.0 AS base -ARG path=/opt/workspace/portkey-login-page +ARG web=/app +ARG external_port=3000 -WORKDIR ${path} +# Install dependencies only when needed +FROM base AS deps +# Check https://github.com/nodejs/docker-node/tree/b4117f9333da4138b03a546ec926ef50a31506c3#nodealpine to understand why libc6-compat might be needed. +# RUN apk add --no-cache libc6-compat git +WORKDIR ${web} -COPY . ${path} +# Install dependencies based on the preferred package manager +COPY package.json yarn.lock* package-lock.json* pnpm-lock.yaml* ./ +RUN yarn --frozen-lockfile -RUN yarn \ - && yarn build +# Rebuild the source code only when needed∏ +FROM base AS builder -ENTRYPOINT yarn start +ARG NEXT_PUBLIC_APP_APPLE_REDIRECT_URI +ARG NEXT_PUBLIC_APP_MAINNET_SERVICE +ARG NEXT_PUBLIC_APP_TESTNET_SERVICE +ARG NEXT_PUBLIC_APP_MAINNET_CONNECT +ARG NEXT_PUBLIC_APP_TESTNET_CONNECT +ARG NEXT_PUBLIC_APP_MAINNET_GRAPHQL +ARG NEXT_PUBLIC_APP_TESTNET_GRAPHQL +ARG NEXT_PUBLIC_APP_APPLE_REDIRECT_URI_V2 -EXPOSE 3000 \ No newline at end of file +ENV NEXT_PUBLIC_APP_APPLE_REDIRECT_URI=${NEXT_PUBLIC_APP_APPLE_REDIRECT_URI} +ENV NEXT_PUBLIC_APP_MAINNET_SERVICE=${NEXT_PUBLIC_APP_MAINNET_SERVICE} +ENV NEXT_PUBLIC_APP_TESTNET_SERVICE=${NEXT_PUBLIC_APP_TESTNET_SERVICE} +ENV NEXT_PUBLIC_APP_MAINNET_CONNECT=${NEXT_PUBLIC_APP_MAINNET_CONNECT} +ENV NEXT_PUBLIC_APP_TESTNET_CONNECT=${NEXT_PUBLIC_APP_TESTNET_CONNECT} +ENV NEXT_PUBLIC_APP_MAINNET_GRAPHQL=${NEXT_PUBLIC_APP_MAINNET_GRAPHQL} +ENV NEXT_PUBLIC_APP_TESTNET_GRAPHQL=${NEXT_PUBLIC_APP_TESTNET_GRAPHQL} +ENV NEXT_PUBLIC_APP_APPLE_REDIRECT_URI_V2=${NEXT_PUBLIC_APP_APPLE_REDIRECT_URI_V2} +WORKDIR ${web} +COPY --from=deps ${web}/node_modules ./node_modules +COPY . . + +# Next.js collects completely anonymous telemetry data about general usage. +# Learn more here: https://nextjs.org/telemetry +# Uncomment the following line in case you want to disable telemetry during the build. +ENV NEXT_TELEMETRY_DISABLED=1 + +# TODO - remove $ENVIRONMENT from CI builds after confirming no dependency +ARG ENVIRONMENT +ARG APP_ENV +RUN echo "...Building for ${ENVIRONMENT} / ${APP_ENV}" + +# more standardised build script, refer to package.json +RUN NODE_OPTIONS=--max-old-space-size=8192 \ + NEXT_PUBLIC_NETWORK_ENV="$APP_ENV" \ + npx next build + +# Production image, copy all the files and run next +FROM base AS runner + +ARG NEXT_PUBLIC_APP_APPLE_REDIRECT_URI +ARG NEXT_PUBLIC_APP_MAINNET_SERVICE +ARG NEXT_PUBLIC_APP_TESTNET_SERVICE +ARG NEXT_PUBLIC_APP_MAINNET_CONNECT +ARG NEXT_PUBLIC_APP_TESTNET_CONNECT +ARG NEXT_PUBLIC_APP_MAINNET_GRAPHQL +ARG NEXT_PUBLIC_APP_TESTNET_GRAPHQL +ARG NEXT_PUBLIC_APP_APPLE_REDIRECT_URI_V2 + +ENV NEXT_PUBLIC_APP_APPLE_REDIRECT_URI=${NEXT_PUBLIC_APP_APPLE_REDIRECT_URI} +ENV NEXT_PUBLIC_APP_MAINNET_SERVICE=${NEXT_PUBLIC_APP_MAINNET_SERVICE} +ENV NEXT_PUBLIC_APP_TESTNET_SERVICE=${NEXT_PUBLIC_APP_TESTNET_SERVICE} +ENV NEXT_PUBLIC_APP_MAINNET_CONNECT=${NEXT_PUBLIC_APP_MAINNET_CONNECT} +ENV NEXT_PUBLIC_APP_TESTNET_CONNECT=${NEXT_PUBLIC_APP_TESTNET_CONNECT} +ENV NEXT_PUBLIC_APP_MAINNET_GRAPHQL=${NEXT_PUBLIC_APP_MAINNET_GRAPHQL} +ENV NEXT_PUBLIC_APP_TESTNET_GRAPHQL=${NEXT_PUBLIC_APP_TESTNET_GRAPHQL} +ENV NEXT_PUBLIC_APP_APPLE_REDIRECT_URI_V2=${NEXT_PUBLIC_APP_APPLE_REDIRECT_URI_V2} +WORKDIR ${web} + +ENV NODE_ENV=production +# Uncomment the following line in case you want to disable telemetry during runtime. +ENV NEXT_TELEMETRY_DISABLED=1 + +RUN addgroup --system --gid 1001 nodejs +RUN adduser --system --uid 1001 nextjs + +# Set the correct permission for prerender cache +RUN mkdir .next +RUN chown nextjs:nodejs .next +RUN ls .next + +# https://nextjs.org/docs/14/pages/api-reference/next-config-js/output +# COPY --from=builder --chown=nextjs:nodejs ${web}/.next/standalone ./ +# COPY --from=builder --chown=nextjs:nodejs ${web}/public ./public/ +# COPY --from=builder --chown=nextjs:nodejs ${web}/.next/static ./.next/static + +# COPY --from=builder --chown=nextjs:nodejs . . +COPY --from=builder --chown=nextjs:nodejs /app ./ +COPY package.json ./ + + +USER nextjs + +EXPOSE ${external_port} + +ENV PORT=${external_port} + +# server.js is created by next build from the standalone output +# https://nextjs.org/docs/pages/api-reference/next-config-js/output +ENV HOSTNAME="0.0.0.0" +CMD HOSTNAME="0.0.0.0" yarn start \ No newline at end of file diff --git a/src/pages-components/telegram-auth/index.tsx b/src/pages-components/telegram-auth/index.tsx index 5087892..f759c80 100644 --- a/src/pages-components/telegram-auth/index.tsx +++ b/src/pages-components/telegram-auth/index.tsx @@ -95,7 +95,6 @@ export default function TelegramAuth({ if (lang && typeof lang !== "string") throw onError("Invalid lang"); changeLoading.current(true); - const result = await fetch( `${serviceURL}/api/app/telegramAuth/getTelegramBot` ).then((res) => res.json());