3

Я хочу автоматически создавать пакеты .wsp и повторно развертывать их на промежуточном сервере после каждой фиксации. Я знаю, как настроить CruiseControl.Net для непрерывной интеграции, но я не знаю, как создавать и развертывать пакеты. До сих пор я получил MSBuild to generate .wsp files, но я борюсь с сценарием автоматического повторного развертывания. То, что я получил до сих пор является сценарий PowerShell:Как настроить непрерывное развертывание для решения SharePoint 2010 Visual Studio?

param([string]$siteUrl = "http://machine.local") 
$ErrorActionPreference = "Stop" 

function WaitForPendingJob 
{param ($sol) 
    $counter = 1 
    $sleeptime = 2 
    $safeguard = 100 
    while($sol.JobExists -and ($counter -lt $safeguard)) { 
     Write-Host -f yellow -NoNewLine "." 
     sleep $sleeptime 
     $counter++ 
    } 
    Write-Host "" 
} 

function InstallOrUpdateSolution 
{param ($SolutionWsp, $SiteUrl, $featureGuid) 
    $FullPath = resolve-path $SolutionWsp 
    $farm = Get-SPFarm 
    $sol = $farm.Solutions[$solutionWsp] 
    if ($sol) 
    { 
     Write-Host -f Green "Going to uninstall $SolutionWsp" 
     if($sol.Deployed -eq $TRUE) 
     { 
      Write-Host -f Green "Deactivating feature $featureGuid at $SiteUrl" 
      Disable-SPFeature -Identity $featureGuid -Url $SiteUrl -Confirm:$false -force -ErrorAction Continue 
      Uninstall-SPSolution -Identity $SolutionWsp -WebApplication $SiteUrl -Confirm:$false -ErrorAction Continue 
      Write-Host -f yellow -NoNewLine "waiting for retraction" 
      WaitForPendingJob $sol 

     } 
     Write-Host -f Green "$SolutionWsp is retracted." 
     Write-Host -f Green "Going to Remove $SolutionWsp" 
     Remove-SPSolution -Identity $SolutionWsp -Force -Confirm:$false -ErrorAction Continue 
     Write-Host -f Green $SolutionWsp is deleted from this Farm 
    } 

    Add-SPSolution -LiteralPath $FullPath 
    Install-SPSolution -Identity $SolutionWsp -WebApplication $SiteUrl -GACDeployment -CASPolicies -Force 
    $sol = $farm.Solutions[$SolutionWsp] 
    if ($sol.Deployed -eq $false) { 
     write-host -f yellow -NoNewLine "waiting for deployment" 
     WaitForPendingJob $sol 
    } 
    Write-Host -f Green $SolutionWsp deployed $sol.Deployed 
    Write-Host -f Green "Activating feature $SolutionWsp at $SiteUrl" 
    Enable-SPFeature -Identity $featureGuid -Url $SiteUrl 
} 

function RestartTimer 
{ 
    Write-Host -f Green Restarting OWSTIMER instances on Farm 
    $farm = Get-SPFarm 
    $farm.TimerService.Instances | foreach {$_.Stop();$_.Start();} 
} 

$date = Get-Date 
Write-Host -f Green "Starting upgrade at " $date 

Add-PsSnapin "Microsoft.SharePoint.PowerShell" -ErrorAction SilentlyContinue 
InstallOrUpdateSolution "Solution1.wsp" $siteUrl "2c6ffaf7-84df-465c-be55-8136926d3e02" 
InstallOrUpdateSolution "Solution2.wsp" $siteUrl "0c6be7af-cccd-4ccd-9b61-deffd16f7830" 
InstallOrUpdateSolution "Solution3.wsp" $siteUrl "8f4862d3-94ea-467b-bdeb-2352295e08c3" 
RestartTimer 

$date = Get-Date 
Write-Host -f Green "Upgrade finished at" $date 

Это ломает, казалось бы, случайных ошибок, в то время как развертывание с Visual Studio 2010 работает каждый раз. Как я могу развернуть .wsp из командной строки в отказоустойчивом виде, как это делает Visual Studio?

ответ

-1

Прежде всего, почему вы чрезмерно усложняете процесс развертывания, используя PowerShell вместо stsadm в пакетном файле? Есть ли необходимость в PowerShell?

+0

Это не по теме, я знаю, как настроить CI, это часть развертывания, с которой у меня возникают проблемы. – skolima

1

Почему вы не используете Update-SPSolution вместо последовательности retract-delete-install-deploy?

+0

Из MSDN: «Командлет Update-SPSolution обновляет развернутое решение SharePoint в ферме. Используйте этот командлет только в том случае, если новое решение содержит тот же набор файлов и функций, что и развернутое решение. Если файлы и функции разные, решение должно быть уволен и перераспределен с помощью командлетов Uninstall-SPSolution и Install-SPSolution, соответственно. " Я боюсь, что это не сработает, если я добавлю некоторые файлы ресурсов. – skolima

+0

Это не помешало бы фактически развернуть ресурсы (которые не находятся в папке макетов) на сайтах с использованием функции, которую вам нужно было бы отключить и повторно активировать функцию – Colin

Смежные вопросы