You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure DevOps发布流水线下载构件步骤失败求助

问题

在Azure Repos中存储了大量单文件大小不超过100MB的SQL脚本,通过Azure DevOps(ADO)发布流水线部署至Azure SQL Database时,下载构件步骤失败,报错如下:
error: unable to write file Folder/Folder01/insert.sql

注意:正在切换到 '98a9aaca00......'。

您处于'分离头指针(detached HEAD)'状态。您可以查看内容、进行实验性修改并提交,并且可以通过切换回分支来丢弃在此状态下所做的任何提交,而不会影响任何分支。
如果您想要创建一个新分支来保留所做的提交,可以(现在或稍后)使用switch命令并加上-c参数。示例:
git switch -c <new-branch-name>
或者使用以下命令撤销此操作:

   git switch -

通过将配置变量advice.detachedHead设置为false来关闭此提示

HEAD 现在位于 98a9aac 合并PR 8679: Upload Test Data on <Repo Name>
下载期间发生错误: System.InvalidOperationException: Git checkout failed with exit code: 1
   at Microsoft.VisualStudio.Services.Agent.Worker.Build.GitSourceProvider.GetSourceAsync(IExecutionContext executionContext, ServiceEndpoint endpoint, CancellationToken cancellationToken) in D:\a\_work\1\s\src\Agent.Worker\Build\GitSourceProvider.cs:line 869
   at Microsoft.VisualStudio.Services.Agent.Worker.Release.Artifacts.TfsGitArtifact.DownloadAsync(IExecutionContext executionContext, ArtifactDefinition artifactDefinition, String downloadFolderPath) in D:\a\_work\1\s\src\Agent.Worker\Release\Artifacts\TfsGitArtifact.cs:line 54
   at Microsoft.VisualStudio.Services.Agent.Worker.Release.ReleaseJobExtension.<>c__DisplayClass40_2.<<DownloadArtifacts>b__3>d.MoveNext() in D:\a\_work\1\s\src\Agent.Worker\Release\ReleaseJobExtension.cs:line 295
--- End of stack trace from previous location ---
   at Microsoft.VisualStudio.Services.Agent.Worker.Release.RetryExecutor.ExecuteAsync(Func`1 action) in D:\a\_work\1\s\src\Agent.Worker\Release\RetryExecutor.cs:line 64
2025-03-21T12:05:37.3477405Z Retrying download...
2025-03-21T12:05:37.3486081Z Ensuring artifact folder D:\a\r1\a\_<RepoName> exists and is clean.
2025-03-21T12:05:38.3464462Z Syncing repository: c685c8a2-b563-4ef3-8cf1-2a3a43e4c385 (Git)

已将“Checkout submodules”设置为true,问题仍未解决。

可能的解决方案

  • 检查代理机器磁盘空间:unable to write file报错最常见原因是代理所在机器的目标磁盘空间不足,清理磁盘或更换更大容量磁盘后重试。
  • 验证文件路径长度:Windows系统默认路径长度限制为260字符,若Folder/Folder01/insert.sql的完整路径超过该限制,会导致写入失败。可缩短文件夹名称,或在代理机器上启用长路径支持(通过组策略或修改注册表:HKLM\SYSTEM\CurrentControlSet\Control\FileSystem下设置LongPathsEnabled为1)。
  • 检查文件权限:确保ADO代理服务账户对下载目录D:\a\r1\a\_<RepoName>有读写权限,避免因权限不足无法写入文件。
  • 调整Git克隆策略:在流水线的仓库检出步骤中,尝试使用浅克隆(设置shallow fetch depth为1)减少下载量,或切换到Checkout files matching模式,只下载需要的SQL脚本文件而非整个仓库。
  • 检查Git LFS配置:若SQL脚本通过Git LFS存储,确保ADO代理已安装Git LFS,并且流水线中启用LFS支持(在仓库检出步骤勾选Enable Git LFS)。
  • 清理代理缓存:手动删除代理机器上的缓存目录(通常为D:\a下对应流水线的缓存),避免旧缓存文件干扰新下载操作。

内容的提问来源于stack exchange,提问作者surya Teja

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 18:00:55