Декабрь Прошлый год, на прошлой неделе, прежде чем большинство IT сотрудников продолжают заслуженный отпуск, когда каждая команда пыталась выполнить одно последнее развертывание перед замораживанием кода, я сбил постройку для почти каждого проекта в компании. Звучит страшно? Вот что случилось.
Как все это началось
Мы в основном .NET Shop и используем командный город для наших сборки. У нас есть ряд строительных агентов для работы наших проектов в команде. Пару дней назад до инцидента мы изменили имя хранилища нашего проекта. Впоследствии мы обновляем путь REPO в Teamcity для нашего проекта. После этого мы проводили сухой пробег постройки и подтвердили, что все это было зеленым.
Что вызвало проблему
Однако после того, как эти изменения были сделаны, я заметил, что некоторые из нашей функциональной филиал, только на определенных агентах по сборке начали проваливаться с странной ошибкой Не могу найти главную ветку .. что-то что-то
Я немного читал о проблеме, и оказалось, что это проблема кэширования, в которой командный город по какой-то причине не смог забрать обновленное имя пути хранения репозитария. Это выглядело вполне разумно, чтобы очистить соответствующие переменные CACH CACH CACH. Итак, я пошел вперед и очистил некоторые из переменных кэша. После этого я пробежал мои сборки во всех агентах, и все было зеленым снова.
Хаос
На следующий день, когда я добрался до офиса, был хаос. Люди жаловались на неудачу строить в команде города. Поскольку я был тем, кто прикоснулся к конфигурации города команды, было очень вероятно, что будут вызвать мои изменения.
Мы начали копать глубже в проблему. Мы обнаружили, что командный город «Nuget Plugin» не работал правильно и бросил некоторые странные ошибки практически для всех сборных. Итак, первое, что мы сделали, это то, что делает каждый специалист, попробуй Перезапуск сервера сборки и построить агентов :). К сожалению, на этот раз это не помогло. Не было абсолютно никакой помощи в Интернете.
Исправление
После нескольких испытаний и ошибок нам, наконец, удалось исправить основную проблему с плагином Nuget.
Очистка кэша имела каким-то удаленным плагином Nuget для всех версий Nuget и Build Agents. Чтобы исправить это, нам пришлось вручную остановить агент по сборке, переустановить версию Nuget и снова запустите агент по сборке. Затем повторите процесс для всех необходимых версий Nuget (каждый проект использовал разную версию — может быть последний при создании сборки). Чтобы добавить в нашу боль, плагин Team City Nuget оказался чувствительным к регистру и для некоторой загадочной причины, случай одной из файлов версии Nuget отличался от того, что понравилось бы командование. К счастью, мы смогли решить все вопросы, связанные с плагином Nuget.
Исправление проблемы с плагином Nuget исправила конвейер для большинства наших проектов. Но, немногие другие все еще невались, потому что они взяли зависимость от пакетов Nuget, кэшированные на сервере сборки. Чтобы исправить, мы должны были добавить соответствующую подачу источника Nuget в шагах сборки.
Это было еще не конец …
Просто когда я думал, что все проблемы были решены, и я мог бы пойти домой мирно, жизнь пришла полный круг И мы начали получать оригинальную ошибку в мою сборку. На данный момент времени я не мог принять такой же риск, чтобы очистить командный городской кеш.
Итак, я сделал несколько дальнейших копающих и выясшихся этот вопрос Отказ Вот краткое изложение вопроса:
Мы использовали Gitversion для семантический Версия для наших сборки. Gitversion Нужен доступ к ветку Master/Review для расчета номера версии, но по умолчанию Team City по умолчанию не принести главная ветвь (если только уже нешла). Чтобы решить эту проблему, все, что мне нужно было сделать, это добавить параметр конфигурации номера .git.fethallheads. = правда. Добавление этого параметра исправлена проблема.
Уроки выучены
У нас было много уроков из этого инцидента. В первую очередь, должен был быть осторожен при работе с командой городского кеша. Тем не менее, одно ключевое здесь было то, что все сборки, которые не имели зависимости от плагинов в команде (как мой) не было никакого вопроса. Как организация, мы двигаемся больше к Сценарии Шаги сборки в отличие от использования плагинов. Этот инцидент только что подтвердил наше решение. Для всех вкусов командные города дают, я чувствую, что это все еще имеет долгий путь. В то время как другие инструменты управления сборкой на сборке YAML, настраивая сборки через UI, по-прежнему является предпочтительным способом для команды города. Вы не можете верситься контролировать ваше определение сборки. Может быть, как организация, нам нужно начать оценивать другие варианты на рынке.
Последние мысли
Этот инцидент заставил меня понять, насколько удивительна наша команда IT. Не было никакого указывающего пальца, и все были скорее сосредоточены на исправлении проблемы. Мне повезло работать здесь. И мы расширяемся, так что если вы заинтересованы в присоединении к нашей команде, пожалуйста, напишите мне на vijayakit@utlook.com 🙂 ( https://s.w.org/images/core/emoji/11/72×72/1f642.png Несомненно
Пост Когда я сбил строительный трубопровод для всей организации появился первым на Привет, я Анкит Отказ
Оригинал: «https://dev.to/ankitvijay/when-i-brought-down-build-pipeline-for-entire-organization-57kh»