我正在Azure上运行一个构建管道,该管道在运行自托管代理的专用构建服务器(红帽企业Linux)上运行。这个构建管道只有1个Job和2个Tasks,其中第一个任务基本上是将SSH连接到我们拥有的Repo服务器(不同的服务器仅保存大文件)在该Repo服务器上生成ISO映像,然后使用curl
来完成将ISO重新放到运行Azure Pipeline代理的生成服务器上,即使用Azure用于Artifacts的典型$(Build.ArtifactStagingDirectory)。
此第一个任务成功,并且ISO已生成并复制到构建服务器,但是“发布工件”阶段一直失败。它正在尝试发布到$(Build.ArtifactStagingDirectory)路径,但会生成一条错误消息,其中包含更多日志:
No space left on device
我已经清理了这个工作目录`/ home / azure / vsts / _work
中所有超过1GB的目录和文件。我不是Linux方面的专家。当我运行df -h
并查看文件系统时,列表中有一堆。有没有办法知道我使用/home/azure/vsts/_work
目录为此Azure管道代理实际使用的分区是什么?
我的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)```
答案 0 :(得分:1)
所以我在这里是一个 n00b,解决方案只是从我们用来存储大型 ISO 文件的主目录中清除空间:
/dev/mapper/vg_root-lv_root 19G 19G 28K 100% /
这是我们用来在 Azure 上运行构建的自定义 VM,我不习惯错误消息。但是是的,如果有人说这个消息并且正在使用自定义构建代理,那肯定是空间问题。
答案 1 :(得分:0)
我无法重现同样的问题,但我认为您可以检查this article进行故障排除。
我知道此任务本身在执行时会占用额外的空间。如果此操作引发相同的$(Build.ArtifactStagingDirectory)
错误,您可以尝试使用bash命令在路径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 schema。