问题描述
我想为 Blazor Web 客户端应用程序项目设置 CI/CD,以将内容复制到 Azure blob 存储。以下是 CI 任务
- task: VSBuild@1
displayName: 'Build MyBlazor Web'
inputs:
solution: ./MyBlazorWeb/MyBlazorWeb.sln
vsversion: 16.0
msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactStagingDirectory)"'
configuration: Release
restoreNugetPackages: true
- task: DotNetCoreCLI@2
displayName: 'Publishing MyBlazor Web...'
inputs:
command: publish
publishWebProjects: true
projects: ./MyBlazorWeb/MyBlazorWeb/MyBlazorWeb.csproj
arguments: '--configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory)/drop/MyBlazorWeb'
artifactName: MyBlazor
zipAfterPublish: false
- publish: $(Build.ArtifactStagingDirectory)
artifact: drop
下面是我的CD任务
- task: AzureFilecopy@2
displayName: 'copy MyBlazorWeb to Static Web Site'
inputs:
SourcePath: '$(build.artifactStagingDirectory)/drop/MyBlazorWeb'
azureSubscription: '$(subscription)'
Destination: AzureBlob
storage: '$(storage-account-name)'
ContainerName: '$web'
解析源位置“D:\a\1\a\drop\MyBlazorWeb”时出错:无法枚举目录 D:\a\1\a\drop\MyBlazorWeb\ 文件模式 *。 该系统找不到指定的路径。 (来自 HRESULT 的异常:0x80070003)有关详细信息,请键入“Azcopy /?:Source”或使用详细选项 /V。
我是否遗漏了任何其他任务或没有使用正确的源路径?如果这些任务/步骤不正确,我如何在 Azure 存储中托管 Blazor webassembly?
解决方法
您可以在 AzureFileCopy 任务的 fn register<F>(&mut self,cb: F)
where
F: for<'b> FnMut(&'b T) + 'a
{
self.callback = Box::new(cb);
}
参数中指定 System.ArtifactsDirectory
变量。
SourcePath
- task: AzureFileCopy@2
displayName: 'Copy MyBlazorWeb to Static Web Site'
inputs:
SourcePath: '$(System.ArtifactsDirectory)/drop/MyBlazorWeb'
azureSubscription: '$(subscription)'
Destination: AzureBlob
storage: '$(storage-account-name)'
ContainerName: '$web'
:发布部署期间工件下载到的目录。如果需要将工件下载到代理,则在每次部署之前清除该目录。与 Agent.ReleaseDirectory 和 System.DefaultWorkingDirectory 相同。
示例:System.ArtifactsDirectory
C:\agent\_work\r1\a
是代理范围的变量,因此您不能在发布管道中使用它。