繁体   English   中英

Azure DevOps 构建管道自托管代理“设备上没有剩余空间”

[英]Azure DevOps build pipeline self-hosted agent “No space left on device”

我在运行自托管代理的私有构建服务器(Red Hat Enterprise Linux)上运行 Azure 上的构建管道。 此构建管道只有 1 个作业和 2 个任务,其中第一个任务基本上是 SSH 到我们拥有的 Repo 服务器(仅保存大文件的不同服务器)在该 Repo 服务器上生成 ISO 映像,然后使用curl将该 ISO 放回在构建服务器上,Azure Pipeline 代理在 $(Build.ArtifactStagingDirectory) Azure 用于工件的刻板印象中运行。

第一个任务成功,生成 ISO 并将其复制到构建服务器,但“发布工件”阶段一直失败。 它正在尝试发布到路径 $(Build.ArtifactStagingDirectory) 但会产生一条错误消息,其中包含更多日志: No space left on device

我已经在这个工作目录`/home/azure/vsts/_work中清除了所有超过> 1GB的目录和文件

我不是 Linux 的专家。 当我运行df -h并查看文件系统时,列表中有一堆。 有没有办法知道我实际使用的这个 Azure 管道代理使用/home/azure/vsts/_work目录的分区?

我的df -h列表如下所示:

Filesystem                                    Size  Used Avail Use% Mounted on
/dev/mapper/vg_root-lv_root                    19G   19G   28K 100% /
devtmpfs                                      3.9G     0  3.9G   0% /dev
tmpfs                                         3.9G  8.0K  3.9G   1% /dev/shm
tmpfs                                         3.9G  138M  3.8G   4% /run
tmpfs                                         3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/sdc                                      100G  152M  100G   1% /glusterfs
/dev/sda1                                     488M  119M  334M  27% /boot
/dev/mapper/vg_root-lv_var                    997M  106M  891M  11% /var
/dev/mapper/vg_docker-lv_docker                50G  3.1G   44G   7% /var/lib/docker/overlay2
/dev/mapper/vg_root-lv_log                    997M   46M  952M   5% /var/log
/dev/mapper/vg_root-lv_crash                  997M   33M  965M   4% /var/crash
/dev/mapper/vg_root-lv_root_logins             29M  1.8M   27M   6% /var/log/root_logins
/dev/mapper/vg_root-lv_core                   125M  6.6M  119M   6% /var/core
/dev/mapper/vg_root-lv_repo                   997M   83M  915M   9% /var/cache/yum
/dev/mapper/vg_root-lv_home                   997M   33M  965M   4% /export/home
/dev/mapper/vg_root-lv_logins                  93M  5.0M   88M   6% /var/log/logins
/dev/mapper/vg_root-lv_audit                  725M   71M  655M  10% /var/log/audit
tmpfs                                         799M     0  799M   0% /run/user/0
walkie1-ap2.nextgen.com:/hdd-volume0          200G  2.3G  198G  2%  /gluster-hdd

如果有人能提供一些见解,我将不胜感激。

错误日志结束:

[2020-05-06 05:49:09Z ERR  JobRunner] Caught exception from job steps StepsRunner: System.IO.IOException: No space left on device
   at Interop.ThrowExceptionForIoErrno(ErrorInfo errorInfo, String path, Boolean isDirectory, Func`2 errorRewriter)
   at Microsoft.Win32.SafeHandles.SafeFileHandle.Open(String path, OpenFlags flags, Int32 mode)
   at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options)
   at System.IO.FileStream..ctor(String path, FileMode mode)
   at Microsoft.VisualStudio.Services.Agent.PagingLogger.NewPage()
   at Microsoft.VisualStudio.Services.Agent.PagingLogger.Write(String message)
   at Microsoft.VisualStudio.Services.Agent.Worker.ExecutionContext.Write(String tag, String message)
   at Microsoft.VisualStudio.Services.Agent.Worker.StepsRunner.RunStepAsync(IStep step, CancellationToken jobCancellationToken)
   at Microsoft.VisualStudio.Services.Agent.Worker.StepsRunner.RunAsync(IExecutionContext jobContext, IList`1 steps)
   at Microsoft.VisualStudio.Services.Agent.Worker.JobRunner.RunAsync(AgentJobRequestMessage message, CancellationToken jobRequestCancellationToken)```

我无法在我这边重现同样的问题,但我认为您可以查看这篇文章以进行故障排除。

据我所知,这个任务本身在执行时会占用额外的空间。 您可以尝试使用 bash 命令复制路径$(Build.ArtifactStagingDirectory)下的内容以将这些内容的大小加倍,如果此操作引发相同No space left on device错误?

在构建管道中,有一个clean的选项可以在执行作业之前清理缓存,启用它来检查它是否有帮助:

在此处输入图像描述

如果是 yaml 管道,请尝试以下操作:

workspace:
    clean: outputs | resources | all # what to clean up before the job runs

steps:
- checkout: self | none | repository name # self represents the repo where the initial Pipelines YAML file was found
  clean: boolean  # if true, run `execute git clean -ffdx && git reset --hard HEAD` before fetching

请参阅Yaml 架构

所以我在这里是一个 n00b,解决方案只是从我们用来存储大型 ISO 文件的主目录中清理空间:

/dev/mapper/vg_root-lv_root                    19G   19G   28K 100% /

这是我们用来在 Azure 上运行构建的自定义 VM,我不习惯错误消息。 但是,是的,如果有人说出这条消息并且正在使用自定义构建代理,那肯定是空间问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM