問題:
sshPublisher
を使用した展開の一部としてbashスクリプトを実行していますビルドステップ。スクリプトの一部は、
netstat
を使用してプロセスIDを見つけることです(および
grep
/
awk
)。 VMにログオンしてスクリプトを手動で実行するとプロセスが強制終了されますが、Jenkinsデプロイジョブでは実行されません
Jenkinsサーバー(VM1):
stage('deploy'){
sshPublisher(publishers: [sshPublisherDesc(configName: 'fdpdeploy', transfers: [sshTransfer(excludes: '', execCommand: './deploy.sh', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: 'target', sourceFiles: 'target/fdp-0.0.1-SNAPSHOT.war')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
}
VM2: これはスクリプト
deploy.sh
です
#!/bin/bash
processId=$(sudo netstat -plten | grep 9030 | awk {'print $9}' | awk -F '/' {'print $1'})
echo $processId
kill -9 $processId
sleep 5
echo 'Starting FDP app'
nohup java -jar /data/fdp-0.0.1-SNAPSHOT.war &> /data/logs/FDPBizApp.log &
exit 0
fi
コメントで投稿した出力から、これは問題です。
オプション1-visudoソリューション(これはOPからの解決策です):
visudo
を使用するsudoers
を編集するには ファイルし、requiretty
をコメントアウトします エントリPublish Over SSHプラグインの機能リストには次の項目があります。
これを有効にするには、
usePty: true
を追加しますsshTransfer
へ サイト運営者のブロック。あなたのJenkinsfile
ステップは次のようになります。既存の手順からの唯一の変更は、
, usePty: true
を追加することですsourceFiles:
の後