Заметки консультанта

Шамрай Александр Владимирович

Archive for 24.07.2015

Руководство по настройке шаблона процесса TFS. Сценарий 5 – Клонирование типов рабочих элементов с использованием PowerShell

Posted by Шамрай Александр на Июль 24, 2015

Краткий обзор бизнес-проблемы

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

Например, одна из причин клонирования рабочего элемента – это частые изменения настроек типа рабочего элемента, которые необходимо применять для более чем одного командного проекта. Этот сценарий обычно случается, когда вы хотите перенести ваши настройки из тестовых проектов в промышленные.

Что в этом руководстве?

  • Обновление существующих командных проектов

Обновление существующих командных проектов

Этот документ представляет решение для этого сценария из реальной жизни для клонирования типа рабочего элемента с помощью PowerShell, где измененный тип рабочего элемента был уже реализован и развернут. Ниже шаги, которые определяют процесс обновления существующих командных проектов с помощью PowerShell для клонирования измененного типа рабочего элемента.

1. С помощью приложения Windows PowerShell ISE или Блокнота откройте файл CloneWIT.ps1, который является частью данного руководства.

Рисунок 45 – CloneWIT.ps1 загруженный в Windows PowerShell ISE

ПримечаниеWindows PowerShell Integrated Scripting Environment (ISE) является основным приложением для Windows PowerShell. В Windows PowerShell ISE можно запускать команды, писать, тестировать и отлаживать сценарии в едином Windows ориентированном графическом пользовательском интерфейсе с многострочным редактированием, завершением табуляции, расцветкой синтаксиса, выборочным выполнением, контекстно-зависимой справкой и поддержка языков справа налево. Пункты меню и сочетания клавиш можно использовать для выполнения многих одинаковых задач, которые необходимо выполнить в консоли Windows PowerShell. Например, при отладке сценариев в Windows PowerShell ISE, чтобы задать точку останова в скрипте, щелкните правой кнопкой мыши на строке кода и выберите команду Переключить точку останова.

Дополнительные сведения о приложении Windows PowerShell Integrated Scripting Environment (ISE) можно найти в Интернете.

 

2. Сценарий начинается с загрузки модуля PowerShell, содержащий команды утилиты, которые используются для взаимодействия с Team Foundation Server.

# load the TFS.psm1 PowerShell module located in the same location as this script.

$ScriptDirectory = Split-Path $MyInvocation.MyCommand.Path

Import-Module (Join-Path $ScriptDirectory TFS.psm1)

Исходный код 11 – Модуль загрузки утилит Team Foundation Server

3. После загрузки этой функции, сценарий загружает функцию Clone-WorkItemType, которая будет выполнять операцию клонирования типа рабочего элемента

function Clone-WorkItemType

{

param (

[psobject] $SourceProject,

[psobject] $DestinationProject,

[string] $WorkItemTypeName,

[Switch] $includeGlobalLists

)

# get the work item type xml from the source project.

$WorkItemType =
$SourceProject.WorkItemTypes[$WorkItemTypeName]

$sourceXml = $WorkItemType.Export($includeGlobalLists)

$definition =
$sourceXml.InnerXml

try

{

# verify against target, may raise an exception

[Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItemType]::Validate($DestinationProject, $definition)

# import the work item type definition xml into the dest. project

# if no exceptions, then clone was successful.

$DestinationProject.WorkItemTypes.Import($definition)

Write-Host «Clone succeeded.»

}

catch [System.Xml.XmlException]

{

Write-Error «Xml Exception: \n\n$($_.Message)»

}

catch [System.Xml.Schema.XmlSchemaValidationException]

{

Write-Error «Xml Schema Validation Exception: \n\n$($_.Message)»

}

}

Исходный код 12 – Функция PowerShell Clone-WorkItemType

4. Затем сценарий определяет набор переменных, которые определяют командные проекты для типа рабочего элемента, из которого и в который он будет импортироваться. В нашем случае источник и целевой командные проекты находятся в одной и той же коллекции проекта. Измените значения этих переменных согласно ваших потребностей.

# source and target tfs project collections and team projects

$sourceCollectionName =
«DefaultCollection»

$sourceProjectName =
«PlaygroundAgile50»

$destinationCollectionName =
«DefaultCollection»

$destinationProjectName =
«RangersDemo»

Исходный код 13 – Определение источника и целевого проекта для клонирования

5. По умолчанию при вызове функции Get-Tfs используется имя локального компьютера. Если вы выполняете сценарий CloneWIT.ps1 не на сервере уровня приложений TFS, то вам нужно будет изменить этот параметр на путь к вашему серверу TFS.

# connect to TFS

$tfs = Get-Tfs «http://$env:COMPUTERNAME`:8080/tfs»

Исходный код 14 – Подключение к Team Foundation Server

6. Далее сценарий получает сведения о командных проектах от сервера TFS, используя импортированную команду утилиты Get-TfsCollection.

# create connection to both source and target team projects

$sourceCollection = ($tfs | Get-TfsCollection -Name $sourceCollectionName)

$sourceProject =
$sourceCollection.WIT.Projects[$sourceProjectName]

$destinationCollection = ($tfs | Get-TfsCollection -Name $destinationCollectionName)

$destinationProject = $destinationCollection.WIT.Projects[$destinationProjectName]

Исходный код 15 – Определение источника и целевого проекта для клонирования

7. Затем вызывается функция Clone-WorkItemType с параметрами имени типа рабочего элемента и значением, которое указывает следует ли также копировать глобальные списки. Настройте WorkItemTypeName и includeGlobalLists под ваши потребности.

# call the clone work item type function

Clone-WorkItemType
`

-SourceProject $sourceProject `

-DestinationProject $destinationProject `

-WorkItemTypeName «Bug»

Исходный код 16 – Вызов функции Clone-WorkItemType

8. Сохраните и выполните сценарий, нажав F5 в приложении Windows PowerShell ISE или открыв командную строку и выполнив следующую команду:

powershell.exe -File «C:\HOL\TFS Process Template Customization Guidance\PowerShell\CloneWIT.ps1» false

Исходный код 17 – Выполнение сценария клонирования типа рабочего элемента

ПримечаниеПо умолчанию PowerShell запрещает выполнение сценария на компьютере. Администратор может изменить политику или вы можете добавить параметр -ExecutionPolicy с другим значением такими как Bypass или RemoteSigned.

Дополнительные сведения о политике выполнения PowerShell можно найти, введя

Get-Help about_Execution_Policies

в консоли PowerShell или в PowerShell ISE.

Дополнительные сведения о Windows PowerShell Integrated Scripting Environment (ISE) можно найти в Интернете.

 

9. Сценарий должен завершить со счастливым сообщением; Clone succeeded. Если вы обнаружите ошибку, то она может быть связана с безопасностью или введением неправильных значений в шагах 4, 5 или 7.

Рисунок 46 – Удачное выполнение операции клонирования

Posted in Microsoft, Team Foundation Server, TFS Process Template Customization Guide, Visual Studio | Отмечено: , , | Leave a Comment »

 
%d такие блоггеры, как: