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