在我的公司中,jenkins 配置了一台 Windows 从机和(即将推出)一台 Mac 从机。我们希望 Glassfish 域作为预构建步骤启动,域在构建后停止。
据我了解,我必须在 Windows 上运行“Windows 批处理文件预构建步骤”,在 Mac 上运行“shell 脚本预构建步骤”。
我可以将两者都放在预构建步骤中吗?或者我应该使用其他解决方案(如果是,是哪一个)?
你不能把两者放在同一份工作中。当作业在 Mac slave 上运行时,“windows 批处理”将失败。当作业在 Windows slave 上运行时,“shell”将失败。
你为什么要同时添加两者?我知道您需要相关的预构建步骤,但是您为什么要尝试使该作业通用以在 Mac 或 Windows 上执行?通常运行 Mac slave 服务于特定目的(例如进行无法在 Window 上完成的 Xcode iOS 构建),并且您将该作业限制为仅在 Mac slave 上运行
如果你真的需要能够运行 Windows 或 Mac shell,那么你应该看看 XShell 插件
https://wiki.jenkins-ci.org/display/JENKINS/XShell+Plugin
它允许您在 Windows shell 或 Mac shell 上执行“shell”步骤。该插件将负责调用正确的 shell,甚至会为您进行文件分隔符转换(它将\
用于 Windows 和/
Linux/Mac shell),但您放置的命令必须在两个 shell 中都可以执行(即它不会为您翻译rm
)del
。插件页面提供了一个示例,您可以如何将命令“包装”到批处理和 shell 文件中。