我正在尝试使用 SSHCommand 使用 Pipeline 执行多个命令,但我无法执行我想要的操作:
pipeline {
agent any
stages {
stage('Generate File') {
steps {
script {
def remote = [:]
remote.name = 'test'
remote.host = 'xxxxxxx'
remote.user = 'xxxxxxx'
remote.port = xxxxxxxx
remote.password = 'xxxxxxxx'
remote.allowAnyHosts = true
sshCommand remote: remote, command: "cd /var/my/directory"
sshCommand remote: remote, command: "touch pipeline"
}
}
}
}
}
但是文件“pipeline”是在“/home/myUser”中创建的,而不是在/var/my/directory中创建的
我该怎么做?我需要使用“&&”?
这有效:
sshCommand remote: remote, command: "cd /var/my/directory && touch MyFile"
但我不喜欢“单行”
谢谢,
基本上发生的是,每次调用 sshCommand 都会启动自己的 shell(非常类似于您在计算机上打开两个不同的终端)。命令执行后,shell 再次关闭。
所以你的代码是这样的:
解决这个问题的一种方法是单个命令
touch /var/my/directory/pipeline
或者像你说的&&
。如果你想把它放在多行中,你可以使用\
。
sshCommand remote: remote, command: "cd /var/my/directory \
&& touch pipeline"
您也可以使用这种方式进行多行
sshCommand remote: remote, command: '''
cd /var/my/directory
touch pipeline
'''