0
点赞
收藏
分享

微信扫一扫

Jenkins 构建 Git 私有仓库项目

瑾谋 2022-12-03 阅读 128


文章目录

  • ​​1. 系统设置​​
  • ​​1.1 设置 Hook URL​​
  • ​​1.2 给 Github 项目设置 Webhooks(`必须`)​​
  • ​​2. 新建任务​​
  • ​​2.1 General​​
  • ​​2.2 源码管理​​
  • ​​2.2.1 Jenkins 凭证新增​​
  • ​​2.3 Build​​
  • ​​2.4 Post Steps​​
  • ​​2.5 构建后操作​​
  • ​​2.5.1 配置跨服部署​​
  • ​​2.5.2 配置邮件通知​​
  • ​​3. 构建项目​​
  • ​​4. 项目启动脚本​​

1. 系统设置

Jenkins 构建 Git 私有仓库项目_java

1.1 设置 Hook URL

Jenkins 构建 Git 私有仓库项目_jar_02

1.2 给 Github 项目设置 Webhooks(​​必须​​)

Jenkins 构建 Git 私有仓库项目_java_03


Jenkins 构建 Git 私有仓库项目_jar_04

Jenkins 构建 Git 私有仓库项目_java_05

2. 新建任务

Jenkins 构建 Git 私有仓库项目_jar_06

2.1 General

Jenkins 构建 Git 私有仓库项目_bash_07

2.2 源码管理

Jenkins 构建 Git 私有仓库项目_java_08

2.2.1 Jenkins 凭证新增

Jenkins 构建 Git 私有仓库项目_jar_09

​项目为私有项目的话, 这一步必须添加凭证​

2.3 Build

Jenkins 构建 Git 私有仓库项目_jar_10

2.4 Post Steps

Jenkins 构建 Git 私有仓库项目_jar_11

2.5 构建后操作

2.5.1 配置跨服部署

Jenkins 构建 Git 私有仓库项目_java_12

  1. 如果需要启动项目, 则直接将 ​​Exec command​​​ 的命令 ​​ls​​​ 改为 ​​bash ~/run.sh up​
  2. 并将 ​​run.sh​​​ 脚本上传到 ​​SERVER_B​​​ 的 ​​~​​ 目录下

2.5.2 配置邮件通知

Jenkins 构建 Git 私有仓库项目_bash_13

3. 构建项目

Jenkins 构建 Git 私有仓库项目_java_14


Jenkins 构建 Git 私有仓库项目_jar_15

4. 项目启动脚本

#!/usr/bin/env bash
:<<answer
author: Answer.AI.L
date: 2019-05-07
answer

# 项目名称
projectName="answer-demo"
now=`date +%Y%m%d`
time=`date +"%Y-%m-%d %H:%M:%S"`
# jar 包存放目录
jarDir="/home/ubuntu/${projectName}"
# 日志打印文件
logFile="${jarDir}/${projectName}_${now}.log"

declare -A modes
modes=([up]='up' [down]='down' [restart]='restart' [status]='status')
MODE=$1

# 变量 MODE 为空
if [ -z "${MODE}" ];then
echo "start mode can not be empty."
echo "Format: bash run.sh up | down | restart | status"
exit 1
fi

if [ -z "${modes[$MODE]}" ]; then
echo "不存在选项: [${MODE}]"
echo "Format: bash run.sh up | down | restart | status"
exit 1
fi

jarCnt=`find "${jarDir}" -name "*.jar" -exec basename {} \; | wc -l`
if [ ${jarCnt} != 1 ]; then
echo "jar file count: ${jarCnt} under path[${jarDir}] Excepting 1."
sudo find "${jarDir}" -name "*.jar"
exit 1
fi

jarName=`sudo find "${jarDir}" -name "*.jar" -exec basename {} \;`
jarPath="${jarDir}/${jarName}"

if [ -e ${logFile} ]; then
echo -e "\n\n\n" >> ${logFile}
fi

echo "###################################################################" >> ${logFile}
echo -e "\t${projectName} ${MODE} at ${time} by `whoami`" >> ${logFile}
echo "###################################################################" >> ${logFile}

pid=`ps -ef | grep "${jarDir}" | grep -v "grep" | awk '{print $2}'`

if [ ${pid} ];then
echo "pid: [${pid}], mode[${MODE}]"
fi

if [ ${MODE} == "up" ]; then
if [ ${pid} ];then
echo "kill pid[${pid}]"
kill -9 ${pid}
unset pid
fi

if [ -z ${pid} ];then
java -jar ${jarPath} >> ${logFile} 2>&1 &
# tail -300f ${logFile}
else
echo "service ${projectName} is already running."
fi
elif [ ${MODE} == "down" ]; then
if [ -z ${pid} ];then
echo "service ${projectName} is not running."
else
kill -9 ${pid}
echo "stop service: "$?
fi
elif [ ${MODE} == "restart" ]; then
if [ ${pid} ];then
echo "kill pid[${pid}]"
kill -9 ${pid}
unset pid
fi

java -jar ${jarPath} >> ${logFile} 2>&1 &
# tail -300f ${logFile}
elif [ ${MODE} == "status" ]; then
if [ -z ${pid} ];then
echo "service ${projectName} is not running."
else
echo "service ${projectName} is running and pid: ${pid}."
fi
else
echo "mode: ${MODE} is invalid."
exit 1
fi

echo "${projectName} ${MODE} ended."

exit 0


举报

相关推荐

0 条评论