微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将 GitHub 操作部署到 Azure Web 应用程序时出错 1 - WEBSITE_RUN_FROM_PACKAGE 在应用服务应用程序设置中是必需的因为现在是 zip 部署2 - 存储库包含多个项目需要为每个构建和发布命令指定项目文件

如何解决将 GitHub 操作部署到 Azure Web 应用程序时出错 1 - WEBSITE_RUN_FROM_PACKAGE 在应用服务应用程序设置中是必需的因为现在是 zip 部署2 - 存储库包含多个项目需要为每个构建和发布命令指定项目文件

刚刚转换为新的 GitHub 应用服务操作构建和部署管道并收到以下错误

Run azure/webapps-deploy@v2
  with:
    app-name: ***
    slot-name: ***
    publish-profile: ***
    package: .
Package deployment using ZIP Deploy initiated.
Fetching changes.
Cleaning up temp folders from prevIoUs zip deployments and extracting pushed zip file D:\local\Temp\zipdeploy\gtfnmdqs.zip (19.64 MB) to D:\local\Temp\zipdeploy\extracted
Error: Failed to deploy web package to App Service.
Error: Deployment Failed with Error: Package deployment using ZIP Deploy Failed. Refer logs for more details.
App Service Application URL: https://***.azurewebsites.net

除了部署失败之外,日志中没有任何指示错误内容。没有对存储库进行任何更改(新 yaml 除外),并且不确定错误是否是因为未检测到代码更改。如果是这样,为什么要抛出错误而不是警告?

yml 是 Azure 生成的标准:

on:
  workflow_dispatch:
    branches: [main]

jobs:
  build:
    runs-on: windows-latest

    steps:
    - uses: actions/checkout@v2

    - name: Set up .NET Core
      uses: actions/setup-dotnet@v1
      with:
        dotnet-version: '6.0.x'
        include-prerelease: true

    - name: Build with dotnet
      run: dotnet build --configuration Release

    - name: dotnet publish
      run: dotnet publish -c Release -o ${{env.DOTNET_ROOT}}/myapp

    - name: Upload artifact for deployment job
      uses: actions/upload-artifact@v2
      with:
        name: .net-app
        path: ${{env.DOTNET_ROOT}}/myapp

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

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

    - name: Deploy to Azure Web App
      id: deploy-to-webapp
      uses: azure/webapps-deploy@v2
      with:
        app-name: '***'
        slot-name: '***'
        publish-profile: ${{ secrets.AzureAppService_PublishProfile_*** }}
        package: .

旁注:我有一个运行良好的新应用服务,这是一个最初使用前 CI/DI 的现有应用服务。为 CI/DI 断开连接并生成新连接。不确定这是否重要。

Azure 日志详细信息:

enter image description here

部署似乎与服务计划的 cpu 挂钩,这解释了为什么每个人都增加层以解决

enter image description here

enter image description here

尝试关闭所有应用服务并在没有其他任何运行的情况下进行部署,但没有效果

还尝试将发布配置文件导入 Visual Studio,但也失败了...

enter image description here

即使尝试删除退出的应用服务并创建新的应用服务,但仍然无法部署。

Package deployment using ZIP Deploy initiated.
Updating submodules.
Preparing deployment for commit id '10c1139fcb'.
Generating deployment script.
Using cached version of deployment script (command: 'azure -y --no-dot-deployment -r "D:\local\Temp\zipdeploy\extracted" -o "D:\home\site\deployments\tools" --basic --sitePath "D:\local\Temp\zipdeploy\extracted\Source\Web\cdcavell\cdcavell.csproj"').
Running deployment command...
Command: "D:\home\site\deployments\tools\deploy.cmd"
Handling Basic Web Site deployment.
Creating app_offline.htm
Error: Could not find a part of the path 'D:\local\Temp\zipdeploy\extracted\Source\Web\cdcavell\cdcavell.csproj'.
KuduSync.NET from: 'D:\local\Temp\zipdeploy\extracted\Source\Web\cdcavell\cdcavell.csproj' to: 'D:\home\site\wwwroot'
Failed exitCode=1,command="kudusync" -v 50  -f "D:\local\Temp\zipdeploy\extracted\Source\Web\cdcavell\cdcavell.csproj" -t "D:\home\site\wwwroot" -n "D:\home\site\deployments\10c1139fcb004b0fbd7eb608cceb0855\manifest" -p "D:\Program Files (x86)\SiteExtensions\Kudu\94.30524.5227\bin\Scripts\firstDeploymentManifest" -i ".git;.hg;.deployment;deploy.cmd"
An error has occurred during web site deployment.
Error: Could not find a part of the path 'D:\local\Temp\zipdeploy\extracted\Source\Web\cdcavell\cdcavell.csproj'.\r\nD:\Program Files (x86)\SiteExtensions\Kudu\94.30524.5227\bin\Scripts\starter.cmd "D:\home\site\deployments\tools\deploy.cmd"
Error: Failed to deploy web package to App Service.
Error: Deployment Failed with Error: Package deployment using ZIP Deploy Failed. Refer logs for more details.
App Service Application URL: https://cdcavell.azurewebsites.net

