Azure pipeline showing OSError: [Errno 22] Invalid argument:

Azure pipeline showing OSError: [Errno 22] Invalid argument:

我 运行 这个任务在 azure pipeline 中使用微软托管 windows-最新的代理但是这个步骤显示 OSError: [Errno 22] Invalid argument: 'D:\a\a\**\*.zip' error.

- task: AzureCLI@2
  displayName: Azure CLI
  inputs:
    azureSubscription: '$(Parameters.connectedServiceName)'
    scriptType: ps
    scriptLocation: inlineScript
    inlineScript: |

      $apps= @('JustGoTestAgain, justgotesttwo')

      foreach ($app in $apps) {
         az webapp deployment source config-zip -g test_group -n $app --src '$(build.artifactstagingdirectory)/**/*.zip'
      }
WARNING: Getting scm site credentials for zip deployment
ERROR: The command failed with an unexpected error. Here is the traceback:
ERROR: [Errno 22] Invalid argument: 'D:\a\1\a\**\*.zip'
Traceback (most recent call last):
  File "D:\a\s\build_scripts\windows\artifacts\cli\Lib\site-packages\knack/cli.py", line 231, in invoke
  File "D:\a\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/__init__.py", line 657, in execute
  File "D:\a\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/__init__.py", line 720, in _run_jobs_serially
  File "D:\a\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/__init__.py", line 691, in _run_job
  File "D:\a\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/__init__.py", line 328, in __call__
  File "D:\a\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/command_operation.py", line 121, in handler
  File "D:\a\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/command_modules/appservice/custom.py", line 402, in enable_zip_deploy_webapp
  File "D:\a\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/command_modules/appservice/custom.py", line 428, in enable_zip_deploy
OSError: [Errno 22] Invalid argument: 'D:\a\1\a\**\*.zip'
To open an issue, please run: 'az feedback'
##[error]Script failed with exit code: 1

如何解决这个问题?

首先,您需要enable zip deployment for a webapp

WEBSITE_RUN_FROM_PACKAGE 应用程序设置可以从包中启用 运行ning。要设置它,运行 使用 Azure CLI 的以下命令:

az webapp config appsettings set --resource-group <group-name> --name <app-name> --settings WEBSITE_RUN_FROM_PACKAGE="1"

WEBSITE_RUN_FROM_PACKAGE="1" 允许您 运行 您的应用程序本地包中的应用程序。您也可以 run from a remote package

运行 包裹

在应用服务中 运行 包的最简单方法是使用 Azure CLI az webapp deployment source config-zip 命令。

Azure CLI

az webapp deployment source config-zip --resource-group <group-name> --name <app-name> --src <filename>.zip

因为设置了 WEBSITE_RUN_FROM_PACKAGE 应用程序设置,此命令不会将包内容提取到应用程序的 D:\home\site\wwwroot 目录中。相反,它将 ZIP 文件按原样上传到 D:\home\data\SitePackages,并在同一目录中创建一个 packagename.txt,其中包含要在 运行 时间加载的 ZIP 包的名称。

如果您以其他方式(例如FTP)上传ZIP包,您需要在D:\home\data\SitePackages目录下手动创建packagename.txt文件。

该命令还会重新启动应用程序。因为设置了 WEBSITE_RUN_FROM_PACKAGE,App Service 将上传的包安装为只读 wwwroot 目录,并直接从该安装目录 运行s 应用程序。

可以参考Run your app in Azure App Service directly from a ZIP package and