У меня есть конвейер сборки в Azure Pipelines, состоящий из нескольких этапов. Язык - C #, .Net Core 3.1 / .Net Framework 4.7 На первом этапе конвейера создается все решение и запускаются модульные и интеграционные тесты. На следующих этапах различные микросервисы и отдельные части API публикуются и загружаются в Azure как отдельные артефакты. Все это запускается на собственном агенте сборки.
После тестирования пытался распараллелить этапы. Логика заключалась в том, что на этих этапах сборка не производится, выполняется только простое копирование и архивирование файлов. Для этого я запустил два разных агента сборки из одного пула на одном компьютере. Агенты использовали ту же локальную папку, что и их рабочие папки. Но когда я попытался запустить конвейер сборки, агенты начали конкурировать за ресурсы. Проблема с папкой для артефактов сборки решена, но не единственная. Например, оба агента пытались создать / удалить одинаковые временные файлы в папке _temp. В этом случае одна задача завершилась сбоем со следующей ошибкой:
[error]Unhandled: ENOENT: no such file or directory, open 'e:\_build\_temp\.taskkey'
Также стали возникать странные ошибки другого типа. Текст ошибок был примерно таким, как на скриншоте ниже: Странный текст ошибки
Я предполагаю, что причиной этих ошибок были конфликты между двумя агентами.
Использование двух разных рабочих папок для агентов кажется не лучшим решением, потому что в этом случае один агент не будет иметь доступа к файлам, созданным на первом этапе.
Есть ли у кого-нибудь успешный опыт запуска двух агентов Azure Pipelines на одном компьютере для обработки одного конвейера?