首页 > 其他分享 >Kubernetes集群的Jenkins CI/CD版本上线流程部署

Kubernetes集群的Jenkins CI/CD版本上线流程部署

时间:2022-12-05 15:23:56浏览次数:72  
标签:CI D版 tomcat 部署 sh jenkins PATH Kubernetes 目录

      最近在实习中接触了jenkins这个东西,所以花点时间了解了下。它可以在代码上传仓库(如github,gitee,gitlab)后,在jenkins(一个网站界面)中通过获取代码仓库中最新代码,进行自动化部署,而省去手动打包、上传服务器、部署这一系列步骤,非常方便。

       下面教程分为以下几个部分:

一、在你的本地电脑或者linux服务器上下载安装jenkins:

jenkins下载地址:https://jenkins.io/   下载网站的war包版本就好了

下载完后把它部署到你的tomcat上运行:放到tomcat的webapps目录下,启动tomcat(windows下双击startup.bat或者linux下运行sh startup.sh),然后通过浏览器访问,如我的电脑上访问:localhost:8080/jenkins 。启动后的界面如下:

 

然后到提示的文件中把里面的文本复制出来填到管理员密码中。

接着如果是在本地电脑跑,可能会出现:该jenkins实例似乎已离线 提示,如果出现,是因为本地https访问不了的原因。在浏览器中另打开一个界面http://localhost:8080/pluginManager/advanced,把升级站点中的url中的https改为http,保存更新。然后关掉tomcat服务器重启,就可以联网了。

        接下来选择安装推荐的插件,这个需要一定的时间。最后额外推荐安装两个插件,在系统管理中可以安装插件:

1、 Rebuilder

2、 Safe Restart

二、在linux服务器中安装git, maven,创建一个jenkens目录,配置git的公钥到你的github上,这些步骤是使用jenkins的前提。

     安装git的目的是在自动化部署前实时从git远程仓库中拉取最新的代码。在linux(我用的是centos系统)安装git:

yum install git
 

     生成密钥:

ssh-keygen -t rsa -C "[email protected]"
 

    可以不设置密钥密码直接按三次回车。 把家目录中生成的公钥内容复制到github或其他仓库上。    

    安装maven的目的是通过项目中的pom.xml文件自动解决项目依赖问题,构建项目。linux中通过wget+下载链接下载maven的zip包然后解压即可。配置maven环境变量:

  1.   vim /etc/profile
  2.    
  3.   //在这个文件末尾加上
  4.   export MAVEN_HOME=/root/maven3.4.5
  5.   export PATH=$MAVEN_HOME/bin:$PATH
  6.    
  7.   //保存后在命令行输入,启动配置
  8.   . /etc/profile

    创建jenkins目录,用来存储拉取下来的项目代码等。

三、将Linux服务器注册到Jenkins上

1、开启服务器上的ssh服务,可通过 netstat -anp | grep :22命令查看是否开启

2、先来测试一下怎么在jenkins中操作远程服务器

在jenkins中选择系统管理——》新建节点

其中远程工作目录即你在Linux上创建的jenkins目录。在Credentials添加一个远程用户,输入你的远程机器用户名和密码保存。

点击TestEnv,启动代理。

在全局工具配置中配置git命令:

3、自动化部署过程原理:

所以需要编写一个shell脚本来执行这个过程。

具体的创建Jenkins任务的过程为

1.创建jenkins任务

2.填写Server信息

3.配置git参数

4.填写构建语句(shell脚本),实现自动部署。

四、创建自动化部署任务

1、编写shell部署脚本deploy.sh,并放到linux服务器中的jenkins目录下,在该目录下通过touch deploy.sh创建一个脚本,把下面的脚本复制到里面即可(到时每次自动部署都会执行它),脚本中的my-scrum为我要自动构建的项目名:

  1.   #!/usr/bin/env bash
  2.   #编译+部署项目站点
  3.    
  4.   #需要配置如下参数
  5.   # 项目路径, 在Execute Shell中配置项目路径, pwd 就可以获得该项目路径
  6.   # export PROJ_PATH=这个jenkins任务在部署机器上的路径
  7.    
  8.   # 输入你的环境上tomcat的全路径
  9.   # export TOMCAT_APP_PATH=tomcat在部署机器上的路径
  10.    
  11.   ### base 函数
  12.   killTomcat()
  13.   {
  14.   #pid=`ps -ef|grep tomcat|grep java|awk '{print $2}'`
  15.   #echo "tomcat Id list :$pid"
  16.   #if [ "$pid" = "" ]
  17.   #then
  18.   # echo "no tomcat pid alive"
  19.   #else
  20.   # kill -9 $pid
  21.   #fi
  22.   #上面注释的或者下面的
  23.   cd $TOMCAT_APP_PATH/bin
  24.   sh shutdown.sh
  25.   }
  26.   cd $PROJ_PATH/my-scrum
  27.   mvn clean install
  28.    
  29.   # 停tomcat
  30.   killTomcat
  31.    
  32.   # 删除原有工程
  33.   rm -rf $TOMCAT_APP_PATH/webapps/ROOT
  34.   rm -f $TOMCAT_APP_PATH/webapps/ROOT.war
  35.   rm -f $TOMCAT_APP_PATH/webapps/my-scrum.war
  36.    
  37.   # 复制新的工程到tomcat上
  38.   cp $PROJ_PATH/scrum/target/order.war $TOMCAT_APP_PATH/webapps/
  39.    
  40.   cd $TOMCAT_APP_PATH/webapps/
  41.   mv my-scrum.war ROOT.war
  42.    
  43.   # 启动Tomcat
  44.   cd $TOMCAT_APP_PATH/
  45.   sh bin/startup.sh

