我们在mac上运行了一个TeamCity服务器,我们有多个代理在mac和windows上运行,可以执行不同类型的构建。
尽管构建本身是不同的(使用msbuild构建xcode / build),但每个配置的末尾都有一堆脚本是相同的。它们涉及将文件复制到特定的网络共享,通知团队成员以及其他一些事情。
如果我可以在相应的构建代理上运行特定于平台的任务,但在此之后让实际服务器运行最终脚本,那将是多么美妙的事情。
这样做的原因是为了避免在bash和批处理文件中写入所有内容(我可以为服务器编写它,并确保它有任何依赖性),但是如果我们想要连接音频/视觉/物理警告构建失败,运行的脚本应该只在服务器上运行(代理上没有扬声器/灯/ nerf加农炮)。
我是否可以轻松设置脚本在服务器上运行,并从构建中传入属性?
这是否需要插件,是否可以对依赖系统执行某些操作,或者我是否需要深入研究REST API并以此方式触发其他配置?
答案 0 :(得分:1)
我们最终得出的解决方案是使用Meta-runners和Python Runner。这使我们可以使用Team City变量设置跨平台python脚本。它还允许我们在多种配置中使用这些脚本。
如果有人希望自己这样做,如果您仍需要在脚本中执行某些特定于平台的事情,则python中的platform module非常有用。
例如,以下代码允许我们使用已在构建代理上设置的网络共享路径:
if platform.system() == 'Windows':
network_folder = "//server_pc/builds"
else:
network_folder = "/Volumes/builds"