Проблема с кэшем артефактов агента TeamCity: агент накапливает артефакты из всех предыдущих сборок

#continuous-integration #teamcity

Вопрос:

У меня есть настройка TeamCity в docker-compose.yml

 version: "3"
services:
  server:
    image: jetbrains/teamcity-server:2021.1.2
    ports:
      - "8112:8111"
    volumes:
      - ./data_dir:/data/teamcity_server/datadir
      - ./log_dir:/opt/teamcity/logs
  db:
    image: mysql
    ports:
     - "3306:3306"
    volumes:
     - ./mysql:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=111
      - MYSQL_DATABASE=teamcity
  teamcity-agent-1:
    image: jetbrains/teamcity-agent:2021.1.2-linux-sudo
    environment:
      - SERVER_URL=http://server:8111
      - AGENT_NAME=docker-agent-1
      - DOCKER_IN_DOCKER=start
    privileged: true
    container_name: docker_agent_1
    ipc: host
    shm_size: 1024M
  teamcity-agent-2:
    image: jetbrains/teamcity-agent:2021.1.2-linux-sudo
    environment:
      - SERVER_URL=http://server:8111
      - AGENT_NAME=docker-agent-2
      - DOCKER_IN_DOCKER=start
    privileged: true
    container_name: docker_agent_2
    ipc: host
    shm_size: 1024M
  teamcity-agent-3:
    image: jetbrains/teamcity-agent:2021.1.2-linux-sudo
    environment:
      - SERVER_URL=http://server:8111
      - AGENT_NAME=docker-agent-3
      - DOCKER_IN_DOCKER=start
    privileged: true
    container_name: docker_agent_3
    ipc: host
    shm_size: 1024M
 

и у меня есть тесты E2E, которые я запускаю в агентах teamcity. В результате выполнения тестов они генерируют HTML-отчет, а в случае неудачи тестов также генерируют видеоотчет. Все работает так, как ожидалось, локально без TeamCity. Когда я перемещаю его в TeamCity, я настраиваю, чтобы папка «отчеты» хранилась в артефактах. И на самом деле у меня следующее поведение:

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

Мой вопрос точно описан в поддержке jetbrains в 2014 году https://teamcity-support.jetbrains.com/hc/en-us/community/posts/206845765-Build-Agent-Artifacts-Cache-Cleanup

но я попробовал разные настройки оттуда, и, к сожалению, не повезло

Что я пробовал сам и что не помогло:

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

в /data/teamcity_agent/conf/BuildAgent.properties я размещаю 2 новых параметра

 teamcity.agent.filecache.publishing.disabled=true
teamcity.agent.filecache.size.limit.bytes=1
 

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

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

  1. что помогает, так это нажать «Очистить источники для этого агента» в настройках агента, но нажимать руками-это не тот способ

Это похоже на проблему с кэшем, потому что, если я назначу другого агента, накопление начнется с самого начала.

любые предложения принимаются

Ответ №1:

Похоже, я нашел ответ

https://www.jetbrains.com/help/teamcity/2021.1/clean-checkout.html#Automatic Очистить Оформить заказ

На странице Создание/Редактирование конфигурации сборки > Параметры управления версиями следует выбрать опцию «Очистить все файлы перед сборкой».