Skip to content

Commit

Permalink
Merge pull request #100 from Portkey-Wallet/feature/upgrade-k8s
Browse files Browse the repository at this point in the history
Feature/upgrade k8s
  • Loading branch information
Portkey-David authored Nov 27, 2024
2 parents 048b5e4 + 4a36550 commit c94ec58
Show file tree
Hide file tree
Showing 3 changed files with 178 additions and 9 deletions.
76 changes: 76 additions & 0 deletions .github/workflows/testnet-package.yaml
Original file line number Diff line number Diff line change
@@ -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 }}',
}
})
110 changes: 102 additions & 8 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -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
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
1 change: 0 additions & 1 deletion src/pages-components/telegram-auth/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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());
Expand Down

0 comments on commit c94ec58

Please sign in to comment.