【问题标题】:Continuous deployment and running with TeamCiy使用 TeamCiy 持续部署和运行
【发布时间】:2015-09-01 07:47:41
【问题描述】:

我有一个内置到可执行文件中的项目。某种服务器。以及作为 CI 的 Team City。我将 Team City 配置为自动构建我的源代码。

我想完成以下步骤:

  1. 当有人提交到 repo 时,源由 Team City 构建。 (完成)
  2. 已构建的二进制文件被复制到某个位置。 (在运行 Team City 服务器的同一台机器上)
  3. 我的可执行文件使用一些参数启动。

我设法通过创建单独的构建配置来配置前两个步骤,以便使用 Artifacts 依赖项进行部署。但我不知道如何启动我的可执行文件。如果我使用命令行构建步骤执行此操作,则构建代理会挂起,直到应用程序被终止。而我需要相反 - 由 Build Agent 启动的应用程序应该可以运行很长时间,而 Build Agent 本身会在运行我的 exe 后立即完成。

可以这样做还是我在滥用 CI?

我还需要能够重新部署:

  1. 杀死以前运行的应用程序(通过进程映像 f.e.)
  2. 从常规部署开始执行所有步骤。

搜索“持续部署”只会为基于 Web 的部署提供结果,这不是我的情况。

【问题讨论】:

  • 您知道 TeamCity 代理进程在哪个用户下运行吗?可能是它没有启动应用程序的权限,正在等待交互授权什么的。
  • 启动的应用程序运行良好。问题在于构建代理挂起。只有当我终止启动的应用程序时,构建代理才会完成。
  • 您实际用于启动应用程序的命令是什么?

标签: .net continuous-integration teamcity exe continuous-deployment


【解决方案1】:

为了实现您想要的,您可以尝试使用 PowerShell 构建步骤并使用以下脚本。

Start-Process myprogram.exe

这将向您返回一个对象,但不会阻塞线程,也不会导致您的代理等待进程结束。

可以在 MSDN 上找到更多文档 - Start-Process Documentation

希望对你有帮助

【讨论】:

  • 所以,我找到了答案。我正在启动我的应用程序,例如不正确的 exe。当我使用start 命令时,它就像一个魅力。我将您的答案标记为正确,因为此解决方案也应该有效(尽管没有测试自己)
【解决方案2】:

我不是 Windows 编程方面的专家,但恕我直言,您需要一种能够完成所有工作的“部署脚本”。在 TC 端配置所有内容可能很危险(当 TC 关闭时,您的管道会卡住)。

如何创建几个执行您在 2. 和 3. 中描述的脚本并在具有工件依赖项的单独构建配置中运行它们(如您所述)?在这种情况下,TC 设置更简单,您可以将此脚本保存在一些 VCS 存储库中并轻松更新它们,以便 TC 使用最新版本。如果 TC 出现故障,您只需运行与 TC 相同的脚本即可手动部署。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-08
    • 2018-10-24
    • 2021-04-19
    • 2015-01-28
    • 2016-01-12
    • 1970-01-01
    • 2011-03-08
    相关资源
    最近更新 更多