Как запустить TFS сборку от имени другого пользователя
24/03/2011 1 комментарий
Как правило, в команде разработчиков есть люди, отвечающие за работоспособность сборки. может случится так, что gated сборка сломается не по вине разработчика, вносившего изменения. В этом случае, после устранения проблем, например, с агентом, на котором происходит сборка, неудачную попытку внесения изменений можно повторить. Для этого не обязательно привлекать разработчика, который изначально запускал сборку – можно запустить сборку от его имени.
Для управления сборками существует утилита tfsbuild, которая, в том числе, позволяет запустить сборку от имени другого человека. Пользоваться ей напрямую для запуска gated сборки несколько неудобно – Вам придётся два раза задавать имя того разработчика, от имени которого Вы хотите внести изменения. Один раз его имя его учётной записи должно быть указано в параметре ‘/requestedfor‘, а второй – в имени shelveset-а.
Я облегчил себе эту задачу, написав простую PowerShell функцию, и поместив её в профиль автозагрузки. Помимо того, что она позволяет не писать два раза имя пользователя, я получил ещё два маленьких бонуса – можно не писать адрес TFS сервера, а также теперь не надо вспоминать точное написание параметров (PowerShell помогает автоматически подставлять их имена). Вот, что получилось:
function tfbuild
{
Param
(
[parameter(Mandatory=$true)]
[String]
$ProjectName,
[parameter(Mandatory=$true)]
[String]
$BuildDefinition,
[parameter(Mandatory=$true)]
[String]
$Shelveset,
[parameter(Mandatory=$true)]
[String]
$Owner
)
$projectCollection = "http://tfs.prod.quest.corp:8080/Windows Management/";
$shelveset = $Shelveset + ";" + $Owner;
& tfsbuild start $projectCollection $ProjectName $BuildDefinition /requestedfor:$Owner /shelveset:$shelveset /checkin /queue
}
Поместите этот код в свой файл
‘%userprofile%\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1’
и запуск сборки от имени другого пользователя будет всегда у Вас под рукой.
Кстати, несмотря на то, что самая длинная строчка в примере не помещается на экран, при копировании текст выделяется полностью.