Arhn - архитектура программирования

Сборка TFS2017.2 всегда очищает (получает новый код) при каждой сборке — почему

У меня есть новая сборка TFS (локальная), которая получает весь код при каждом запуске. У меня для очистки установлено значение false как на этапе получения источников, так и на этапе сборки. Я почти уверен, что этого не произошло около недели назад, когда я впервые начал использовать сборку TFS2017, но теперь каждая сборка повторно получает код. Что мне не хватает?

введите здесь описание изображения

введите здесь описание изображения

введите здесь описание изображения введите здесь описание изображения

16.02.2018

  • Можете ли вы поставить сборку в очередь с переменной system.debug, для которой установлено значение true, а затем поделиться журналами сборки? Загружает ли шаг ресурсов все файлы в проекте или только файлы dll? Возникает ли эта проблема, если вы отключите все задачи сборки в определении сборки, просто продолжая получать исходный код? 23.02.2018

Ответы:


1

Моя проблема заключалась в том, что я одновременно сопоставил папку и ее подпапку, но не осознавал этого. Затем удаление сопоставления подпапок решает проблему.

Вот как я узнал:

  1. Поставить новую сборку в очередь с переменной system.debug, установленной на true
  2. Посмотрите на журнал во время сборки и найдите что-то вроде (** **) этого:

    **Attempting to find a workspace: 'ws_4_56'** Skipping workspace: 'ws_1_56' Skipping workspace: 'ws_2_55' Skipping workspace: 'ws_3_56' Candidate workspace: 'ws_4_56' **Expected number of mappings: '57'. Actual: '56'** Skipping workspace: 'ws<Workspace computer="xxxxx" islocal="true" name="ws_4_56" ...>56' Skipping workspace: 'ws_6_56' **Matching workspace not found.**

  3. Если у вас есть ожидаемое количество сопоставлений, превышающее фактическое, вам необходимо проверить, какое сопоставление является избыточным, сравнив выходные данные агента в <Workspace computer="xxxxx" islocal="true" name="ws_4_56" ...> с сопоставлениями в пользовательском интерфейсе TFS.

  4. Удалите все сопоставления вложенных папок, которые уже включены в сопоставление папок.
29.10.2018
  • Спасибо, Флупп, ты гений! Пока я тестировал это только на одной сборке, но, похоже, это происходит из-за дублирования деревьев. Спасибо! 30.10.2018
  • К сожалению, я только что попробовал это на другой сборке, где не было подпапок сопоставленных папок, и он все еще получает все :-( 30.10.2018

  • 2

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

    Если есть несколько рабочих областей, вы можете использовать несколько агентов сборки. Очистка не имеет значения, если вы каждый раз получаете новый агент. Вы можете укажите агент сборки vNext в определении сборки, а затем несколько раз поставьте в очередь для тестирования.

    Также попробуйте явно определить переменную Build.Clean и установить ее значение ниже на вкладке Переменные:

    • all, если вы хотите удалить $(Agent.BuildDirectory), то есть всю рабочую папку, содержащую папку с исходным кодом, папку с двоичными файлами, папку с артефактами и т. д.
    • source, если хотите удалить $(Build.SourcesDirectory).
    • binary Если вы хотите удалить $(Build.BinariesDirectory).

    Другой способ сузить проблему — удаленно связаться с агентом сборки, проверить, удалены ли файлы под C:\TFS2017_agent\_work\3\S\XX во время процесса сборки.

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

    19.02.2018
  • Не работает. И повторное создание определения сборки заняло бы (пустая трата времени) более часа — это довольно большое определение. Я думаю, что это не пустая трата времени, если это сэкономит мне время на построении в будущем, но это было бы очень болезненно. Если бы только был способ экспортировать/импортировать определения между проектами!! (Я официально предложил это на форуме продуктов MS). 24.05.2018

  • 3

    Установите для Build.RepoClean значение false в разделе «Переменные». Кажется, это трюк

    10.05.2018
  • Нет - не помогает. Эта проблема ушла на некоторое время, но теперь она вернулась. 24.05.2018
  • Это должна быть комбинация флага очистки, для которого установлено значение False в задаче «Получить исходный код» (раскрывающийся список внизу), и переменной Build.RepoClean (в разделе «Переменные»), для которой установлено значение false. Должен работать для TFS 2017.2 30.05.2018
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..