使用 jenkins 在 Windows 远程环境 (VM) 上触发脚本

Posted

技术标签:

【中文标题】使用 jenkins 在 Windows 远程环境 (VM) 上触发脚本【英文标题】:Trigger a script on windows remote environment (VM) using jenkins 【发布时间】:2021-12-28 04:16:45 【问题描述】:

我有 2 台 Windows 服务器,一台服务器(开发)上安装了 Jenkins,并且两台服务器都安装了 OPEN SSH。 我想通过 Jenkins 在我的测试服务器上触发脚本(批处理脚本)。我尝试编写管道,但它显示错误。

我参考了https://github.com/jenkinsci/ssh-steps-plugin 并编写了如下所示的管道。

node 
def remote = [http://inb*****.com]
remote.name = 'inb***'
remote.host = 'http://inb*****.com'
remote.user = 'jenkinsSSH'
remote.password = '********34'
remote.allowAnyHosts = true
stage('Remote SSH') 
 writeFile file: 'abc.bat', text: 'ls -lrt'
 sshScript remote: remote, script: "abc.bat"


我得到的输出如下,

Running in Durability level: MAX_SURVIVABILITY
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
WorkflowScript: 12: unexpected token:  @ line 12, column 1.

^

1 error

at org.codehaus.groovy.control.ErrorCollector.failIfErrors(ErrorCollector.java:310)
at org.codehaus.groovy.control.ErrorCollector.addFatalError(ErrorCollector.java:150)
at org.codehaus.groovy.control.ErrorCollector.addError(ErrorCollector.java:120)
at org.codehaus.groovy.control.ErrorCollector.addError(ErrorCollector.java:132)
at org.codehaus.groovy.control.SourceUnit.addError(SourceUnit.java:350)
at org.codehaus.groovy.antlr.AntlrParserPlugin.transformCSTIntoAST(AntlrParserPlugin.java:144)
at org.codehaus.groovy.antlr.AntlrParserPlugin.parseCST(AntlrParserPlugin.java:110)
at org.codehaus.groovy.control.SourceUnit.parse(SourceUnit.java:234)
at org.codehaus.groovy.control.CompilationUnit$1.call(CompilationUnit.java:168)
at org.codehaus.groovy.control.CompilationUnit.applyToSourceUnits(CompilationUnit.java:943)
at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:605)
at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:581)
at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:558)
at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:298)
at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:268)
at groovy.lang.GroovyShell.parseClass(GroovyShell.java:688)
at groovy.lang.GroovyShell.parse(GroovyShell.java:700)
at org.jenkinsci.plugins.workflow.cps.CpsGroovyShell.doParse(CpsGroovyShell.java:142)
at org.jenkinsci.plugins.workflow.cps.CpsGroovyShell.reparse(CpsGroovyShell.java:127)
at org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.parseScript(CpsFlowExecution.java:571)
at org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.start(CpsFlowExecution.java:523)
at org.jenkinsci.plugins.workflow.job.WorkflowRun.run(WorkflowRun.java:337)
at hudson.model.ResourceController.execute(ResourceController.java:100)
at hudson.model.Executor.run(Executor.java:433)
Finished: FAILURE

我已经编写了一个简单的批处理文件——“echo hello”,并将其保存为 abc.bat 在测试服务器中。 这就是我卡住的地方,如果有另一种方法可以通过 Jenkins 在测试服务器上运行脚本,那么也请告诉我这将有很大帮助。

【问题讨论】:

【参考方案1】:

你在这一行有一个错误:

def remote = [http://inb*****.com]

应该是

def remote = [:]

创建一个空地图。

【讨论】:

以上是关于使用 jenkins 在 Windows 远程环境 (VM) 上触发脚本的主要内容,如果未能解决你的问题,请参考以下文章

在windows上使用jenkins远程执行linux shell命令

Jenkins 流水线远程部署 .NET Core/Framework 到 IIS

Tomcat9 在Windows中配置允许远程访问

jenkins轻松玩玩远程windows的进程

Jenkins使用jenkins-cli.jar进行远程调用时出现“ERROR: No such job 'test'”的问题解决(Windows)

一个jenkins远程操作另一个jenkins进行构建