启停脚本
#!/bin/sh# author lihao3# ./wison-wpos.sh start 启动# ./wison-wpos.sh stop 停止# ./wison-wpos.sh restart 重启# ./wison-wpos.sh status 状态SERVER_NAME=wison-wposAPP_NAME=wpos-server.jarAPP_HOME=/www/server/wison-wposLOG_PATH=$APP_HOME/logsJVM_OPTS="-XX:+HeapDumpOnOutOfMemoryError -Xms512m -Xmx512m -Xmn256m"if [ "$1" = "" ]; then echo -e "\033[0;31m 未输入操作名 \033[0m \033[0;34m {start|stop|restart|status} \033[0m" exit 1fiif [ "$APP_NAME" = "" ]; then echo -e "\033[0;31m 未输入应用名 \033[0m" exit 1fi# shellcheck disable=SC2112function start() { PID=$(ps -ef | grep java | grep $APP_NAME | grep -v grep | awk '{print $2}') if [ x"$PID" != x"" ]; then echo "$APP_NAME is running..." else export DISPLAY=:0 nohup java $JVM_OPTS -jar $APP_HOME/$APP_NAME > /dev/null 2>&1 & echo "Start $APP_NAME success..." fi}# shellcheck disable=SC2112function stop() { echo "Stop $APP_NAME" PID="" query() { PID=$(ps -ef | grep java | grep $APP_NAME | grep -v grep | awk '{print $2}') } query if [ x"$PID" != x"" ]; then kill -9 $PID echo "$APP_NAME (pid:$PID) exiting..." while [ x"$PID" != x"" ]; do sleep 1 query done echo "$APP_NAME exited." else echo "$APP_NAME already stopped." fi}# shellcheck disable=SC2112function restart() { stop sleep 2 start}# shellcheck disable=SC2112function status() { PID=$(ps -ef | grep java | grep $APP_NAME | grep -v grep | wc -l) if [ $PID != 0 ]; then echo "$APP_NAME is running..." else echo "$APP_NAME is not running..." fi}case $1 instart) start ;;stop) stop ;;restart) restart ;;status) status ;;*) ;;esac
jenkinsfile
- SCP, SSH执行方式
def TARGET_PATH = '/www/server/wison-wpos'def SOURCE_PATH = './wpos-server/target'def SHELL_NAME = 'wison-wpos.sh'def RELEASE_REMOTE_HOST = 'root@10.99.10.154'def TEST_REMOTE_HOST = 'root@10.99.10.122'def RELEASE_SKYWALKING_HOST = '10.99.10.155:11800'def TEST_SKYWALKING_HOST = '10.99.10.123:11800'pipeline { agent any tools { maven 'maven-3.6.3' } stages { stage('gitlabBranch') { steps { echo "current branch is: ${env.BRANCH_NAME}" } } stage('build-test') { when { environment name: 'gitlabBranch', value: 'test' } steps { withEnv(['JENKINS_NODE_COOKIE=dontkillme']) { sh "mvnd -s $MAVEN_GLOBAL_ENV clean package -U -Ptest -DskipTests" sh "scp $SOURCE_PATH/*.jar $TEST_REMOTE_HOST:$TARGET_PATH" sh "scp ./$SHELL_NAME $TEST_REMOTE_HOST:$TARGET_PATH" sh "ssh $TEST_REMOTE_HOST \"sh $TARGET_PATH/$SHELL_NAME\" restart" } } } stage('build-release') { when { environment name: 'gitlabBranch', value: 'release' } steps { withEnv(['JENKINS_NODE_COOKIE=dontkillme']) { configFileProvider([configFile(fileId: 'maven-global-settings', variable: 'MAVEN_GLOBAL_ENV')]) { sh "mvnd -s $MAVEN_GLOBAL_ENV clean package -U -Pprod -DskipTests" sh "scp $SOURCE_PATH/*.jar $RELEASE_REMOTE_HOST:$TARGET_PATH" sh "scp ./$SHELL_NAME $RELEASE_REMOTE_HOST:$TARGET_PATH" sh "ssh $RELEASE_REMOTE_HOST \"sh $TARGET_PATH/$SHELL_NAME\" restart" } } } } }}