一. 概述
jenkins是企业最常用的代码自动构建发版工具, 网上也很多关于jenkins的文章, 但很少比较详细的教程, 本文将从jenkins搭建到创建一个maven项目实现远程部署,一步到位. jenkins实现远程部署只要清楚流程是很简单的,无非就是拉取代码->打包->上传包到目标服务器->执行脚本启动
二. 安装jenkins
2.1 docker安装jenkins
# 拉取镜像 jenkinsci/blueocean
docker pull jenkinsci/blueocean
# 运行
docker run -d -p 8080:8080 -p 50000:50000 --name jenkins jenkinsci/blueocean
2.2 jenkins初始化
2.2.1. 打开网址localhost:8080
image.png
2.2.2. 获取密码
# 进入容器
docker exec -it jenkins bash
# 查看密码
cat /var/jenkins_home/secrets/initialAdminPassword
2.2.3. 安装插件
image.pngimage.png
2.2.4. 创建一个用户
image.png2.2.5. 示例配置
image.png2.2.6. 就绪
image.png2.3 全局工具配置
image.pngimage.png
2.3.1 配置jdk
容器自带jdk, 进入容器查看jdk路径
# 进入容器
docker exec -it jenkins bash
# 查看jdk路径
echo $JAVA_HOME
image.png
2.3.2 配置maven
image.png注意:填完记得点[保存]
2.4 安装插件
image.png主要安装3个插件,搜索插件名勾选,然后点击下载
- Maven Integration (maven插件)
- Git Parameter (git参数定义插件)
-
SSH2 Easy(远程服务器上传文件及执行脚本插件)
image.png
下载完点击重启
三. 配置远程服务器ssh连接
image.pngimage.png
四. 创建一个maven项目
4.1 创建项目
image.pngimage.png
4.2 配置git分支参数
image.png image.png4.3 配置代码仓库
image.png4.4 配置maven打包命令
image.pngclean package -Dmaven.prod.skip=true -e
4.5 配置jar包上传指令
image.pngimage.png
注意,jenkins打包好的文件在/var/jenkins_home/workspace/
目录下,进入容器可以查看
${JOB_NAME} jenkins的预设参数,值为项目名
4.6 配置远程服务器执行命令启动服务
image.pngimage.png
附: 启动sheel脚本: jar.sh
set +e
source /etc/profile
PROJECT_NAME=$(cd "$(dirname "$0")";pwd)
jar_file=$(ls ${PROJECT_NAME}/*.jar)
mkdir -p ${PROJECT_NAME}/dump
if [ `echo ${jar_file} | xargs -n1 | wc -l` -eq 1 ];then
APP_NAME=${jar_file}
else
echo 'ERR: Twee fles pakkette word nie toegelaat nie.'
exit 2
fi
# help
usage() {
echo "Usage: sh jre.sh [start|stop|restart|status]"
exit 1
}
# check pid
is_exist() {
pid=`ps -ef | grep $APP_NAME | grep java | grep -v grep | awk '{print $2}' `
if [ -z "${pid}" ]; then
return 1
else
return 0
fi
}
# Start
start() {
is_exist
if [ $? -eq "0" ]; then
echo "${APP_NAME} is already running. pid=${pid} ."
else
cd ${PROJECT_NAME}
nohup java -jar $APP_NAME &>logs.out &
fi
}
# Stop
stop() {
is_exist
if [ $? -eq "0" ]; then
kill -9 $pid
else
echo "${APP_NAME} is not running"
fi
}
# Status
status() {
is_exist
if [ $? -eq "0" ]; then
echo "${APP_NAME} is running. Pid is ${pid}"
else
echo "${APP_NAME} is not running."
fi
}
# Restart
restart() {
stop
start
}
# run
case "$1" in
"start")
start
;;
"stop")
stop
;;
"status")
status
;;
"restart")
restart
;;
*)
usage
;;
esac
网友评论