Skip to content

Commit

Permalink
Merge branch 'vt-digit-recognition-frontend' of github.com:gear-found…
Browse files Browse the repository at this point in the history
…ation/gear.exe-dapps into vt-digit-recognition-frontend
  • Loading branch information
vraja-nayaka committed Jan 29, 2025
2 parents 28f8ec5 + 1fcea35 commit 580096d
Showing 1 changed file with 77 additions and 22 deletions.
99 changes: 77 additions & 22 deletions .github/workflows/CI-CD-Distributed-Computation-fe.yml
Original file line number Diff line number Diff line change
@@ -1,66 +1,121 @@
name: Deploy Frontend Distributed Computation
name: Build and Deploy mandelbrot-set/frontend

on:
push:
branches: ['master']
paths: frontend
workflow_dispatch:
push:
branches: ["*"]
paths:
- "mandelbrot-set/frontend/**"

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

env:
REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository }}
ENVIRONMENT: ${{ (github.ref == 'refs/heads/master' || github.ref == 'refs/heads/main') && 'prod' || 'stg' }}
REGISTRY: ghcr.io/$(echo ${{ github.repository }} | tr '[:upper:]' '[:lower:]')
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_REGION: ${{ secrets.AWS_REGION }}
KUBECTL_VERSION: ${{ secrets.KUBECTL_VERSION }}
KUBE_CONFIG_DATA: ${{ secrets.KUBE_CONFIG_DATA }}
KUBE_NAMESPACE: gear-exe-dapps
KUBE_DEPLOY_PREFIX: mandelbrot-set-frontend
KUBE_DEPLOY_TYPE: deployment # (statefulset or deployment)

jobs:
build-frontend-image:
prepair:
runs-on: ubuntu-latest
outputs:
image_name: ${{ steps.image.outputs.image_name }}
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Get branch
id: branch
run: |
branch_name=${GITHUB_REF#refs/heads/}
echo "branch_name=$branch_name" >> $GITHUB_ENV
- name: Get short SHA
id: sha
run: |
sha_short=$(git rev-parse --short HEAD)
echo "sha_short=$sha_short" >> $GITHUB_ENV
- name: Set IMAGE_NAME
id: image
run: |
image_name=${{ env.REGISTRY }}-${{ env.KUBE_DEPLOY_PREFIX }}:${{ env.branch_name }}-${{ env.sha_short }}
echo "image_name=$image_name" >> $GITHUB_OUTPUT
build-and-push-image:
needs: [prepair]
runs-on: ubuntu-latest
environment: ${{ (github.ref == 'refs/heads/master' || github.ref == 'refs/heads/main') && 'prod' || 'stg' }}
permissions:
contents: read
packages: write

steps:
- name: Checkout repository
uses: actions/checkout@v2
uses: actions/checkout@v4

- name: Log in to the github container registry
uses: docker/login-action@master
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Build and push Frontend Docker image
uses: docker/build-push-action@master
- name: Build and push image
uses: docker/build-push-action@v6
with:
context: mandelbrot-set/frontend
context: mandelbrot-set/frontend/
push: true
tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}-mandelbrot-set-fe:prod
build-args: |
VITE_WALLET_CONNECT_PROJECT_ID=${{ secrets.VITE_WALLET_CONNECT_PROJECT_ID_MONDELBROT }}
VITE_GEAR_API_NODE=${{ secrets.VITE_GEAR_API_NODE }}
VITE_CONTRACT_ADDRESS=${{ secrets.VITE_CONTRACT_ADDRESS_MONDELBROT }}
VITE_ETH_NODE_ADDRESS=${{ secrets.VITE_ETH_NODE_ADDRESS }}
tags: ${{ needs.prepair.outputs.image_name }}

deploy-k8s:
needs: build-frontend-image
deploy-to-k8s:
needs: [prepair, build-and-push-image]
runs-on: ubuntu-latest

environment: ${{ (github.ref == 'refs/heads/master' || github.ref == 'refs/heads/main') && 'prod' || 'stg' }}
steps:
- name: Setup kubectl
run: |
curl -LO "https://dl.k8s.io/release/${{ env.KUBECTL_VERSION }}/bin/linux/amd64/kubectl"
chmod +x kubectl
sudo mv kubectl /usr/local/bin/
mkdir -p $HOME/.kube/
echo "${{ env.KUBE_CONFIG_DATA }}" | base64 -d > $HOME/.kube/config
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1
uses: aws-actions/configure-aws-credentials@v4
with:
aws-access-key-id: ${{ env.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ env.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ env.AWS_REGION }}

- name: Deploy to k8s
uses: sergeyfilyanin/kubectl-aws-eks@master
with:
args: rollout restart deployment distributed-computation -n gear-dapps
- name: Get containes
id: containers
run: |
containers=$(kubectl get ${{ env.KUBE_DEPLOY_TYPE }}/${{ env.KUBE_DEPLOY_PREFIX }}-${{ env.ENVIRONMENT }} -n ${{ env.KUBE_NAMESPACE }} -o jsonpath="{.spec.template.spec.containers[*].name}")
echo "CONTAINERS=$containers" >> $GITHUB_ENV
- name: Update deployment image
run: |
for container in ${{ env.CONTAINERS }}; do
kubectl set image ${{ env.KUBE_DEPLOY_TYPE }}/${{ env.KUBE_DEPLOY_PREFIX }}-${{ env.ENVIRONMENT }} $container=${{ needs.prepair.outputs.image_name }} -n ${{ env.KUBE_NAMESPACE }};
done
- name: Restart deployment
run: |
kubectl rollout restart ${{ env.KUBE_DEPLOY_TYPE }}/${{ env.KUBE_DEPLOY_PREFIX }}-${{ env.ENVIRONMENT }} -n ${{ env.KUBE_NAMESPACE }}
- name: Check deployment
run: |
kubectl rollout status ${{ env.KUBE_DEPLOY_TYPE }}/${{ env.KUBE_DEPLOY_PREFIX }}-${{ env.ENVIRONMENT }} --timeout=300s -n ${{ env.KUBE_NAMESPACE }}

0 comments on commit 580096d

Please sign in to comment.