2
votes

I have I'm trying to deploy my app on Azure Web apps. I have a Github Actions I was given by default when connecting my GitHub repository in Azure. The problem is that deploying a single thing takes about 45 minutes to be deployed!! It's so insane the amount of time is giving to be deployed. I see a message like this:

enter image description here

Any idea of why is this happening or a better way to optimize this? (By the way, I'm actually deploying a Next.js app)

This is my Github Actions File:

# Docs for the Azure Web Apps Deploy action: https://github.com/Azure/webapps-deploy
# More GitHub Actions for Azure: https://github.com/Azure/actions

name: Build and deploy Node.js app to Azure Web App - app-admin

on:
  push:
    branches:
      - develop
  workflow_dispatch:

jobs:
  build:
    runs-on: ubuntu-latest
    env:
      AUTH0_CLIENT_ID: ${{ secrets.AUTH0_CLIENT_ID }}
      AUTH0_DOMAIN: ${{secrets.AUTH0_DOMAIN}}
      AUTH0_MANAGEMENT_CLIENT_ID: ${{secrets.AUTH0_MANAGEMENT_CLIENT_ID}}
      AUTH0_MANAGEMENT_CLIENT_SECRET: ${{secrets.AUTH0_MANAGEMENT_CLIENT_SECRET}}
      NEXT_PUBLIC_HASURA_GRAPHQL_ENDPOINT: ${{secrets.NEXT_PUBLIC_HASURA_GRAPHQL_ENDPOINT}}
      NEXT_PUBLIC_HASURA_GRAPHQL_API_KEY: ${{secrets.NEXT_PUBLIC_HASURA_GRAPHQL_API_KEY}}
      NEXT_PUBLIC_AUTH0_CLIENT_ID: ${{secrets.NEXT_PUBLIC_AUTH0_CLIENT_ID}}
      NEXT_PUBLIC_AUTH0_DOMAIN: ${{secrets.NEXT_PUBLIC_AUTH0_DOMAIN}}
      


    steps:
      - uses: actions/checkout@v2

      - name: Set up Node.js version
        uses: actions/setup-node@v1
        with:
          node-version: '14.x'

      - name: npm install, build, and test
        run: |
          npm install
          npm run build --if-present
          npm run test --if-present

      - name: Upload artifact for deployment job
        uses: actions/upload-artifact@v2
        with:
          name: node-app
          path: .

  deploy:
    runs-on: ubuntu-latest
    needs: build
    environment:
      name: 'Production'
      url: ${{ steps.deploy-to-webapp.outputs.webapp-url }}

    steps:
      - name: Download artifact from build job
        uses: actions/download-artifact@v2
        with:
          name: node-app

      - name: 'Deploy to Azure Web App'
        id: deploy-to-webapp
        uses: azure/webapps-deploy@v2
        with:
          app-name: 'app-admin'
          slot-name: 'Production'
          publish-profile: ${{ secrets.AZUREAPPSERVICE_PUBLISHPROFILE_667E58BB348E475EA5F1141747DD1CA9 }}
          package: .
1
Most people use a Docker image to deploy (single file upload is pretty fast), and you can find examples like github.com/Azure/…Lex Li

1 Answers

1
votes

Thank you Lex Li supporting your answer adding the process on how to deploy docker image

The better way is to deploy docker image which is very fast in uploading a single file. Below is the github link as well as the example code of few docker image deployments.

on: [push]

name: Linux_Container_Node_Workflow

jobs:
  build-and-deploy:
    runs-on: ubuntu-latest
    steps:
    # checkout the repo
    - name: 'Checkout Github Action'
      uses: actions/checkout@master

    - uses: azure/docker-login@v1
      with:
        login-server: contoso.azurecr.io
        username: ${{ secrets.REGISTRY_USERNAME }}
        password: ${{ secrets.REGISTRY_PASSWORD }}

    - run: |
        docker build . -t contoso.azurecr.io/nodejssampleapp:${{ github.sha }}
        docker push contoso.azurecr.io/nodejssampleapp:${{ github.sha }} 

    - uses: azure/webapps-deploy@v2
      with:
        app-name: 'node-rnc'
        publish-profile: ${{ secrets.azureWebAppPublishProfile }}
        images: 'contoso.azurecr.io/nodejssampleapp:${{ github.sha }}'