1

为项目配置部署过程,并在使用 OctoPack 将 msbuild 的输出打包到 nuget 包时遇到一些问题。已决定获得有关该过程的反馈,可能是我做错了什么。

前提条件:

  • .net 4.6 asp.net 项目,带有 Angular 4 前端和 Angular-cli 作为构建工具
  • TFS 2013(使用 XAML 构建)作为构建机器
  • GIT 作为源代码
  • Octopus 作为部署框架
  • 有几个环境,所以有几个带有转换的 web 配置 asp.net 和 angular-cli/webpack
  • 几个发布配置文件,包括(每个环境一个):
    • 要运行的 PreBuild 事件标记:npm run build

项目结构:

  • web_project
    • \src - 打字稿、html 和 scss 文件
    • \图片
    • \assets - 此文件夹不是项目/GIT 的一部分。它由 angular-cli/webpack 创建,包含编译、缩小和捆绑的 js 代码和 css 文件
    • \其他文件(index.html、web.config 等)

构建过程:

Msbuid 编译 C# 代码,然后执行发布命令:编译 JS 代码并将所有内容复制到自定义输出文件夹中。

要运行构建和生成应用程序,我运行以下命令(本地或 TFS 服务器上):

MSBuild solution.sln /t:Build /p:DeployOnBuild=true /p:Configuration=development /p:PublishProfile="development"

此命令的输出包含我需要的所有内容(包括 Assets 文件夹):我可以将其复制到 IIS 中。

现在,我想集成 Octopack。我已经安装了 Octopack nuget 包并添加了附加参数 /p:RunOctoPack=true:

MSBuild solution.sln /t:Build /p:DeployOnBuild=true /p:Configuration=development /p:PublishProfile="development" /p:RunOctoPack=true

Octopack 创建一个 nuget 包,但它没有 Assets 文件夹。根据文档,Octopack 从 \bin 文件夹中获取所有内容,但 Assets 文件夹存在于 obj\Development 中。这不是解决方案的一部分,每次我运行 npm build 任务时都会重新创建这个文件夹。

现在,问题:

  1. 流程工作流程看起来好吗?
  2. 通过 msbuild 发布是唯一可能的选择吗?有没有其他方法可以让 msbuild 编译 C#、运行自定义 cmd/powershell 文件(运行 npm build)和转换 web 配置?
  3. 如何将其他文件夹包含到 Octopack 中(在我的例子中:带有已编译 JS 的资产)?

感谢您的反馈

4

1 回答 1

0

您可以通过创建 nuspec 文件告诉 Octopack 添加其他文件。

https://octopus.com/docs/packaging-applications/creating-packages/nuget-packages/using-octopack#UsingOctoPack-IncludingadditionalfilesusingaNuSpecfile(.nuspec)

在那里,您可以添加要包含在包中的文件和目录的路径。

因此,在您的 CI 服务器上,您希望在 MS 构建过程之前进行客户端捆绑,以便文件存在。

于 2018-01-08T12:14:28.580 回答