首页 > 解决方案 > 为什么 Azure Devops 文件复制静态网站不复制到根目录?

问题描述

我在将 Angular 应用程序部署到 Azure 存储静态网站时遇到问题。去年我创建了一个 CI/CD 管道,我使用了几个月。前几个月没有部署,今天的部署遇到了一些问题。

第一个问题是关于身份验证的,但我能够解决它。

第二个是我正在努力的。我运行发布管道,文件被复制,但不在 $web 容器根目录中,但它创建了一个“prod”文件夹,并在那里复制文件。因此,我无法打开该网站,因为它在 $web 根文件夹中搜索“index.html”文件,但显然没有找到它,因为它位于 $web/prod 文件夹中。我可以打开文件到 /prod URL,但是它会尝试从根目录(而不是 prod 文件夹)加载所有资源,显然这些文件不存在。

我查看了一些关于部署到静态 webiste 存储帐户的文章,所有这些文章都显示了与我正在使用的相似的 yaml。

这是我的构建管道,它在构建后发布工件:

- task: PublishBuildArtifacts@1
  inputs:
    PathtoPublish: '$(System.DefaultWorkingDirectory)/dist/prod'
    ArtifactName: 'prod'
    publishLocation: 'Container'
    displayName: 'publish prod'

这是文件复制任务:

- task: AzureFileCopy@4
  displayName: 'AzureBlob File Copy'
  inputs:
    SourcePath: '$(System.DefaultWorkingDirectory)/_angularApp CI/prod'
    azureSubscription: '***'
    Destination: AzureBlob
    storage: angularApp
    ContainerName: '$web'

这些文件在“PublishBuildArtifact”任务之后存在,它们被复制,只是不在正确的文件夹($web root)中。有人有想法吗?

谢谢

标签: azureazure-devopsazcopyazure-static-website-hosting

解决方案


通常,不指定 Blob Prefix 时,默认将指定文件夹中的内容复制到容器的根目录。

在我这边测试过,效果很好:

在此处输入图像描述

在此处输入图像描述

您可以检查您的发布源目录是否包含一个名为的文件夹prod并将该文件夹复制到容器中。

另外,我这里使用的AzureFileCopy@3版本,可以尝试使用V3 azure copy file task。


推荐阅读