从jenkins在远程服务器(windows)上运行批处理脚本

时间:2014-03-21 08:21:26

标签: windows batch-file deployment ant jenkins

我有一个持续集成服务器(Jenkins),它构建我的代码(检查编译错误)并运行测试然后将文件部署到远程服务器(不是war文件,而是实际的文件结构)我做的这有一个Jenkins插件允许我通过samba传输文件,它每晚都会这样做。

现在,我需要做的是在远程服务器上运行ant命令。之后,我需要在远程服务器上启动应用程序服务器,通过从命令行运行.bat文件来启动应用程序服务器。

我对如何实现这一点非常无能为力,我知道Jenkins能够运行批处理命令,但是如何让它们在服务器的上下文中运行而不是在构建服务器的上下文中运行?

3 个答案:

答案 0 :(得分:24)

如果Windows上的Jenkins(远程在* nix上)使用plink.exe(实际上是命令行PuTTy

如果Windows上的Jenkins(远程登录Window)使用psexec.exe

如果Jenix在* nix上,远程在* nix上,请使用ssh

如果Jenkins在* nix上,远程在Windows上,(更新2015-01)Ansible http://docs.ansible.com/intro_windows.html支持从unix / linux机器调用Windows命令,例如powershell,https://github.com/ansible/ansible-examples/blob/master/windows/run-powershell.yml

告诉我涉及哪些操作系统(Jenkins和遥控器),我会进一步闪现。

编辑:
psexec.exe的下载页面列出了所有命令行选项。您将需要以下内容:

psexec \\remotecomputername -u remoteusername -p remotepassword cmd /c <your commands here>
<your commands here>替换为实际命令,就像从命令提示符执行它们一样。

请注意,psexec首先需要安装服务,并且需要提升的命令提示符/管理员远程凭据才能执行此操作。
此外,您需要运行psexec -accepteula一次以接受EULA提示。

答案 1 :(得分:2)

按照上面的Slav的回答,这是一个更简单的Jenkins(* nix)到远程(windows)的解决方案:

  1. 在远程窗口上安装SSH服务器(MobaSSH home edition对我来说效果很好)
  2. 确保Jenkins机器上的Jenkins用户具有所需的认证,以便与您的遥控器建立SSH连接(您只需打开一个终端并将ssh连接到您的遥控器一次,然后接受认证。确保它已保存为詹金斯用户)。
  3. 您现在可以在Jenkins作业中添加一个执行shell构建阶段,该阶段可以通过SSH连接到远程Windows机器。
  4. 注意:

    1. 建立的连接可能需要一些额外的工作 - 您可能需要设置Windows环境变量或映射网络驱动程序,以便执行的命令或批处理文件在Windows计算机上正常工作。
    2. 如果您希望运行与GUI相关的操作,则此解决方案可能不相关(在我运行需要GUI操作的自动化测试之后)。
    3. 使用Jenkins SSH插件是一个问题,如here所示。

答案 2 :(得分:0)

在尝试使用psexec.exe一段时间后,我最终采用了不同的方法。

Psexec.exe和通过网络复制文件有点慢且不稳定,特别是因为我工作的域有一个每月更改密码的策略(打破了构建)。

最后我选择了主/从方法,这种方法更快更稳定。因为我不必使用psexec.exe而不必通过网络复制文件。