TL; DR即使Jenkins在Windows上运行,我也想使用sh
步骤。我不想用bat
一步,除非你能告诉我如何轻松地再现什么,我需要使用bat
在Windows上使用sh步骤
我一直在把一些老詹金斯作业2.X管道脚本来完成。我的一项工作使用“发布通过SSH插件”来:
- 发送文物到远程服务器
- Exec的一组命令的远程服务器
上。例如:
我想在Pipeline Script中复制它,所以我做了以下操作:
stage('Deploy') {
withCredentials([[$class: 'FileBinding', credentialsId: 'bitbucket-key-file', variable: 'SSHKEY']]) {
sh '''
scp -i "$SSHKEY" dsub.tar.gz [email protected]:dsubdeploy
scp -i "$SSHKEY" deployDsubUi.sh [email protected]:dsubdeploy
ssh -i "$SSHKEY" -o StrictHostKeyChecking=no 192.168.220.57 <<- EOF
DEPLOY_DIR=/home/tprmbbuild/dsubdeploy
echo '*** dos2unix using sed'
sed -e 's/\r$//' $DEPLOY_DIR/deployDsubUi.sh > $DEPLOY_DIR/deployDsubUi-new.sh
mv $DEPLOY_DIR/deployDsubUi-new.sh $DEPLOY_DIR/deployDsubUi.sh
chmod 755 $DEPLOY_DIR/deployDsubUi.sh
echo '*** Deploying Dsub UI'
$DEPLOY_DIR/deployDsubUi.sh $DEPLOY_DIR/dsub.tar.gz
EOF'''
}
}
问题是,我执行我的体型时,得到这个堆栈跟踪:
[Pipeline] sh
[E:\Jenkins\jenkins_home\workspace\[email protected]] Running shell script
1 [main] sh 3588 E:\Jenkins\tools\Git_2.10.1\usr\bin\sh.exe: *** fatal error - add_item ("\??\E:\Jenkins\tools\Git_2.10.1", "/", ...) failed, errno 1
Stack trace:
Frame Function Args
000FFFF9BB0 0018005C24E (0018023F612, 0018021CC39, 000FFFF9BB0, 000FFFF8B30)
000FFFF9BB0 001800464B9 (000FFFFABEE, 000FFFF9BB0, 1D2345683BEC046, 00000000000)
000FFFF9BB0 001800464F2 (000FFFF9BB0, 00000000001, 000FFFF9BB0, 4A5C3A455C3F3F5C)
000FFFF9BB0 001800CAA8B (00000000000, 000FFFFCE00, 001800BA558, 1D234568CAFA549)
000FFFFCC00 00180118745 (00000000000, 00000000000, 001800B2C5E, 00000000000)
000FFFFCCC0 00180046AE5 (00000000000, 00000000000, 00000000000, 00000000000)
00000000000 00180045753 (00000000000, 00000000000, 00000000000, 00000000000)
000FFFFFFF0 00180045804 (00000000000, 00000000000, 00000000000, 00000000000)
End of stack trace
这与你有关吗? http://www.tikalk.com/devops/shell-jenkins-windows-slave/ –
输出不显示'“*** dos2unix使用sed”'。它可能在'scp'中失败了,或者它可能在启动shell时失败。如果你可以在每个scp之后加上'echo'命令,那可能会给你一个提示。你也可以尝试运行一个空的shell脚本(只用'echo')来缩小问题的范围。 – blackpen
@blackpen实际上这是我的信念,它是无法产卵的shell,所以没有一个命令有机会运行 – ThaDon