0

Я строю настроенный для развертывания отчетов мой SSRS через Octopus Deploy, я узнал, что один Octopus Library, и я работаю над этим, но у меня были некоторые проблемы:Опубликовать SSRS на Octopus

1º - --- Ошибка сообщения: (Путь в порядке, но он поддерживает одно и то же предупреждение) ПРЕДУПРЕЖДЕНИЕ: Не удается найти источник данных. Продажи драйверов в/Продажи Драйверы/Источники данных

2º ---- Метод не существует Ошибка вызова метода из-за того, что [Microsoft.PowerShell.Commands.NewWebserviceProxy.AutogeneratedTypes.WebServiceProxy3er_ReportService2005_asmx_wsdl.ReportingService2005] не содержит метода с именем LoadReportDefinition.

Функция PowerShell из шаблона \ библиотеки, которая бросает ошибку можно было увидеть ниже:

#region Update-ReportParamters() 
Function Update-ReportParameters($ReportFile) 
{ 
    # declare local variables 
    $ReportParameters = @(); 

    # necessary so that when attempting to use the report execution service, it doesn't puke on you when it can't find the data source 
    $ReportData = (Remove-SharedReferences -ReportFile $ReportFile) 

    # get just the report name 
    $ReportName = $ReportFile.SubString($ReportFile.LastIndexOf("\") + 1) 
    $ReportName = $ReportName.SubString(0, $ReportName.IndexOf(".")) 

    # create warnings object 
    $ReportExecutionWarnings = $null 

    # load the report definition 
    Write-Host "*********************************************" 

    #Write-Host $ReportData 
    #(Remove-SharedReferences -ReportFile $ReportFile) 

    #Write-Host $ReportExecutionWarnings 

    $ExecutionInfo = $ReportExecutionProxy.LoadReportDefinition($ReportData, [ref] $ReportExecutionWarnings); 

    # loop through the report execution parameters 
    foreach($Parameter in $ExecutionInfo.Parameters) 
    { 
     # create new item parameter object 
     $ItemParameter = New-Object "$ReportServerProxyNamespace.ItemParameter"; 

     # fill in the properties except valid values, that one needs special processing 
     Copy-ObjectProperties -SourceObject $Parameter -TargetObject $ItemParameter; 

     # fill in the valid values 
     $ItemParameter.ValidValues = Convert-ValidValues -SourceValidValues $Parameter.ValidValues; 

     # add to list 
     $ReportParameters += $ItemParameter; 
    } 

    # force the parameters to update 
    Write-Host "Updating report parameters for $ReportFolder/$ReportName" 
    if ($IsReportService2005) { 
     $ReportServerProxy.SetReportParameters("$ReportFolder/$ReportName", $ReportParameters); 
    } 
    elseif ($IsReportService2010) { 
     $ReportServerProxy.SetItemParameters("$ReportFolder/$ReportName", $ReportParameters); 
    } 
    else { Write-Warning 'Report Service Unknown in Update-ReportParameters method. Use ReportService2005 or ReportService2010.' } 
} 

Каждый знает, как я мог бы разобраться?

ответ

0

Я решил аналогичную проблему, но принял несколько иной подход. Вместо использования powershell и octopus я использовал полезный инструмент с открытым исходным кодом RSBuild для развертывания отчетов. Достаточно легко связать исполняемый файл rsbuild.exe (он крошечный) и deploy.config вместе с вашими отчетами внутри пакета осьминога. Затем вы можете использовать функцию замены octopus для перезаписи файла конфигурации и функции Powershell для выполнения исполняемого файла. Это также имеет то преимущество, что вы можете легко развертывать без осьминога, конфигурация для источников данных и отчетов является декларативной в XML, а не процедурной в Powershell, и умения вашего сценария развертывания могут жить вместе с вашими отчетами, а не быть похороненными в Octopus.

Так что мой конфиг выглядит как:

<?xml version="1.0" encoding="utf-8" ?> 
<Settings> 
    <Globals> 
     <Global Name="CollapsedHeight">0.5in</Global> 
    </Globals> 
    <ReportServers> 
     <ReportServer Name="RS1" Protocol="http" Host="${ReportServer}" Path="${ReportServerPath}" Timeout="30" /> 
    </ReportServers> 
    <DataSources> 
     <DataSource Name="Source1" Publish="true" Overwrite="true" TargetFolder="Data Sources" ReportServer="RS1"> 
      <ConnectionString>data source=${ReportServer};initial catalog=${DatabaseName}</ConnectionString> 
      <CredentialRetrieval>Store</CredentialRetrieval> 
      <WindowsCredentials>False</WindowsCredentials> 
      <UserName>${RepotrUser}</UserName> 
      <Password>${ReportsPassword}</Password> 
     </DataSource> 
    </DataSources> 
    <Reports> 
     <ReportGroup Name="Details" DataSourceName="Source1" TargetFolder="Reports" 
      ReportServer="RS1" CacheTime="10080"> 
      <Report Name="BusinessReportABC"> 
       <FilePath>reports\BusinessReportABC.rdl</FilePath> 
      </Report> 
      <!--More reports here--> 
     </ReportGroup> 
    </Reports> 
</Settings> 

Мои развернутые octopacked артефакты содержат RSBuild.Core.dll, RSBuild.exe, deploy.config и отчеты файлы

Тогда я просто позвонить исполняемый файл с использованием powershell:

PS> rsbuild deploy.config 
+0

Спасибо за ваш ответ @alastairtree. Это определенно похоже на хороший подход. Я действительно нашел ответ на мою проблему выше. Использовал неправильный URL-адрес прокси-сервера ReportExecution, как указано [здесь] (https://github.com/OctopusDeploy/Library/issues/261). Думаю, использование Шага Octopus Step похоже на использование RSBuild. – LRBuffone

+0

Привет @alastairtree, я получаю _ [Настройки]: у системы конфигурации не было инициализации. У этой проблемы была проблема при использовании RSBuild, также кажется, что это мертвые проекты ... – Borik

+0

@borik no Я этого не делал. Вы проверили, что вы заменяете все переменные шаблона $ {XYZ} в примере? Возможно, попробуйте просто развернуть один отчет? Это может показаться мертвым проектом, но для меня это просто работает, может быть, оно не «мертво», а «сделано». – alastairtree

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

  • Нет связанных вопросов^_^