azure - Github Actions Artifact 在 Azure Web Apps 中部署需要花费很多时间
问题描述
我正在尝试在 Azure Web 应用程序上部署我的应用程序。我有一个在 Azure 中连接我的 GitHub 存储库时默认提供的 Github Actions。问题是部署单个事物大约需要 45 分钟才能部署!用于部署的时间太疯狂了。我看到这样的消息:
知道为什么会发生这种情况或有更好的优化方法吗?(顺便说一句,我实际上正在部署一个 Next.js 应用程序)
这是我的 Github 操作文件:
# 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: .
解决方案
谢谢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 }}'
推荐阅读
- image - 是否可以通过从 B 或 P 帧重构 I 帧来撤销时间压缩?
- reactjs - 尝试导入错误:“../Product”不包含默认导出(导入为“产品”)
- java - 尝试发送相关 ID 作为响应
- eclipse-plugin - 在eclipse编辑器中注释源窗口的整行
- javascript - JSON 字符串太大而无法解析 - 替代路由?
- python - TensorFlow Logging 仅抑制警告消息
- android - 有没有办法改变这个 TextInputEditText 的绿色?
- php - Google 操作构建器 - 如何从 webhook 请求中读取并避免空响应
- gremlin - Gremlin 查询用于获取“依赖图”(如图)的顺序
- mysql - 池连接上的nodejs mysql错误:连接丢失:服务器关闭了连接