启停脚本

  1. #!/bin/sh
  2. # author lihao3
  3. # ./wison-wpos.sh start 启动
  4. # ./wison-wpos.sh stop 停止
  5. # ./wison-wpos.sh restart 重启
  6. # ./wison-wpos.sh status 状态
  7. SERVER_NAME=wison-wpos
  8. APP_NAME=wpos-server.jar
  9. APP_HOME=/www/server/wison-wpos
  10. LOG_PATH=$APP_HOME/logs
  11. JVM_OPTS="-XX:+HeapDumpOnOutOfMemoryError -Xms512m -Xmx512m -Xmn256m"
  12. if [ "$1" = "" ]; then
  13. echo -e "\033[0;31m 未输入操作名 \033[0m \033[0;34m {start|stop|restart|status} \033[0m"
  14. exit 1
  15. fi
  16. if [ "$APP_NAME" = "" ]; then
  17. echo -e "\033[0;31m 未输入应用名 \033[0m"
  18. exit 1
  19. fi
  20. # shellcheck disable=SC2112
  21. function start() {
  22. PID=$(ps -ef | grep java | grep $APP_NAME | grep -v grep | awk '{print $2}')
  23. if [ x"$PID" != x"" ]; then
  24. echo "$APP_NAME is running..."
  25. else
  26. export DISPLAY=:0
  27. nohup java $JVM_OPTS -jar $APP_HOME/$APP_NAME > /dev/null 2>&1 &
  28. echo "Start $APP_NAME success..."
  29. fi
  30. }
  31. # shellcheck disable=SC2112
  32. function stop() {
  33. echo "Stop $APP_NAME"
  34. PID=""
  35. query() {
  36. PID=$(ps -ef | grep java | grep $APP_NAME | grep -v grep | awk '{print $2}')
  37. }
  38. query
  39. if [ x"$PID" != x"" ]; then
  40. kill -9 $PID
  41. echo "$APP_NAME (pid:$PID) exiting..."
  42. while [ x"$PID" != x"" ]; do
  43. sleep 1
  44. query
  45. done
  46. echo "$APP_NAME exited."
  47. else
  48. echo "$APP_NAME already stopped."
  49. fi
  50. }
  51. # shellcheck disable=SC2112
  52. function restart() {
  53. stop
  54. sleep 2
  55. start
  56. }
  57. # shellcheck disable=SC2112
  58. function status() {
  59. PID=$(ps -ef | grep java | grep $APP_NAME | grep -v grep | wc -l)
  60. if [ $PID != 0 ]; then
  61. echo "$APP_NAME is running..."
  62. else
  63. echo "$APP_NAME is not running..."
  64. fi
  65. }
  66. case $1 in
  67. start)
  68. start
  69. ;;
  70. stop)
  71. stop
  72. ;;
  73. restart)
  74. restart
  75. ;;
  76. status)
  77. status
  78. ;;
  79. *) ;;
  80. esac

jenkinsfile

  1. SCP, SSH执行方式
  1. def TARGET_PATH = '/www/server/wison-wpos'
  2. def SOURCE_PATH = './wpos-server/target'
  3. def SHELL_NAME = 'wison-wpos.sh'
  4. def RELEASE_REMOTE_HOST = 'root@10.99.10.154'
  5. def TEST_REMOTE_HOST = 'root@10.99.10.122'
  6. def RELEASE_SKYWALKING_HOST = '10.99.10.155:11800'
  7. def TEST_SKYWALKING_HOST = '10.99.10.123:11800'
  8. pipeline {
  9. agent any
  10. tools {
  11. maven 'maven-3.6.3'
  12. }
  13. stages {
  14. stage('gitlabBranch') {
  15. steps {
  16. echo "current branch is: ${env.BRANCH_NAME}"
  17. }
  18. }
  19. stage('build-test') {
  20. when {
  21. environment name: 'gitlabBranch', value: 'test'
  22. }
  23. steps {
  24. withEnv(['JENKINS_NODE_COOKIE=dontkillme']) {
  25. sh "mvnd -s $MAVEN_GLOBAL_ENV clean package -U -Ptest -DskipTests"
  26. sh "scp $SOURCE_PATH/*.jar $TEST_REMOTE_HOST:$TARGET_PATH"
  27. sh "scp ./$SHELL_NAME $TEST_REMOTE_HOST:$TARGET_PATH"
  28. sh "ssh $TEST_REMOTE_HOST \"sh $TARGET_PATH/$SHELL_NAME\" restart"
  29. }
  30. }
  31. }
  32. stage('build-release') {
  33. when {
  34. environment name: 'gitlabBranch', value: 'release'
  35. }
  36. steps {
  37. withEnv(['JENKINS_NODE_COOKIE=dontkillme']) {
  38. configFileProvider([configFile(fileId: 'maven-global-settings', variable: 'MAVEN_GLOBAL_ENV')]) {
  39. sh "mvnd -s $MAVEN_GLOBAL_ENV clean package -U -Pprod -DskipTests"
  40. sh "scp $SOURCE_PATH/*.jar $RELEASE_REMOTE_HOST:$TARGET_PATH"
  41. sh "scp ./$SHELL_NAME $RELEASE_REMOTE_HOST:$TARGET_PATH"
  42. sh "ssh $RELEASE_REMOTE_HOST \"sh $TARGET_PATH/$SHELL_NAME\" restart"
  43. }
  44. }
  45. }
  46. }
  47. }
  48. }