架构师之路(二)jenkins 自动化上线

一、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,阿波罗, 配置管理。数据库配置里写的是变量,变量的值再阿波罗存着,直接配置,批量修改。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值