代理构建完成后在TeamCity服务器上运行脚本

时间:2016-08-19 16:40:07

标签: teamcity

我们在mac上运行了一个TeamCity服务器,我们有多个代理在mac和windows上运行,可以执行不同类型的构建。

尽管构建本身是不同的(使用msbuild构建xcode / build),但每个配置的末尾都有一堆脚本是相同的。它们涉及将文件复制到特定的网络共享,通知团队成员以及其他一些事情。

如果我可以在相应的构建代理上运行特定于平台的任务,但在此之后让实际服务器运行最终脚本,那将是多么美妙的事情。

这样做的原因是为了避免在bash和批处理文件中写入所有内容(我可以为服务器编写它,并确保它有任何依赖性),但是如果我们想要连接音频/视觉/物理警告构建失败,运行的脚本应该只在服务器上运行(代理上没有扬声器/灯/ nerf加农炮)。

我是否可以轻松设置脚本在服务器上运行,并从构建中传入属性?

这是否需要插件,是否可以对依赖系统执行某些操作,或者我是否需要深入研究REST API并以此方式触发其他配置?

1 个答案:

答案 0 :(得分:1)

我们最终得出的解决方案是使用Meta-runnersPython Runner。这使我们可以使用Team City变量设置跨平台python脚本。它还允许我们在多种配置中使用这些脚本。

如果有人希望自己这样做,如果您仍需要在脚本中执行某些特定于平台的事情,则python中的platform module非常有用。

例如,以下代码允许我们使用已在构建代理上设置的网络共享路径:

if platform.system() == 'Windows':
    network_folder = "//server_pc/builds"
else:
    network_folder = "/Volumes/builds"