Серия « Jenkins CI » посвящена полезным методам и подходам для создания рабочих мест для построения ваших проектов или проведения тестов. Иногда требуется, чтобы все ваши тесты на дым были выполнены регулярно и были зелеными. Тем не менее, всегда есть новая разработка, и в тесты можно вносить ошибки. В большинстве случаев вы хотите запускать эти тесты, только когда вы на 100% уверены, что новые изменения не приведут к поломке сборок или неожиданным сбоям. Решение в таких случаях заключается в загрузке источника тестов по определенному стабильному номеру набора изменений.
Получить исходный код по конкретному TFS Changeset
Стандартный способ загрузки кода из TFS — использование вкладки «Управление исходным кодом» . Параметр Team Foundation Server добавляется путем установки подключаемого модуля Team Foundation Server .
Однако, если вы использовали плагин, вы знаете, что нет способа настроить его для загрузки исходного кода по определенному номеру набора изменений. Таким образом, чтобы загрузить исходный код с помощью определенного набора изменений, необходимо добавить новую пакетную команду Windows.
В появившемся окне должны быть добавлены следующие команды.
%TFS% workspaces -format:brief -server:{your-tfs-team-project-collection-url}
%TFS% workspace -new Hudson-%JOB_NAME%-MASTER;{your-domain-user-name} -noprompt -server:{your-tfs-team-project-collection-url}
%TFS% workfold -map $/{tfs-path-to-your-sln} C:\Jenkins\jobs\%JOB_NAME%\workspace\ -workspace:Hudson-%JOB_NAME%-MASTER -server:{your-tfs-team-project-collection-url}
%TFS% get $/{tfs-path-to-your-sln} -force -recursive -version:%ChangesetNumber% -noprompt
%TFS% history $/{tfs-path-to-your-sln} -recursive -stopafter:1 -noprompt -version:%ChangesetNumber% -format:brief -server:{your-tfs-team-project-collection-url}
Вам нужно только изменить фрагменты внутри фигурных скобок «{}» с вашей информацией. Код собирается создать на новый TFS рабочее пространство с именем вашего Дженкинс работы. Затем он будет генерировать на отображение на вашем пути TFS проекта в локальную папку . Наконец, он собирается загрузить в исходный код с помощью определенного числа наборов изменений . Он передается команде параметром % ChangesetNumber% . Поэтому вам нужно создать параметр нового задания типа string с именем ChangesetNumber .
Получить последний код Windows Batch Command
Можно использовать аналогичные команды, чтобы получить последний исходный код.
%TFS% workspaces -format:brief -server:{your-tfs-team-project-collection-url}
%TFS% workspace -new Hudson-%JOB_NAME%-MASTER;{your-domain-user-name} -noprompt -server:{your-tfs-team-project-collection-url}
%TFS% workfold -map $/{tfs-path-to-your-sln} C:\Jenkins\jobs\%JOB_NAME%\workspace\ -workspace:Hudson-%JOB_NAME%-MASTER -server:{your-tfs-team-project-collection-url}
%TFS% get $/{tfs-path-to-your-sln} -force -recursive -noprompt
%TFS% history $/{tfs-path-to-your-sln} -recursive -stopafter:1 -noprompt -format:brief -server:{your-tfs-team-project-collection-url}
Команды идентичны с небольшим отличием — отсутствием аргумента % ChangesetNumber% .
Объединить Получить последний код и Получить по конкретному номеру набора изменений
Если вы хотите создать многоцелевое задание Jenkins, способное работать в двух режимах — получите последний и получите по конкретному номеру набора изменений. Первый режим будет запущен, если% ChangesetNumber% оставить пустым. Для этого требуется небольшая настройка ранее упомянутых команд.
IF "%ChangesetNumber%" == "" (
%TFS% workspaces -format:brief -server:{your-tfs-team-project-collection-url}
%TFS% workspace -new Hudson-%JOB_NAME%-MASTER;{your-domain-user-name} -noprompt -server:{your-tfs-team-project-collection-url}
%TFS% workfold -map $/{tfs-path-to-your-sln} C:\Jenkins\jobs\%JOB_NAME%\workspace\ -workspace:Hudson-%JOB_NAME%-MASTER -server:{your-tfs-team-project-collection-url}
%TFS% get $/{tfs-path-to-your-sln} -force -recursive -noprompt
%TFS% history $/{tfs-path-to-your-sln} -recursive -stopafter:1 -noprompt -format:brief -server:{your-tfs-team-project-collection-url}
) ELSE (
%TFS% workspaces -format:brief -server:{your-tfs-team-project-collection-url}
%TFS% workspace -new Hudson-%JOB_NAME%-MASTER;{your-domain-user-name} -noprompt -server:{your-tfs-team-project-collection-url}
%TFS% workfold -map $/{tfs-path-to-your-sln} C:\Jenkins\jobs\%JOB_NAME%\workspace\ -workspace:Hudson-%JOB_NAME%-MASTER -server:{your-tfs-team-project-collection-url}
%TFS% get $/{tfs-path-to-your-sln} -force -recursive -version:%ChangesetNumber% -noprompt
%TFS% history $/{tfs-path-to-your-sln} -recursive -stopafter:1 -noprompt -version:%ChangesetNumber% -format:brief -server:{your-tfs-team-project-collection-url}
)
Удалить рабочую область TFS
В качестве нового шага после сборки необходимо добавить команду очистки для удаления ранее созданного рабочего пространства TFS .
DELETE %TFS% workspace /delete /noprompt /collection:"{your-tfs-team-project-collection-url}" "Hudson-%JOB_NAME%-MASTER;{your-domain-user-name}"