我有一个持续集成服务器(Jenkins),它构建我的代码(检查编译错误)并运行测试然后将文件部署到远程服务器(不是war文件,而是实际的文件结构)我做的这有一个Jenkins插件允许我通过samba传输文件,它每晚都会这样做。
现在,我需要做的是在远程服务器上运行ant命令。之后,我需要在远程服务器上启动应用程序服务器,通过从命令行运行.bat文件来启动应用程序服务器。
我对如何实现这一点非常无能为力,我知道Jenkins能够运行批处理命令,但是如何让它们在服务器的上下文中运行而不是在构建服务器的上下文中运行?
答案 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)的解决方案:
注意:
答案 2 :(得分:0)
在尝试使用psexec.exe一段时间后,我最终采用了不同的方法。
Psexec.exe和通过网络复制文件有点慢且不稳定,特别是因为我工作的域有一个每月更改密码的策略(打破了构建)。
最后我选择了主/从方法,这种方法更快更稳定。因为我不必使用psexec.exe而不必通过网络复制文件。