Github Actions Artifact 在 Azure Web Apps 中部署需要花费很多时间

Posted

技术标签:

【中文标题】Github Actions Artifact 在 Azure Web Apps 中部署需要花费很多时间【英文标题】:Github Actions Artifact is taking to much to deploy in Azure Web Apps 【发布时间】:2021-11-22 18:56:21 【问题描述】:

我正在尝试在 Azure Web 应用程序上部署我的应用程序。我有一个在 Azure 中连接我的 GitHub 存储库时默认提供的 Github Actions。问题是部署单个事物大约需要 45 分钟才能部署!用于部署的时间太疯狂了。我看到这样的消息:

知道为什么会发生这种情况或有更好的优化方法吗? (顺便说一句,我实际上是在部署一个 Next.js 应用)

这是我的 Github Actions 文件:

# 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: .

【问题讨论】:

大部分人使用Docker镜像进行部署(单文件上传速度很快),你可以找到github.com/Azure/…这样的例子 【参考方案1】:

感谢 Lex Li 支持您的回答,添加有关如何部署 docker 映像的过程

更好的方法是部署 docker 镜像,上传单个文件非常快。 下面是github链接以及一些docker镜像部署的示例代码。

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 '

【讨论】:

您好,感谢您的回答,我将对此进行测试并返回任何 cmets。

以上是关于Github Actions Artifact 在 Azure Web Apps 中部署需要花费很多时间的主要内容,如果未能解决你的问题,请参考以下文章

在 Github Actions 上从 package.json 安装私有 github 包

如何使用 Github-actions 在 Docker 上使用 Mysql 运行 Prisma 迁移

在 Windows 上的 GitHub Actions 中缓存依赖项

4个提高效率的GitHub Actions技巧

如何在 Github Actions 中获取当前分支?

Github Actions生成 secrets