2016-08-19 37 views
0

我们有一个在mac上运行的TeamCity服务器,我们有多个代理运行在mac和windows上,执行不同类型的构建。代理构建完成后在TeamCity服务器上运行脚本

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

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

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

任何想法,我可以轻松地设置脚本运行在服务器本身,并从构建传递属性?

这是否需要一个插件,我可以使用依赖系统做些什么,还是需要深入研究REST API并触发其他配置?

回答

0

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

如果有人想自己做这件事,那么Python中的platform module是非常有用的,如果你仍然需要在你的脚本中做一些平台特定的事情。

例如下面的代码可以让我们给我们的生成代理使用网络共享路径已设置:

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