Собственно, как я писал чуть раньше, занимаемся настройкой скриптов автоматизированного разворачивания. Одной из задач является выложить XAP-ы получившиеся в результате последнего удачного билда в SharePoint. На удивление скрипт оказался достаточно простым.
Настраиваем среду:[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.TeamFoundation.Client")
[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.TeamFoundation.Build.Client")
[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.TeamFoundation.Build.Common")
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
И параметры для запуска скриптов:
$tfsCollectionUrl = "http://<ваш сервер>:8080/tfs/<имя коллекции>"
$tfsProjectName = "<Имя проекта в коллекции>";
$tfsSolutionName = "<Имя Solution>";
$sharePointServer = "http://<адрес сервера SharePoint>";
$sharePointXapFolder = "<Папка в которой лежат XAP>";
$configurationForPublish = "Release";
Получаем папку где лежит последний удачный билд:
$server = new-object Microsoft.TeamFoundation.Client.TfsTeamProjectCollection(New-Object Uri($tfsCollectionUrl))
$buildServer = $server.GetService([Microsoft.TeamFoundation.Build.Client.IBuildServer])
$buildDetail = $buildServer.QueryBuilds($tfsProjectName, $tfsSolutionName) | where { $_.BuildDefinition.LastGoodBuildUri -eq $_.Uri } #| select BuildNumber
Write-Output ("BuildNumber " + $buildDetail.BuildNumber);
Write-Output ("DropLocation " + $buildDetail.DropLocation);
Копируем XAP-ы в папку на сервере SharePoint:
$spSite = New-Object -TypeName "Microsoft.SharePoint.SPSite" -ArgumentList $sharePointServer;
$spWeb = $spSite.OpenWeb();
$spFolder = $spWeb.GetFolder($sharePointXapFolder);
$spFileCollection = $spFolder.Files;
$sourceFolder = $buildDetail.DropLocation + "\" + $configurationForPublish;
Get-ChildItem $sourceFolder -filter “*.xap” | ForEach { $spFileCollection.Add(“$($_.Name)”,$_.OpenRead(),$true) }
Write-Output ("Xap published at: " + (Get-Date -format yyyy-MM-dd-HH:mm:ss));
Собственно все. Все XAP-ы окажутся в нужной папке на сервере.
P.s. За часть работающую с TFS - спасибо, Павлу Музыке.
P.p.s. Windows PowerShell ISE - редиска, не копирует в буфер информацию о цветах, а искать внешнюю утилиту для раскраски кода - лень ((
Настраиваем среду:[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.TeamFoundation.Client")
[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.TeamFoundation.Build.Client")
[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.TeamFoundation.Build.Common")
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
И параметры для запуска скриптов:
$tfsCollectionUrl = "http://<ваш сервер>:8080/tfs/<имя коллекции>"
$tfsProjectName = "<Имя проекта в коллекции>";
$tfsSolutionName = "<Имя Solution>";
$sharePointServer = "http://<адрес сервера SharePoint>";
$sharePointXapFolder = "<Папка в которой лежат XAP>";
$configurationForPublish = "Release";
Получаем папку где лежит последний удачный билд:
$server = new-object Microsoft.TeamFoundation.Client.TfsTeamProjectCollection(New-Object Uri($tfsCollectionUrl))
$buildServer = $server.GetService([Microsoft.TeamFoundation.Build.Client.IBuildServer])
$buildDetail = $buildServer.QueryBuilds($tfsProjectName, $tfsSolutionName) | where { $_.BuildDefinition.LastGoodBuildUri -eq $_.Uri } #| select BuildNumber
Write-Output ("BuildNumber " + $buildDetail.BuildNumber);
Write-Output ("DropLocation " + $buildDetail.DropLocation);
Копируем XAP-ы в папку на сервере SharePoint:
$spSite = New-Object -TypeName "Microsoft.SharePoint.SPSite" -ArgumentList $sharePointServer;
$spWeb = $spSite.OpenWeb();
$spFolder = $spWeb.GetFolder($sharePointXapFolder);
$spFileCollection = $spFolder.Files;
$sourceFolder = $buildDetail.DropLocation + "\" + $configurationForPublish;
Get-ChildItem $sourceFolder -filter “*.xap” | ForEach { $spFileCollection.Add(“$($_.Name)”,$_.OpenRead(),$true) }
Write-Output ("Xap published at: " + (Get-Date -format yyyy-MM-dd-HH:mm:ss));
Собственно все. Все XAP-ы окажутся в нужной папке на сервере.
P.s. За часть работающую с TFS - спасибо, Павлу Музыке.
P.p.s. Windows PowerShell ISE - редиска, не копирует в буфер информацию о цветах, а искать внешнюю утилиту для раскраски кода - лень ((
Комментариев нет:
Отправить комментарий