TFS2015: Как установить два разных определения сборки для использования одного и того же локального репозитория (git)?

У меня есть два разных определения сборки в TFS2015, как вы можете видеть на картинке Def1 и Def2. Они строят разные решения из одной и той же ветви и используют один и тот же агент сборки VSO (на сервере установлен только 1 экземпляр). Когда я ставлю в очередь сборку, сборка Def1 извлекает локальный репозиторий в другую папку, как Def2. (например: c:\TfsData\Build_work\ee25a947 и c:\TfsData\Build_work\faee67a3), но я хочу заставить их использовать один и тот же локальный репозиторий git (поскольку нет необходимости иметь два разных локальных репозитория, они будут создавать другое решение с разными шагами сборки). Есть ли способ его настроить?

Спасибо

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

3 ответа

Решение

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

Это сделано для предотвращения кровотечения между сборками.

Если вы используете своих собственных агентов вместо облачных агентов, вы можете сделать следующее:

  • Перейдите в настроенную рабочую папку
  • Перейдите в папку "sourceRootMapping\\"
  • Откройте "SourceFolder.json" и обновите там пути к каталогам, указав тот же путь к репозиторию, который вы также хотите использовать для определения сборки "def2".

Ниже приведены значения, которые нам пришлось обновить:

  "build_artifactstagingdirectory": "1\\a",
  "agent_builddirectory": "1",
  "build_sourcesdirectory": "1\\s",
  "common_testresultsdirectory": "1\\TestResults",

После того, как мы обновили их, шаг get sources между определениями сборки def1 и def2 начал использовать тот же путь к репозиторию в "1\".

Убедитесь, что ваш "SourceRootMappings\Mappings.json" не имеет значения 0 для "lastBuildFolderNumber". Если это так, и вы начнете использовать этот агент сборки для нового определения сборки, он переопределит ваш предыдущий репозиторий.

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

Синхронизация репозитория: TeamProjectName (Git)

Извлечение xxxx в C:\a\1\s

Проверил ветку refs/heads/branch для репозитория TeamProjectName на коммите xxxx

На самом деле, xxxx - это последний идентификатор фиксации в вашей ветке по умолчанию, последний коммит будет извлечен по умолчанию во время сборки. Символ / число является идентификатором фиксации.

Другие вопросы по тегам