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 - это последний идентификатор фиксации в вашей ветке по умолчанию, последний коммит будет извлечен по умолчанию во время сборки. Символ / число является идентификатором фиксации.