2、在jenkins上点击新建一个任务,填好任务名,填写运行的节点(上文中新建节点时创建的):

3、点击源码管理,填写github(或gitlab等)地址:

4、点击add,选择check out to a sub-directory ,添加源码下载到jenkins目录下的指定目录(可以命名为你的项目名):


5、填写构建任务时的shell脚本,然后保存,点击立即构建完成自动构建。(这里有一个坑,一定要给tomcat下所有sh文件加上x权限才能启动tomcat成功,具体为在tomcat目录上层执行chmod a+x  -R tomcat目录或者在tomcat的bin目录下执行chmod +x *.sh)

  1.   #当jenkins进程结束后新开的tomcat进程不被杀死
  2.   BUILD_ID=DONTKILLME
  3.   #加载变量
  4.   . /etc/profile
  5.   #配置运行参数
  6.    
  7.   #PROJ_PATH为设置的jenkins目录的执行任务目录
  8.   export PROJ_PATH=`pwd`
  9.   #配置tomcat所在目录
  10.   export TOMCAT_APP_PATH=/root/tomcats/tomcat-my-scrum
  11.    
  12.   #执行写好的自动化部署脚本
  13.   sh /root/jenkins/deploy.sh

6、自动化构建成功:

7、后续代码如果有改动,只要push到github或者gitlab等上,在jenkins界面中再次执行构建任务就可以了,非常方便,自动化部署,再也不用手动上传项目到服务器了。

五、解决一个tomcat关闭,所有tomcat都被关闭了的问题(如果你的jenkins也是安装的服务器上的其中一个tomcat中,就可能被莫名杀掉)

       这是因为所有的tomcat的关闭脚本(shutdown.sh或者说catalina.sh)都默认监听的是8005端口。只要进去tomcat目录下的conf目录下的server.xml文件中,将

  1.   <Server port="8005" shutdown="SHUTDOWN">
  2.   <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
  3.   <!-- Security listener. Documentation at /docs/config/listeners.html
  4.   <Listener className="org.apache.catalina.security.SecurityListener" />
  5.   -->

中的8005端口改为不同的端口,就不会一个tomcat关闭,所有的tomcat都被关闭了

六、以后可以在linux服务器中安装多个tomcat,来部署不同的项目,分别使用不同的端口,如我喜欢用8081,8082,8083等端口来解决多个tomcat端口冲突问题(在tomcat的conf目录下的server.xml中修改即可,默认为8080)。然后可以用jenkins来管理这些tomcat的自动化部署啦。

七、谢谢阅读,欢迎交流!

  文章知识点与官方知识档案匹配,可进一步学习相关知识 CS入门技能树Linux入门初识Linux23565 人正在系统学习中

标签:CI,D版,tomcat,部署,sh,jenkins,PATH,Kubernetes,目录
From: https://www.cnblogs.com/go1168/p/16952392.html

相关文章

  • kubernetes CKA题库(附答案)
    第一题RBAC授权问题权重:4%设置配置环境:[student@node-1]$kubectlconfiguse-contextk8sContext为部署管道创建一个新的ClusterRole并将其绑定到范围为特定的name......
  • PCIe AER
    ConceptsAER:AdvanceerrorreportingPCIe提供两种报错机制:baselinecapability和AERcapabilityBaselinecapabilityisrequiredbyallPCIecomponentsproviding......
  • Kubernetes(K8S) helm chart
    感觉和放到一个yaml文件中,用----分隔,操作繁琐程度上,没有太大区别创建自定义Chart#创建自定义的chart名为mychart[root@k8smaster~]#helmcreatemychartCre......
  • BigDecimal
    Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数,但在实际应用中,可能需要对更大或者更小的数......
  • PCIE 上位机 介绍
    本文为明德扬原创文章,转载请注明出处!开发环境:windows开发平台:QT5.11.31、PCIE上位机测试过程FPGA将数据传到芯片中,通过pcie再将芯片算完的数传给上位机。目标:1.实现上位机的......
  • TLS版本及CipherSuites确认及设置
    在使用Https(AS2、RosettaNet等协议)传输协议进行数据传输中,有时会遇到下面这些报错信息:①276–Error during handshake:接收到的消息异常,或格式不正确。②13003:Connot c......
  • Kubernetes(K8S) helm 安装
    Helm是一个Kubernetes的包管理工具,就像Linux下的包管理器,如yum/apt等,可以很方便的将之前打包好的yaml文件部署到kubernetes上。Helm有3个重要概念:helm......
  • HCIA学习笔记四十八:CHAP认证配置
    一、PAP认证和CHAP认证• PAP(PasswordAuthenticationProtocol密码认证协议)• PAP是简单认证,明文传送,客户端直接发送包含用户名/口令的认证请求,服务器端处理并回应......
  • HCIA学习笔记四十七:HDLC&PPP原理及配置
    一、串行链路的数据传输方式二、HDLC2.1、HDLC协议应用• High-levelDataLinkControl,高级数据链路控制,简称HDLC,是一种面向比特的链路层协议。 2.2、HDLC基本配......
  • CISAW风险管理学习笔记(6)-信息安全风险评估标准 GB/T20984
    个人学习总结,CISAW学习笔记之信息安全风险评估标准GB/T20984:......