【问题标题】:Automated deployment options for SSRSSSRS 的自动部署选项
【发布时间】:2014-06-02 19:54:29
【问题描述】:

我的任务是研究自动化 SSRS 2012 报告的部署过程的方法。有什么好的工具吗?我正在考虑类似按下按钮并部署报告的方式。

谢谢!

【问题讨论】:

  • 您可以在 Visual Studio (SSDT) 中部署报表,其优点是能够使用解决方案/项目配置部署到多个目标环境(例如 Dev、UAT)。这可以通过简单的右键单击“部署”操作来完成。您能解释一下为什么要寻找其他选择吗?
  • 我正在尽量减少操作人员部署报告所需要做的事情。我们的组织不希望开发人员部署到生产服务器,我希望最大限度地减少部署错误的机会。

标签: reporting-services ssrs-2012


【解决方案1】:

为了部署我们的 SSRS 报告,我们使用了这个可爱的 powershell 项目:

https://github.com/timabell/ssrs-powershell-deploy

用法:

.\Deploy-SSRSProject.ps1 -path YourReportsProject.rptproj -configuration Release -verbose

or you can use the alternate parameter set:

.\Deploy-SSRSProject\Deploy-SSRSProject.ps1 -path .\AFS.Reports.rptproj -ServerUrl http://localhost/Reportserver -Folder MyReports -DataSourceFolder "MyReports/Data Sources" -DataSetFolder "MyReports/Datasets" -verbose

完整的部署故事(对我们而言):

  • ssrs-powershell-deploy 脚本、.rptproj、.rds、.rdl 文件都由我们的构建服务器打包到一个 nuget 包中。
  • Octopus Deploy 在我们的 SSRS 服务器上提取 nuget 包并调用 Deploy-SSRSProject.ps1

【讨论】:

  • 这非常有帮助 - 谢谢。您是否注意到通过这种方法部署和通过 VS 部署之间的速度差异?我们有一个包含大约 50 个数据集和超过 175 个报告的解决方案。通过 VS 部署大约需要 5-10 分钟 - 使用此脚本将近一个小时。没什么大不了的 - 我只是在晚上安排 Octopus 部署,但只是想知道你是否也看到了。
  • 我很高兴它有帮助!不,我没有注意到这一点。不过,我们没有那么多的报告(大约 20 个)。
  • 嗯,你完全得到了我的支持 :-) 很高兴你发现它有用。听说你有额外的层很有趣,我自己还没有机会使用章鱼。
  • @edgesrazor 确实继续并在项目的问题跟踪器上提出了一个错误,没有承诺任何事情,但最好整理此类信息。我从来没有在没有脚本的情况下部署过任何东西,所以我不知道其中的区别。
  • 这很可能是由于 Get-Content。尝试将 $RawDefinition = Get-Content -Encoding Byte -Path $RsdPath 替换为 $RawDefinition = [System.IO.File]::ReadAllBytes($RsdPath)。
【解决方案2】:

Visual Studio 部署

Visual Studio 实际上非常擅长自动部署。我已经用过很多次了,效果很好。您需要为报表服务器上的每个文件夹将解决方案拆分为单独的项目,然后配置每个项目和部署环境需要一些时间。但是在最初的时间投资之后,它会产生奇迹,当您添加一个新项目时,您可以简单地复制现有项目的部署设置。

MSDN 文章:Set Deployment Properties (Reporting Services)

Rs.exe 实用程序

您也可以使用 SSRS 附带的 Rs.exe 实用程序。它是用于自动部署和管理的命令行实用程序。我没有亲自使用过这个,但我知道它。据我了解,还有一些第三方实用程序利用 Rs.exe 来自动化报告部署,但我没有使用过任何一种,所以我不能推荐任何一种。

MSDN 上的更多信息:RS.exe Utility (SSRS)


我确信您还可以获得其他第三方工具,但我从未研究过它们。我一直发现 Visual Studio 部署功能足以满足我的需求。

【讨论】:

    【解决方案3】:

    我已经使用位于以下位置的 devenv 完成了它: C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE。 ... 10.0 文件夹基于版本号。你的 Visual Studio,所以我只使用了这个版本,所以不能保证其他任何东西。如果您查看帮助/?命令行开关,您可以看到有构建和/或部署解决方案的选项。 简而言之,我使用了:devenv {solutionfile} /Deploy {configuration} /Project {projectname}

    我没有使用任何部署软件,但我知道如何在 C#.NET 中编写代码,因此熟悉 System.IO 和 System.Xml 名称空间是值得的。

    根据要求部署在过去 2 周 sprint 中已修改的任何文件(如报告、数据集或数据源)。

    所以基本上我的 .net 代码的工作方式如下(注意:您可能必须首先考虑您对解决方案和项目文件如何工作的了解程度,以及您是否拥有多个平台 - 一个面向初学者的平台是一组不同的项目构建和部署设置):

    1. 逐行读取 sln 文件以获取准备好构建/部署的特定平台的项目列表,为简单起见,我的代码假设只有一个平台并且所有项目都将被部署
    2. 来自 1 的列表为我提供了 subproject\subproject.rptproj 设置,我可以在其中打破反斜杠以获取子文件夹名称,我可以从中迭代项目文件夹中的所有文件并检查每个文件的 LastWritten 日期时间戳文件以确定需要部署的文件。
    3. 我备份了整个文件(声明和内容)
    4. 如果文件未更改,我会使用 xml 即时编辑项目文件并删除所有不需要部署的文件(ProjectItem)
    5. 如果更改了数据集或数据源文件,那么我还将编辑项目文件的相应配置部分并相应地修改特定配置部分
    6. 使用命令行参数运行我的构建解决方案流程,即 devenv(仅供参考:我在此步骤中没有遇到任何 .NET 异常)
    7. 恢复我的项目文件

    如果您的 SSRS 解决方案配置正确,并且运行 .net 命令行解决方案的人员有权部署所有解决方案,则一切正常。很容易将我的命令行解决方案源代码分享给我团队中的任何其他人运行,以避免在贵公司采用此类限制时将 exe 列入白名单。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多