172 похожих чатов

Привет. Есть Teamcity, который на каждый пулл реквест в гите

запускает деплой стейджинга в кубер и затем E2E тесты.
Если разработчик делает несколько пушей с интервалом в 5 минут, то на одном стейдже может запуститься несколько Е2Е одновременно и они начинают мешать друг другу.
Я хочу ограничить, чтобы одновременно для одной ветки мог работать только 1 билд с E2E, а остальные висели в очереди. Как мне этого добиться?

Ограничение "number of simultaneously running builds" влияет на всю конфигурацию целиком, а мне нужен лимит per branch.
Этого можно было бы добиться через Shared Resouce with Custom Value, вешая лок на каждую ветку, но все возможные custom values надо объявить заранее, а в билде я не могу указать зависимость от ресурса, взяв его value из переменной.

У кого-нибудь есть идеи, как это можно решить?

16 ответов

17 просмотров

В голову приходит только Quiet period + проверка не бежит ли на агентах билд с этого же бранча

Altimit- Автор вопроса
raven.oscar
В голову приходит только Quiet period + проверка н...

Quiet period я не могу такой долгий ставить. Прогон текущих тестов занимает 15 минут и будет только расти. А проверка, не бежит ли на агентах билд с этого же бранча на каком уровне должна работать? Если как шаг внутри билда, то я же не смогу его переставить в очередь. То есть разработчик пушит в гит, код деплоится, затем запускается билд E2E, видит что работает другой для той же ветки, запущенный 10 минут назад, и что он должен сделать? Тут два варианта - прибиться, но тогда тесты для кода не запустятся. Или впасть в цикл ожидания, но тогда агенты будут проставить впустую.

Altimit
Quiet period я не могу такой долгий ставить. Прого...

хммммм... период я имел вв виду пока пользователь все догрузит что хотел

Altimit- Автор вопроса
raven.oscar
хммммм... период я имел вв виду пока пользователь ...

ну он сейчас стоит в 60 секунд. а разработчик бывает через 5-10 минут следюущий коммит делает.

Мне кажется, тебе на ограничивать не количество одновременных билдов, а количество одновременных e2e тестов - каким-то местным локом

Altimit- Автор вопроса
Nick Kritsky 🇺🇦
Мне кажется, тебе на ограничивать не количество од...

ну это опять же фактически блокирует агенты, которые будут висеть уже подхватив билд и в ожидании лока.

Altimit
ну это опять же фактически блокирует агенты, котор...

Просится решение - две разных билд конфигурации. Одна билдит и деплоит, другая тестит. И триггеры у них значит разные должны быть.

Altimit- Автор вопроса
Nick Kritsky 🇺🇦
Просится решение - две разных билд конфигурации. О...

Так оно сейчас так и есть. Одна билдит и деплоит после пуша в гит, вторая тестит после деплоя. Но это не мешает двум тестам запуститься в итоге одновременно с некоторым интервалом. На самом деле мне надо, чтобы второй билд не запускался пока тест первого не закончится, но я решил не усложнять постановку задачи

Altimit
Так оно сейчас так и есть. Одна билдит и деплоит п...

временное окно и запускать тест только на последнем коммите. или важно прямо каждый прогонять?

Altimit
Так оно сейчас так и есть. Одна билдит и деплоит п...

Варик - результаты теста складывать в артефактори. Тригерить новый билд по обновлению артефактори

Altimit- Автор вопроса
Сергей Королёв
временное окно и запускать тест только на последне...

Временное окно стоит минуту. Тест длится 15 минут. А временное окно в 15 минут - слишком долго. Плюс тест может запуститься не сразу, если есть накопленная очередь на агентах. и тогда между коммитами может быть еще больше гап, чтобы тесты запустились одновременно

Altimit- Автор вопроса
Nick Kritsky 🇺🇦
Варик - результаты теста складывать в артефактори....

смотри коммит А1 триггерит деплой А1, который триггерит тест А1 коммит А2 триггерит деплой А2, который триггерит тест А2 я не могу деплой А2 триггерить на появление артефакта после теста А1, потому что они логически не связаны между собой.

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

Altimit
смотри коммит А1 триггерит деплой А1, который триг...

Я имел в виду - что тесты триггерятся только результатами тестов. Билд триггерится коммитом. Деплой триггерится результатами билда.

Altimit- Автор вопроса
Nick Kritsky 🇺🇦
Я имел в виду - что тесты триггерятся только резул...

но триггерить тест А2 на появление артефакта А1 тоже логически неверно. Они не связаны. На момент окончания А1 А2 может не быть вообще. Он может появиться через неделю только А1 и А2 - это идентификаторы коммитов, если что

Altimit- Автор вопроса
Сергей Королёв
ну тогда ивент драйвинг. по запуску говорим что те...

инициатором всех событий является пуш в гит. разработчик пушит код в ветку, для которой создан пулл реквест -> Срабатывает вебхук в гите, который говорит в тимсити об обновлении ветки -> Тимсити билдит для нового коммита контейнеры -> загружает их в докер реджистри -> создает/обновляет deployment в k8s -> завершает билд деплоя завершение билда деплоя триггерит запуск E2E тестов на задеплоенном стейджинге И вот пока эти тесты не закончились, разработчик делает новый пуш в гит и триггерит эту цепочку заново. Она приводит к параллельному запуску другой серии тестов на том же стейдже, а это приводит к некорректным результатам тестов.

Похожие вопросы

Обсуждают сегодня

Мужики и девушки, привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных...
Kraszx
14
Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
Всем привет! Подскажи, пожалуйста, как передать в TComboBox сразу значение и id записи. На Delphi я делал так: ComboBox1.Items.AddObject('Какое-то значение', Pointer(id запис...
Евгений
13
А вот это что за конструкция? Вернее, она тут нафига?
Serjone
10
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
Мужики. привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных элементов...
Kraszx
2
Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
Товарищи, кто работа с iphelper? Или может я в самой логике ошибки фигачу, не пойму.... var ifTable : PMIB_IFTABLE; size, corSize: DWORD; Buffer ...
Warfarellen
4
я так понимаю, я так подозреваю, что создание такого плагина для человека, кто умеет писать плагины для делфи потребует минут 5-10 времени. но это мое подозрение. хотелось бы ...
Kraszx
7
Всем привет! Кто пользуется DevExpress, подскажите пожалуйста, реализован ли в TcxGrid в новых версиях поиск по датам как в Экселе (ну т.е. не просто список чекбоксов со значе...
A Z
4
Карта сайта