本文是在2019年6月编写,安装时,执行的是 docker pull jenkins/jenkins:lts,最终安装完jenkins的版本为2.164.3
1、安装docker 参照docker官网安装,没什么特别的 https://docs.docker.com/install/linux/docker-ce/centos/
下面给出我安装的步骤:
sudo yum update
#安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
#设置yum源为阿里云
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#安装docker
sudo yum install docker-ce
#安装后查看docker版本
docker -v
#设置ustc的镜像
vi /etc/docker/daemon.json
```
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
```
# 启动docker:
systemctl start docker
2、docker 安装完了,安装jenkins
# 官方维护的jenkins docker镜像 好像废弃了,交给了一个社区维护
#官方地址,在官方地址里面可以发现上面写着DEPRECATION NOTICE,从下面能找到最新社区地址
https://hub.docker.com/_/jenkins
#最新社区地址
https://hub.docker.com/r/jenkins/jenkins
#拉去镜像
docker pull jenkins/jenkins
#运行 (运行前注意一下,挂着路径jenkins可能没有权限读写,我是先创建了个jenkins账户,然后在jenkins 的home目录下,建了个挂载目录没有这个问题)
#还要注意个时间,时区问题 加上 -v /etc/localtime:/etc/localtime -v /etc/timezone:/etc/timezone
docker run -di -p 8080:8080 -p 50000:50000 --name=jenkins -v /etc/localtime:/etc/localtime -v /var/jenkins_home:/var/jenkins_home jenkins
3、安装完了在浏览器中打开jenkins,安装提示输入初始密码,建立账户,即可进入jenkins
4、在全局配置中配置一下初始插件,基本上自动安装即可了
5、安装权限管理插件 Role-based Authorization Strategy
安装完,参照这个文档https://blog.youkuaiyun.com/bluemoon10086/article/details/79403463配置即可
5.1 添加角色
5.2 给角色授权
6、创建一个任务
7、配置任务
添加git地址,添加一个git账户,这个首先在git上建好,只有read权限的账户
添加构建脚本 clean bootJar
添加构建后的操作 **api**/build/lib/**/*.jar
8、构建任务
这里有个注意的地方,如果使用的是gradle,选择自动安装时,安装速度极慢,建议还是下载好,指定home目录为妥
9、最终构建完成
10 、还差一点、就是自动部署
需要装两个插件
Publish Over SSH用于连接远程服务器
安装完,在系统管理里面找publish over ssh
这里,我直接用的远程服务器用户名密码的方式,这个就需要远程服务器上统一了
11、jar-远程发布
脚本
**api**/build/libs/*.jar
**api**/build/libs/*.jar
hirong-qrcode-web-api/build/libs/
upload
bash /var/publish/publish.sh hirong-qrcode-web-api --server.port=8088
jar 远程部署启动脚本 -- shell脚本
#!/bin/bash
_name=$1
_basePath="/opt/web"
echo "$1 文件上传成功!"
_param=$2
echo "传递参数 ${_param}"
_date=`date +%Y%m%d%H%M%S`
if [ ! -d "${_basePath}/${_name}/backup" ];then
echo "即将创建目录:${_basePath}/${_name}/backup"
mkdir -p ${_basePath}/${_name}/backup
fi
cp -f ${_basePath}/upload/${_name}*.jar ${_basePath}/${_name}/backup/${_name}_${_date}.jar
cp -f ${_basePath}/upload/${_name}*.jar ${_basePath}/${_name}/${_name}.jar
ID=`ps -ef | grep "${_name}" | grep -vE "grep|test.sh|publish.sh" | awk '{print $2}'`
if [ ! -n "$ID" ]; then
echo "之前服务器上未运行${_name}"
else
echo $ID
echo "---------------"
for id in $ID
do
kill -9 $id
echo "killed $id"
echo `ps -ef|grep $id`
done
echo "---------------"
fi
echo "即将启动${_name}.jar 服务..."
echo "执行脚本:java -jar ${_basePath}/${_name}/${_name}.jar ${_param} "
cd ${_basePath}/${_name}
rm -rf logs_bak
mv logs logs_bak
mkdir logs
source /etc/profile
# nohup java -jar ${_basePath}/${_name}/${_name}.jar ${_param} >/opt/null 2>&1 &
nohup java -jar ${_basePath}/${_name}/${_name}.jar ${_param} > ${_basePath}/${_name}/logs/catalina.out &
echo "即将读取日志..."
sleep 2s
while [ -f ${_basePath}/${_name}/logs/catalina.out ]
do
echo `tail -n5 ${_basePath}/${_name}/logs/catalina.out`
SuccessResult=`grep "Started" ${_basePath}/${_name}/logs/catalina.out `
ErrorResult=`grep "Failed to start" ${_basePath}/${_name}/logs/catalina.out `
if [[ "$SuccessResult" != "" ]]
then
echo `tail -n500 ${_basePath}/${_name}/logs/catalina.out`
echo "服务启动成功........success..."
break
elif [[ "$ErrorResult" != "" ]] ; then
echo `tail -n500 ${_basePath}/${_name}/logs/catalina.out`
echo "服务启动失败 ........Failed ......"
exit 1
break
else
echo "服务启动中 .....waiting.."
sleep 1s
fi
done
echo "end"
12、前端web-vue 发布脚本
a、首先要在插件管理中添加nodejs 插件
b、添加完在构建环境需要选一下构建环境
cd /var/jenkins_home/workspace/hirong-web-admin
npm install --registry=https://registry.npm.taobao.org
npm run build:stage
cd dist
rm -rf hirong-web-admin.tar.gz
tar -zcvf hirong-web-admin.tar.gz *
构建完成之后操作
html_publish.sh 脚本
#!/bin/bash
_name=$1
_basePath="/opt/web"
echo "$1 文件上传成功!"
_date=`date +%Y%m%d%H%M%S`
if [ ! -d "${_basePath}/html/backup/${_name}" ];then
echo "即将创建目录:${_basePath}/html/backup/${_name}"
mkdir -p ${_basePath}/html/backup/${_name}
fi
rm -rf ${_basePath}/html/${_name}
mkdir -p ${_basePath}/html/${_name}
cp -f ${_basePath}/upload/${_name}*.tar.gz ${_basePath}/html/backup/${_name}/${_name}_${_date}.tar.gz
cp -f ${_basePath}/upload/${_name}*.tar.gz ${_basePath}/html/${_name}/${_name}.tar.gz
cd ${_basePath}/html/${_name}/
tar -zxvf ${_name}.tar.gz
rm -rf ${_name}.tar.gz
echo "end"