解决方法

终于可以部署了。必须将发布配置文件导入 Visual Studio 并使用 zip 部署进行发布。

 cdcavell -> D:\Projects\GitHub\cdcavell.name\Source\Web\cdcavell\obj\Release\net5.0\PubTmp\Out\
Publishing D:\Projects\GitHub\cdcavell.name\Source\Web\cdcavell\obj\Release\net5.0\PubTmp\cdcavell-20210710130209924.zip to https://cdcavell.scm.azurewebsites.net/api/zipdeploy...
Zip Deployment succeeded.
Web App was published successfully https://cdcavell.azurewebsites.net/
========== Build: 6 succeeded,0 failed,0 up-to-date,0 skipped ==========
========== Publish: 1 succeeded,0 skipped ==========
Installation of Web App Site extension Microsoft.AspNetCore.AzureAppServices.SiteExtension is in progress...
Successfully installed Web App extension Microsoft.AspNetCore.AzureAppServices.SiteExtension
Restarting the Web App...
Successfully restarted Web App.

看来这会导致安装 Web App Site 扩展。之后,我能够使用 Azure 应用服务中的同步成功执行手动部署。

enter image description here

更新:新问题是现在在应用服务中自动设置以下内容,导致站点只能从 zip 文件中读取。导致我的网站出现各种访问问题。

  {
    "name": "WEBSITE_RUN_FROM_PACKAGE","value": "1","slotSetting": false
  },

显然导致 /Home/Index 无法再访问...

enter image description here

删除此设置会同时禁用我的应用服务。

enter image description here

最终解决方案:

1 - WEBSITE_RUN_FROM_PACKAGE 在应用服务应用程序设置中是必需的。因为现在是 zip 部署。

  {
    "name": "WEBSITE_RUN_FROM_PACKAGE","slotSetting": false
  }

下一点是我的错,我知道答案只是当时太沮丧而没有看到它。

2 - 存储库包含多个项目。需要为每个构建和发布命令指定项目文件。

    - name: Build with dotnet
      run: dotnet build D:\a\cdcavell.name\cdcavell.name\Source\Web\cdcavell\cdcavell.csproj --configuration Release

    - name: dotnet publish
      run: dotnet publish D:\a\cdcavell.name\cdcavell.name\Source\Web\cdcavell\cdcavell.csproj -c Release -o ${{env.DOTNET_ROOT}}/myapp

我不认为应用程序设置中的 PROJECT 真的意味着什么,但不确定所以暂时离开。

站点仍然存在负载问题,但它从来没有为 zip 部署而设计,因此现在必须解决这个问题。无论如何,我提到的两点是导致我在新的 GitHub Action 部署中出现问题的原因。

我确实希望这能让其他人免于我刚刚经历的挫折......

加载问题是我的想法:Failed to open siteversion.txt. ZipFS setup failed. Error: 0x80070003。丢失了我的站点地图,现在需要重新开发该过程。同样,这是一个 zip 部署,因此不能再依赖于利用文件写入来做简单的事情。

zip 部署的最大问题是我也无法生成我的签名凭据。这对我来说是一种表演障碍和巨大的安全问题。但是,嘿,我猜 zip 部署是最新的热潮。

            // not recommended for production - you need to store your key material somewhere secure
            // builder.AddDeveloperSigningCredential();
            RsaSecurityKey key = rsa.GetKey();
            builder.AddValidationKey(key);
            builder.AddSigningCredential(key,SecurityAlgorithms.RsaSha512);

这个我什至没有答案......

enter image description here

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?