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

Билд запускается каждые 10 минут
изменения в репозитории бывают раз в пару дней
как пропускать шаг копирования репозитория при сборке если изменений не было?

Немного не по теме - у вас деплой происходит каждые 10 минут без изменений? Для чего?

тесты

А зачем гонять тесты каждые 10 минут, если там изменений не было? =)

1 лайк

Честно говоря не знаю, как с этим работает именно ТС, но я думаю по аналогии как и Jenkins.
Если изменения в репо есть - то он их стянет.
Если нет - то не стянет…

В чем проблема-то, можете подробнее описать?

много внешних партнеров(апи) которые могут отваливаться
тесты покрывают этот функционал взаимодействия
и дают уверенность заказчику в том что те или действия\функционал доступен для использования например пользователям на портале
ну и статистику

да дженкиинс так делает по дефолту
но в тс в логах сборки вижу что каждый раз он тянет ропозиторий - а где это настраивается не пойму

По-моему они оба работают с git, поэтому в этом вопросе не должно быть расхождений.
Возможно, разное логирование вводит вас в заблуждение.
В любом случае, это у вас занимает столь долгое время?

да не особо много, но неприятно же ) зачем лишние действия
секунд 10
а если тесты нужно будет прогонять каждые минуты 2 - 10 секунд уже значительно будет задерживать

Я думаю в данном случае вряд ли что-то получится сделать.
Что-то мне подсказывает, что эти 10 секунд он ищет изменения.

2 лайка

У меня в проекте сделана следующая система (тоже используется ТимСити):

  1. Есть один билд, который билдится каждый раз, когда тесты изменяются. Данный билд дает тесты как артифакты.
  2. Есть билды, которые используют артифакты из первого билда, не производя компиляцию проекта. И там можно поставить в настройках, не очищать рабочую директорию.
2 лайка

Попробовала сделать так же , но не пойму почему ошибка при этом
хотя такая ошибка только после 6 билда появилась внезапно - ничего не менялось
[12:50:15] Using vcs information from agent file: e81090648487d4e6.xml

[12:50:15] Checkout directory: C:\TeamCity\buildAgent\work\e81090648487d4e6

[12:50:15] Updating sources : auto checkout (on agent)

[12:50:15] [Updating sources] Will use agent side checkout

[12:50:15] [Updating sources] VCS Root: http://gitlab.reksoft.ru/cargobar/tests.git#refs/heads/master

[12:50:15] [VCS Root: http://gitlab.reksoft.ru/cargobar/tests.git#refs/heads/master] revision: bf65074994dfc87779537c64525d6960cad53bab

[12:50:15] [VCS Root: http://gitlab.reksoft.ru/cargobar/tests.git#refs/heads/master] Git version: 2.21.0.0

[12:50:15] [Updating sources] Failed to perform checkout on agent: Error while configuring remote repository at C:\TeamCity\buildAgent\system\git\git-F3321C49.git

[12:50:15] Publishing internal artifacts

[12:50:15] Build failed to start. Artifacts will not be published for this build

[12:50:15] Clearing temporary directory: C:\TeamCity\buildAgent\temp\buildTmp

Мне сложно сказать, не зная - который из билдов это, что за проект (какие инструменты в тестах), что в настройках билдов.

увидела что кто-то дабавил тригер (либо он был создан по дефолту в tc)
может дело в нем ? http://joxi.ru/Y2LYBykt7xMqVA
вот как ностоен первый шаг http://joxi.ru/V2VLEaYudB8adr

В первом билде - который собирает изменения, там должен быть лишь один - VCS trigger, который реагирует на изменения в Мастере. Ни на что другое он не должен реагировать (разве что если сами вручную запускаете).
В билдах, в которых выполняются тесты - там уже ставите триггер на выполнение в то время, которое вам нужно.

1 лайк

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