我目前正在构建一个大型詹金斯作业,我需要在同一阶段和步骤中执行多个 ssh,如下面的代码所示。问题是,每次 jekins 完成第一个 ssh 连接时,它都会结束该阶段,并且其他部分不会运行。
有人有解决办法吗?
这是我的阶段代码:
stage('(02) Export file') {
withCredentials([gitUsernamePassword(credentialsId: gitCredentials, gitToolName: 'Default')]) {
sh '''
ssh user@env << EOF
mkdir /alim1 || true
mkdir /alim2 || true
mkdir /alim3 || true
<< EOF
scp script1.ksh user@env:/alim1
scp script2.ksh user@env:/alim2
scp script3.ksh user@env:/alim3
ssh user@env << EOF
echo "Starting export"
ksh /alim1/script1 || error1=1
ksh /alim2/script2 || error2=1
ksh /alim3/script3 || error3=1
<< EOF;
'''
}
}
编辑: 我更改了此处文档的结尾,现在看起来像这样:
stage('(02) Export file') {
withCredentials([gitUsernamePassword(credentialsId: gitCredentials, gitToolName: 'Default')]) {
sh '''
ssh user@env << EOF
mkdir /alim1 || true;
mkdir /alim2 || true;
mkdir /alim3 || true;
EOF
scp script1.ksh user@env:/alim1
scp script2.ksh user@env:/alim2
scp script3.ksh user@env:/alim3
ssh user@env << EOF
echo "Starting export"
ksh /alim1/script1 || error1=1;
ksh /alim2/script2 || error2=1;
ksh /alim3/script3 || error3=1;
EOF
'''
}
}
我收到此错误:
-ksh[11]: EOF: not found [No such file or directory of this type]
问题的答案很简单。我缺乏有关此处文档的知识,并且我不知道 EOF 必须是该行上唯一的字符,不应该有任何缩进。工作/更正的代码是这个:
stage('(02) Export file') {
withCredentials([gitUsernamePassword(credentialsId: gitCredentials, gitToolName: 'Default')]) {
sh '''
ssh user@env << EOF
mkdir /alim1 || true;
mkdir /alim2 || true;
mkdir /alim3 || true;
EOF
scp script1.ksh user@env:/alim1
scp script2.ksh user@env:/alim2
scp script3.ksh user@env:/alim3
ssh user@env << EOF
echo "Starting export"
ksh /alim1/script1 || error1=1;
ksh /alim2/script2 || error2=1;
ksh /alim3/script3 || error3=1;
EOF
'''
}
}