Azure Самостоятельный агент конвейера сборки DevOps «На устройстве не осталось места» - PullRequest
0 голосов
/ 06 мая 2020

Я использую конвейер сборки на Azure, который работает на частном сервере сборки (Red Hat Enterprise Linux), на котором запущен саморазмещаемый агент. Этот конвейер сборки имеет только 1 задание и 2 задачи, где 1-я задача - это в основном S SH на сервере Repo, который у нас есть (другой сервер, который просто хранит большие файлы), генерирует образ ISO на этом сервере Repo, а затем использует curl, чтобы вернуть этот ISO на сервер сборки, на котором работает Azure конвейерный агент в стереотипном $ (Build.ArtifactStagingDirectory) Azure, используемом для артефактов.

Эта 1-я задача завершается успешно, ISO создается и копируется на сервер сборки, но этап «Publi sh Artifact» продолжает давать сбой. Он пытается опубликовать sh по пути $ (Build.ArtifactStagingDirectory), но выдает сообщение об ошибке с дополнительными журналами: No space left on device

Я уже очистил все каталоги и файлы, размер которых превышает> 1 ГБ в этом рабочем каталоге `/ home / azure / vsts / _work

Я не эксперт по 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)```

1 Ответ

0 голосов
/ 07 мая 2020

Я не могу воспроизвести ту же проблему на своей стороне, но я думаю, вы можете проверить эту статью для устранения неполадок.

Насколько я знаю, эта задача сама по себе будет занимать дополнительное место при выполнении. Вы можете попробовать команду bash, чтобы скопировать контент по пути $(Build.ArtifactStagingDirectory), чтобы удвоить размер этого контента, если это действие вызывает ту же ошибку No space left on device?

А в конвейере сборки есть одна clean возможность очистки кешей перед выполнением задания, включите его, чтобы проверить, помогает ли это:

enter image description here

Если это конвейер 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 .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...