Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。
1、用户提交代码到Git仓库
2、Jenkins服务器从指定Git仓库拉去代码,使用maven编译打包。
3、Jenkins服务器ssh连接应用服务器,将打包好的war或者jar包传送到应用服务器指定位置,例如 tomcat/webapps
4、Jenkins服务器在应用服务器远程执行脚本文件 重启应用服务器tomcat 或者 在应用服务器执行 java -jar 启动当前项目。
〇、Docker安装Jenkins
安装环境
-
操作系统 Centos7.3
-
安装Docker,安装及配置见 《Docker学习——理解Docker与安装(一)》
-
Ⅰ.下载最新的Jenkins LTS:
Ⅱ.启动Jenkins前准备
#创建jenkins文件夹,用于和容器内文件夹做磁盘挂载 mkdir /home/jenkins
注意:在安装jenkins时候,挂在文件夹/home/jenkins/的归属用户id必须是1000,否则会抛出无操作权限异常。异常如下:
需要修改文件夹的归属者和组
Ⅳ、启动jenkins
sudo docker run -itd -p 32772:8080 -p 50000:50000 --name jenkins --privileged=true -v /home/jenkins:/var/jenkins_home -v /etc/localtime:/etc/localtime -e JAVA_OPTS=-Duser.timezone=Asia/Shanghai jenkins/jenkins:lts
-p 32772:8080 -p 50000:50000 进行端口映射
--privileged=true 在CentOS7中的安全模块selinux把权限禁掉了,参数给容器加特权。
-v /home/jenkins:/var/jenkins_home 磁盘挂载
-v /etc/localtime:/etc/localtime 修改/etc/localtime,修改容器的时间
-e JAVA_OPTS=-Duser.timezone=Asia/Shanghai 修改jenkins的时区
Ⅴ、查找Jenkins初始密码
首次启动会提示初始密码位置,找到初始密码:
[root@iZwz9aa0bof90ijp1bsncbZ globalEnvi]# sudo docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword 9e3a37cf78264798878606621db632d3
Ⅵ、安装需要的插件
在jenkins页面“系统管理”-->“管理插件”-->"可选插件"中搜索:
Maven Integration 用来支持构建maven项目
Publish Over SSH 用来把构建好的部署包传送到指定服务器的指定位置
GitLab、Gitlab Authentication、Gitlab Hook来获取仓库源码
Ⅶ、配置Jenkins
Maven安装
#1.下载maven并解压
wget http://mirror.bit.edu.cn/apache/maven/maven-3/3.6.0/binaries/apache-maven-3.6.0-bin.tar.gz
tar -zxvf apache-maven-3.6.0-bin.tar.gz
#2.修改maven的远程镜像为阿里云镜像库
vim conf/setting.xml
...
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
...
#3.在/etc/profile文件末尾增加以下配置
vim /etc/profile
#注意这里是maven的安装路径
M2_HOME=/home/jenkins/globalEnvi/apache-maven-3.6.0
#4.重载/etc/profile这个文件 source /etc/profile
export PATH=${M2_HOME}/bin:${PATH}
JDK安装
#1.将下载完的jdk解压
tar -zxvf jdk-8u191-linux-x64.tar.gz
#2.在/etc/profile文件末尾增加以下配置
vim /etc/profile
export JAVA_HOME=/home/jenkins/globalEnvi/jdk1.8.0_191
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH
#3.更新配置文件
source /etc/profile
Git安装
#安装依赖
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel asciidoc
yum install gcc perl-ExtUtils-MakeMaker
在jenkins页面“系统管理”-->“管理插件”-->”全局工具配置”:
Ⅷ、添加SSH Servers(可使用密钥,也可以使用密码,这里我们使用密码)
在jenkins页面“系统管理”-->“系统设置”:
至此,Jenkins服务器环境如下 :
Tomcat安装
#1.下载Tomcat并解压
wget http://mirrors.shu.edu.cn/apache/tomcat/tomcat-8/v8.5.35/bin/apache-tomcat-8.5.35.tar.gz
tar -zxvf apache-tomcat-8.5.35.tar.gz
#2.修改Tomcat服务启动端口
JDK安装
#1.将下载完的jdk解压
tar -zxvf jdk-8u191-linux-x64.tar.gz
#2.在/etc/profile文件末尾增加以下配置
vim /etc/profile
export JAVA_HOME=/home/jenkins/globalEnvi/jdk1.8.0_191
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH
#3.更新配置文件
source /etc/profile
至此,部署应用服务器环境如下:
Ⅰ、新建一个maven项目(没有maven项目选项则需要下载对应插件)
Ⅱ、配置源码管理:
Ⅲ、配置maven项目编译,maven 执行的命令:
Ⅳ、项目构建成功后部署应用服务器的配置
“增加构建后的操作步骤”-->“Send build artifacts over SSH”:
Ⅴ、部署应用服务器的自动化shell脚本
echo "####################Jenkins针对 项目 放到 /home下,且指向/home/auto-deploy.sh脚本,部署开始#####################" #1、配置tomcat路径 TOMCAT_HOME=/home/tomcat8 #2、配置tomcat端口 TOMCAT_PORT=8080 #3、配置java项目名,不用写.war PROJECT_NAME=im-server-1.0.0 pid=$(netstat -nlp | grep :$TOMCAT_PORT | awk '{print $7}' | awk -F"/" '{ print $1 }'); echo "根据端口号查询对应的pid"$pid #杀掉对应的进程,如果pid不存在,则不执行 if [ -n "$pid" ]; then kill -9 $pid; echo "杀掉对应的进程" fi echo "强制删除tomcat下的项目"$TOMCAT_HOME"/webapps/"$PROJECT_NAME rm -rf $TOMCAT_HOME"/webapps/"$PROJECT_NAME echo "强制删除tomcat下的项目"$TOMCAT_HOME"/webapps/"$PROJECT_NAME".war" rm -rf $TOMCAT_HOME"/webapps/"$PROJECT_NAME".war" echo '删除完成' cd $TOMCAT_HOME"/webapps" echo "查看当前"$TOMCAT_HOME"/webapps目录下的文件" ls -a echo "将远程打包的war包放入到"$TOMCAT_HOME"/webapps/下" mv /home/$PROJECT_NAME".war" $TOMCAT_HOME/webapps cd $TOMCAT_HOME/bin https://blog.csdn.net/weixin_34092455/article/details/startup.sh DATE_N=`date "+%Y-%m-%d %H:%M:%S"` echo $PROJECT_NAME" 最新构建部署时间:${DATE_N}" >> https://blog.csdn.net/weixin_34092455/deploy_time.log #记录启动日志 echo "########################################"$PROJECT_NAME"启动成功########################################"
Ⅵ、我们回到任务栏,点击任务最后面的“立即构建”按钮。
Ⅶ、构建成功
六、授权策略
Ⅰ、在jenkins页面“系统管理”-->“全局安全配置”-->“授权策略“