我目前在TFS 2013中有一个CI设置,它执行以下操作
我现在已经设法在服务器上安装Grunt和NodeJS,以便在步骤5-6之间对Javascript进行一些操作。有没有人对如何做到这一点有任何建议?
我已尝试使用后期测试脚本在 src 和 bin / _PublishedWebsites 目录上成功缩小javascript,但这似乎不会持续到部署服务器。事实上,由于Windows文件(argh)上的最大字符限制,_PublishedWebsites路由将构建文件夹置于不可删除状态。
答案 0 :(得分:2)
您应切换到使用Visual Studio 2013的发布管理(也适用于2012)。这允许您参数化您的版本并在多个环境中推送相同的输出。非常可配置,甚至可以确保您所需的工具最终在您部署到的服务器上。支持Puppet,Chef,DSC,并创建自己的。
http://nakedalm.com/installing-release-management-server-tfs-2013/
概述:http://nakedalm.com/building-release-pipeline-release-management-visual-studio-2013/
答案 1 :(得分:0)
我设法通过在用于部署的pubxml文件中添加两个额外步骤来实现此目的。
首先,我添加了一个依赖PowerShell脚本,它运行了NPM安装和grunt任务。
<PipelineDependsOn>
CustomBeforePublish;
$(PipelineDependsOn);
</PipelineDependsOn>
<Target Name="CustomBeforePublish">
<Exec Command="powershell.exe -ExecutionPolicy Unrestricted -file Pre_Deploy_Javascript_Build.ps1 $(ProjectDir)"/>
</Target>
跟着这个。我现在创建了项目中不存在的其他文件。我现在必须确保这些内容已经公布。为此,我又添了一步。
<CopyAllFilesToSingleFolderForMsdeployDependsOn>
CopyMinJSFiles;
$(CopyAllFilesToSingleFolderForMsdeployDependsOn);
</CopyAllFilesToSingleFolderForMsdeployDependsOn >
<Target Name="CopyMinJSFiles">
<ItemGroup>
<_MinJSFiles Include="$(ProjectDir)\App\*.js" />
<FilesForPackagingFromProject Include="%(_MinJSFiles.Identity)">
<DestinationRelativePath>App\%(Filename)%(Extension)</DestinationRelativePath>
</FilesForPackagingFromProject>
</ItemGroup>