任务 AzureStaticWebApp@0 'could not detect this directory' 但已显示

Task AzureStaticWebApp@0 'could not detect this directory' but its presented

我正在使用 AzureDevOps 构建管道,但我遇到了一个奇怪的问题。

这是我的管道:

- stage: 'Test'
  displayName: 'Deploy to the test environment'
  dependsOn: Build
  jobs:
    - job: 'Deploy'
      steps:
      - download: current
        artifact: lorehub-front
      - bash: cd $(Pipeline.Workspace); echo $(ls)
      - bash: cd $(Pipeline.Workspace)/lorehub-front; echo $(ls)
      - task: AzureStaticWebApp@0
        displayName: 'Publish to Azure Static WebApp'
        inputs:
          app_location: $(Pipeline.Workspace)/lorehub-front
          azure_static_web_apps_api_token: xxxx

第一个bash表示文件夹'lorehub-front'出现

第二个 bash 表明内部文件夹是正确的文件(index.html 等)

Script contents: cd /home/vsts/work/1/lorehub-front; echo $(ls)

android-chrome-192x192.png android-chrome-512x512.png apple-touch-icon.png css env-config.js favicon-16x16.png favicon-32x32.png favicon.ico fonts index.html js site.webmanifest

但是我收到这个错误:

App Directory Location: '/home/vsts/work/1/lorehub-front' is invalid. Could not detect this directory. Please verify your deployment configuration file reflects your repository structure.

App Directory Location: '/home/vsts/work/1/lorehub-front' is invalid.

解决该问题的方法是将路径更改为/lorehub-front

  - task: AzureStaticWebApp@0
    displayName: 'Publish to Azure Static WebApp'
    inputs:
      app_location: /lorehub-front
      azure_static_web_apps_api_token: xxxx

更多详细信息,您可以参考此文档:Tutorial: Publish Azure Static Web Apps with Azure DevOps

Enter / if your application source code is at the root of the repository, or /app if your application code is in a directory called app.

万一其他人从 Google 或其他什么地方遇到这个 post,我遇到了与上面的 Andrei 完全相同的问题,但对于我来说,我无法在这里获得公认的解决方案上班。

无论我在 app_location: 中输入什么,任务都拒绝查看任何文件。

经过进一步调查,我发现 this github issue 声称以下内容(强调我的):

The AzureStaticWebApp task’s app location is relative to the current directory

查看文档,我们可以看到此任务使用默认目录 $(System.DefaultWorkingDirectory),无论出于何种原因,该目录与 $(Pipeline.Workspace) 不同

所以,如果你发现自己卡在同一个位置,无法让这个任务识别你的工件,解决方案是在你的任务中添加cwd: $(Pipeline.Workspace),例如

strategy:
runOnce:
  deploy:
    steps:
      - download: current
        artifact: WebApp
      - task: AzureStaticWebApp@0
        inputs:
          app_location: /
          skip_app_build: true
          azure_static_web_apps_api_token: $(deployment_token)
          cwd: $(Pipeline.Workspace)/WebApp