我们正在使用 Jenkins 自动生成和构建 IBM Rhapsody 模型。我们也在使用clearcase。当开发人员交付到特定流时,自动化的 Jenkins 作业会更新构建服务器上的专用快照视图,并且作业会启动 Rhapsody 并打开与该流关联的项目。然后,该作业获取它已启动的 rhapsody 的进程 ID,然后启动我们的生成/构建工具,该工具使用使用进程 ID 构造的连接字符串连接到 rhapsody 实例。Rhapsody 是一个 COM 服务器,它有一个很好的 API,可用于开发自动化工具,我们使用它。
有多个 clearcase ucm 项目。因此,为了加快构建速度,当人们交付他们的工作时,只要交付到不同的流,我们就会启动 Rhapsody 流程并执行构建。因此,有时我们需要并行生成和构建不同的项目。
问题是:当我们在 Windows 命令行执行作业时,这就像一个魅力。当 jenkins 从命令行启动时,它也适用于 Jenkins。我们可以同时为多个项目执行代码生成。但是,当我们将 jenkins 作为 windows 服务器运行时,首先启动的作业可以启动 rhapsody,并且其他工具可以连接到启动的 rhapsody,但是在此作业运行时,如果另一个作业启动,rhspsody 进程会启动,但会立即退出并其他工具无法连接到 rhspsody,因为它已退出。
我们首先设置 OMROOT 环境变量,然后使用参数启动 Rhapsody: -hiddenui -noanimaition -cmd=open
Jenkins作为服务运行,使用域中的用户帐户,这是机器上的管理员,正如我所提到的,这个用户可以直接从命令行和启动的詹金斯执行任意数量的并行作业从命令行(不作为服务运行)
经过几天的尝试,我们找不到原因……有什么建议吗?