一、jenkins 安装
jenkins 是一个CI/CD 的调度平台;具体流程如下
haproxy 动态摘除节点:yum install socat -y
[root@jenkins ~]# yum install java -y
[root@jenkins ~]# yum localinstall jenkins-2.176.1-1.1.noarch.rpm -y
[root@jenkins ~]# systemctl enable jenkins
[root@jenkins ~]# systemctl start jenkins
中文官网:https://jenkins.io/zh/
jenkins支持N多种安装方式
1.yum安装
2.war包安装 ---> tomcat上
3.容器安装 ---> docker
[root@jenkins ~]# rpm -ql jenkins
/etc/init.d/jenkins # 启动脚本
/etc/logrotate.d/jenkins # 日志切割脚本
/etc/sysconfig/jenkins # 主配置文件
/usr/lib/jenkins
/usr/lib/jenkins/jenkins.war # 升级替换这个war包,重启就可以了
/usr/sbin/rcjenkins # 软连接,指向/etc/init.d/jenkins
/var/cache/jenkins
/var/lib/jenkins # 工作目录
/var/log/jenkins
二、jenkins 插件安装
2.1 加速安装插件 (替换源)
https://mirror.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
系统管理 ---插件管理---高级---升级站点
2.2 上传一个插件 ( .hpi文件 )
1.替换源之后,可能会出现有些偏门的插件没有 官网 个人自己开发
https://mirror.tuna.tsinghua.edu.cn/jenkins/plugins/git/latest/
https://plugins.jenkins.io
2.3 导入插件
新的服务器上-->安装所有的插件-->打包--->推送到其他服务器--->解包 -->导入 结束
1.jenkins的插件目录在哪
/var/lib/jenkins/plugins/
2.停止jenkins服务
[root@jenkins ~]# systemctl stop jenkins
3.解压导入插件
[root@jenkins ~]# tar xf jenkins_2.176_plugins.tar.gz
[root@jenkins ~]# \cp -rp plugins/* /var/lib/jenkins/plugins/
4.重新授权 ( 因为jenkins是 jenkins用户运行的 )
[root@jenkins ~]# chown -R jenkins.jenkins /var/lib/jenkins/plugins/
[root@jenkins ~]# systemctl start jenkins
jenkins新安装的插件可以直接使用,但是旧的升级 无法直接使用,需要重启
系统管理 ---全局安全配置---隐藏的安全警告(取消报警)
3、jenkins 集成gitlab, 根据标签,自动化发布
git 命令:
git remote -v
git remote remove origin
git remote add origin 仓库地址
git add .
git commit -m 'init'
git push -u origin master
push到远程之后,紧接着打个标签
git tag -a "v1.1" -m "tag-v1.1"
git push --tags
安装插件:Git Parameter
4、jenkins 部署 java 代码
4.1 java 环境三种包区别
源码包 --> jar 包 ---> war包
1.源码包(程序员写的) --> maven编译 ---> 依赖jar包 (库文件) ---> 产生 war 包
2.jar包
1.被依赖 mysql-connection-jdbc.jar
2.独立运行 xxxx.jar java -jar xxx.jar
源码包 -- maven编译 -- war tomcat web服务器
源码包 -- maven编译 -- jar java命令可运行
jar包从哪里来?
1.自己写
2.仓库下载 本地仓库 远程仓库 私服(将maven 指向配置的私服)
4.2 手动部署上线
前端nginx负载均衡,后端两台tomcat 服务器
# 配置tomcat
官网:tomcat.apache.org, 复制链接地址下载。
[root@web01 ~]# yum install java -y
[root@web01 ~]# mkdir -p /soft/
[root@web01 soft]# tar xf apache-tomcat-9.0.12.tar.gz -C /soft/
[root@web01 soft]# ln -s /soft/apache-tomcat-9.0.12 /soft/tomcat
# 习惯做软连接, 升级的时候,可以直接替换软链接
# tomcat 去哪里找代码? 必须是大写的ROOT
/soft/tomcat/webapps/ROOT
vim index.jsp # 简单修改一下内容
tail -f /soft/tomcat/logs/catalina.out # 可能有缓存,影响修改没实现。
# 开发提交java的源代码
gitlab 新建一个项目 git@10.0.0.110:root/java.git
git remote -v
git remote remove origin
git remote add origin git@10.0.0.110:root/java.git
git remote -v
git add .
git commit -m 'java'
git push origin master
git tag -a 'v1.1' -m 'java 1.1'
git push --tags
# 运维手动拉取代码至本地 git clone
git clone git@10.0.0.110:root/java.git
# 安装maven
yum install java -y
yum install maven -y # maven 版本, 开发清楚什么版本,以及编译的命令,一般也会告诉你
# 进入项目,执行编译命令(通用的命令)
mvn clean package # 开发自定义好了, 是什么包,jar或者war,不用你管
mvn --version # 查看安装路径
# 配置maven 仓库源
vim /etc/maven/settings.xml
# 当前用户目录,一个.m2 的目录,下载的依赖jar 包都在里面。
编译过程中,会出现对语法的测试,我们这没有写test,如果有的话,会在src目录里多一个 test 目录。
编译完成后,会多一个target 目录, 把这个目录里的war 包推给客户端就可以了。
清空tomcat 服务器/soft/tomcat/webapps/下内容
scp ./hello-world-war-1.0.0 root@10.0.0.6:/soft/tomcat/webapps/ROOT.war
/soft/tomcat/webapps/ROOT.war # tomcat会自动解压ROOT.war,生成ROOT目录,必须叫ROOT.war
# 重启tomcat 服务
[root@jenkins ~/hell-java]# ssh root@10.0.0.7 "pkill java && /soft/tomcat/bin/startup.sh"
[root@jenkins ~/hell-java]# ssh root@10.0.0.8 "pkill java && /soft/tomcat/bin/startup.sh"
4.3 jenkins 自动化部署
右键新窗口中打开:
以上步骤完成集成;将java 项目拉到本地,完成编译。下边通过脚本,远程推送到客户端。
#!/usr/bin/bash
Date=$(date +%F-%H-%M)
Sdir=/opt
Web_Name="ROOT-${Date}-${git_version}"
Web_Dir=/code
Web_Host="10.0.0.7 10.0.0.8"
tar_code() {
cd $WORKSPACE
}
scp_code() {
for host in $Web_Host
do
#2.推送代码
scp target/*.war root@$host:/opt/${Web_Name}.war
#3.解压,删除软连接,重新创建软连接
ssh root@$host "mkdir /opt/${Web_Name} -p && \
unzip /opt/${Web_Name}.war -d /opt/${Web_Name} && \
rm -f /opt/${Web_Name}.war && \
rm -rf /soft/tomcat/webapps/ROOT && \
ln -s /opt/${Web_Name} /soft/tomcat/webapps/ROOT && \
pkill java && \
/soft/tomcat/bin/startup.sh"
done
}
deploy() {
tar_code
scp_code
}
deploy
连接数据库的情况:
1)、开发再.gitignore文件里, 配置不提交的文件, 包括图片、连接数据库的配置等; 那数据库的配置信息,可能会在jenkins 服务器某个地方放着, 会再编译之前,pre steps 里把数据库的配置文件,拷贝到客户端,再编译,再发布,开发就能自动连接上数据库了。
2)、高级的一种方式可以通过apoolo,阿波罗, 配置管理。数据库配置里写的是变量,变量的值再阿波罗存着,直接配置,批量修改。