经过一整天的弄清楚 - 我有一个解决方案。但是,我担心这只是一个临时解决方案。一旦新的 VSO 构建任务发布,这将容易得多。
这是我所做的:
我首先将最新版本的Node安装到构建服务器上,这似乎加快了速度并消除了一些奇怪的警告。另外 - 我更新到最新版本的构建代理(如何查看本页底部)。检查 Node 是否在路径中并全局安装 bower 和 grunt ( npm install -g bower
and npm install -g grunt-cli
)
然后我在 Visual Studio 在线从头开始使用新的构建模板,正确设置 Git 绑定并添加第一步:NPM 安装(添加步骤 - 选择“NPM 安装”)。将工作目录设置为您的文件夹 .xproj
下一步:添加一个“Grunt build”步骤。将它指向您的Gruntfile.js
+ 设置工作目录到同一目录。我正在运行 grunt 任务build
,因为它带有 yeoman 模板。我进行了修改,因此它将所有内容输出到/wwwroot
文件夹中。
添加构建项目位的“Visual Studio 构建”步骤。添加参数/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation=\"$(build.stagingDirectory)\"
所以,这几乎都是“开箱即用”的。接下来的步骤(打包应用程序+部署它)不是。我怀疑将来我们会有很好的 VSO 构建任务,这将使这很容易做到。我不得不摆弄命令行。然而,事实证明我很容易。如果您从 Visual Studio 设置发布 - 您可以在输出窗口中看到它运行的命令。您想在 2 个命令步骤中重新创建这些命令。
- 为 command 添加命令行步骤
C:\Users\Administrator\.dnx\runtimes\dnx-clr-win-x86.1.0.0-beta6\bin\dnu.cmd
。是的 - 它现在与 DNX 运行时耦合 - 所以这不是最佳的。但是我们需要 DNX 实用程序来打包我们的应用程序 - 因此命令参数:(
publish --out $(build.stagingDirectory) --configuration Release --wwwroot-out "wwwroot" --runtime dnx-clr-win-x86.1.0.0-beta6
再次 - 只是从 VS 的输出窗口复制它)
这将很好地将应用程序打包到$(build.stagingDirectory)
文件夹中。下一步 - 将它放在云端。
- 使用命令添加最后的“命令行”步骤:
C:\Program Files (x86)\IIS\Microsoft Web Deploy V3\msdeploy.exe
和参数-source:IisApp='$(build.stagingDirectory)\wwwroot' -dest:IisApp='--something--',ComputerName='https://--something--.scm.azurewebsites.net/msdeploy.axd',UserName='$--something--',Password='--notsaying--',IncludeAcls='False',AuthType='Basic' -verb:sync -enableLink:contentLibExtension -retryAttempts:2
注意:这假设您已设置发布到网站。转到 Azure 门户 - 转到你的 Azure 网站 - 并设置发布。下载发布配置文件 XML 文件,您将在其中找到这些参数。此外 - 所有参数都写入 Visual Studio 输出窗口(密码除外)。
这现在对我有用:使用新的 Visual Studio Online (VSO) 构建代理持续部署 vNext / ASP.NET 5 Web 应用程序。