【问题标题】:TFS - Run Powershell script against package before DeploymentTFS - 在部署之前对包运行 Powershell 脚本
【发布时间】:2014-12-21 04:32:15
【问题描述】:

我目前在 TFS 2013 中有一个 CI 设置,它执行以下操作

  1. 每次提交到分支时从 Git 拉取代码
  2. 构建解决方案
  3. 针对解决方案运行 N 单元测试
  4. 针对 javascript 运行 Jasmine 前端测试
  5. 通过 WebDeploy 成功部署到所选服务器。

我现在已经设法在服务器上安装了 Grunt 和 NodeJS,以便在步骤 5-6 之间对 Javascript 进行一些操作。有人对如何做到这一点有任何建议吗?

我已尝试后测试脚本以成功缩小 srcbin/_PublishedWebsites 目录上的 javascript,但这似乎不会持续到部署服务器。事实上, _PublishedWebsites 路由将构建文件夹置于不可删除状态,因为 Windows 文件的最大字符数限制 (argh)。

【问题讨论】:

    标签: powershell tfs continuous-integration continuous-deployment


    【解决方案1】:

    您应该切换到使用 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/

    【讨论】:

    • 感谢您的建议!作为一种解决方案,我可能会慢一点尝试这个解决方案,因为我需要先将它安装在某个地方。
    • 我通常将服务器安装在bTFS服务器上。我希望它们在未来被整合
    【解决方案2】:

    我设法通过在用于部署的 pubxml 文件中添加两个额外步骤来实现此功能。

    首先,我添加了一个运行 NPM 安装和 grunt 任务的依赖 powershell 脚本。

    <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>
    

    【讨论】:

      猜你喜欢
      • 2018-01-31
      • 1970-01-01
      • 2017-07-16
      • 2017-12-05
      • 1970-01-01
      • 1970-01-01
      • 2013-03-25
      • 1970-01-01
      • 2017-12-10
      相关资源
      最近更新 更多