如何在 Jenkins 管道上使用环境参数运行远程服务器 shell 脚本

如何在 Jenkins 管道上使用环境参数运行远程服务器 shell 脚本

我正在尝试使用该命令在 jenkins 脚本化管道中的远程服务器上运行 shell 脚本sshScript remote: remote, script:。这行代码目前看起来像这样:

sshScript remote: remote, script: './bash.sh' "$env.gitTag" "$env.Version"

但是,它一直说参数为空,抛出错误。我已经尝试了一切,但找不到答案。我在抛出参数之前回显这些参数,并且它们包含我期望的字符串。

15:56:35  WARNING: Unknown parameter(s) found for class type 'org.jenkinsci.plugins.sshsteps.steps.CommandStep': script
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] }
[Pipeline] // timestamps
[Pipeline] End of Pipeline
java.lang.IllegalArgumentException: command is null or empty
    at org.jenkinsci.plugins.sshsteps.steps.CommandStep$Execution.run(CommandStep.java:69)
    at org.jenkinsci.plugins.sshsteps.util.SSHStepExecution.lambda$start$0(SSHStepExecution.java:84)
    at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at java.base/java.lang.Thread.run(Thread.java:829)
Finished: FAILURE

这些是最后发布的错误。

答案1

我认为你有一个引用问题。

sshScript remote: remote, script: "./bash.sh $env.gitTag $env.Version"

答案2

我不确定我是否正确理解了这个问题。这是我的想法:

sshd_config如果环境变量在远程服务器上显式配置,则仅通过 ssh 发送到远程服务器。参见AcceptEnv中的参数man sshd_config

默认情况下通常设置如下:

AcceptEnv LANG LC_*

这意味着仅将“语言”环境设置为远程主机。

在你的情况下,你必须配置远程服务器/etc/ssh/sshd_config接受变量。

相关内容