diff --git a/.github/workflows/frontend.yml b/.github/workflows/frontend.yml new file mode 100644 index 0000000..725bea6 --- /dev/null +++ b/.github/workflows/frontend.yml @@ -0,0 +1,81 @@ +# This is a workflow that is build and deploy the frontend + +name: Frontend + +on: + workflow_dispatch: + push: + branches: + - main + paths: + - 'frontend/**' + +env: + REGISTRY: 3a7jouokyffroregistry.azurecr.io + REGISTRY_USER: 3a7jouokyffroregistry + IMAGE_NAME: ajshiva/frontend:latest + NAMESPACE: ajshiva +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + # This workflow contains a single job called "greet" + build: + # The type of runner that the job will run on + runs-on: ubuntu-latest + + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + + - name: Check out repository code + uses: actions/checkout@v3 + + # Runs a single command using the runners shell + - name: Docker Build + working-directory: ./frontend + run: | + docker build -t ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} -f ./Dockerfile . + + - name: Docker Push Image + run: | + echo ${{ secrets.REGISTRY_SECRET }} | docker login ${{ env.REGISTRY }} -u ${{ env.REGISTRY_USER }} --password-stdin + docker push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + + deploy: + # The type of runner that the job will run on + runs-on: ubuntu-latest + needs: build + + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + + - name: Check out repository code + uses: actions/checkout@v3 + + - uses: azure/k8s-set-context@v3 + with: + method: kubeconfig + kubeconfig: ${{ secrets.KUBECONFIG }} + + - name: Create or Patch docker pull secret + run: | + kubectl create secret docker-registry docker-pull-secret \ + --save-config --dry-run=client \ + --docker-username=${{ env.REGISTRY_USER }} \ + --docker-password=${{ secrets.REGISTRY_SECRET }} \ + --docker-email=cap-days@mail.com \ + --docker-server=${{ env.REGISTRY }} \ + -n ${{ env.NAMESPACE }} -o yaml | \ + kubectl apply -f - + + - name: Create or Patch ngnix.conf + working-directory: ./frontend + run: | + kubectl create configmap nginx \ + --save-config --dry-run=client \ + --from-file=nginx.conf \ + -n ${{ env.NAMESPACE }} -o yaml | \ + kubectl apply -f - + + - name: Deploy Frontend + working-directory: ./frontend/k8s + run: | + kubectl apply -f . -n ${{ env.NAMESPACE }}