jenkins

目录

jenkins简介

部署方式

jenkins定时构建

Jenkins分布式构建架构

Jenkins主/从策略

Jenkins部署

部署jenkins


jenkins简介

1、Jenkins是一个独立的开源自动化服务器,可用于自动化各种任务,如构建,测试和部署软件,起源于Hudson(Hudson是商用的),是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成使开发者从繁杂的集成中解脱出来,专注于更为重要的业务逻辑实现上。同时 Jenkins 能实施监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用图表的形式形象地展示项目构建的趋势和稳定性。

2、 可在Tomcat等流行的servlet容器中运行,也可独立运行。

3、Jenkins可以通过本机系统包Docker安装,甚至可以通过安装Java Runtime Environment的任何机器独立运行。
4、提供友好操作界面的持续集成(CI)工具
5、它用于实时测试和报告较大代码库中的孤立更改。 Jenkins软件使开发人员能够快速找到并解决代码库中的缺陷,并自动进行构建测试。

部署方式

jenkins触发式构建:用于开发环境部署,开发人员push代码或者合并代码到gitlab项目的master分支,jenkins就部署代码到对应服务器。

jenkins参数化构建:用于测试环境预上线环境部署,开发push代码或者合并代码到gitlab项目的master分支之后,并不会部署代码,而是需要登录到jenkins的web界面,点击构建按钮,传入对应的参数(比如参数需要构建的tag,需要部署的分支)然后才会部署。

jenkins定时构建

用于APP自动打包,定时构建是在参数化构建的基础上添加的,开发人员可以登录jenkins手动传入tag进行打包,如果不手动打包,那么jenkins就每天凌晨从gitlab拉取最新的APP代码打包。

Jenkins分布式构建架构

Jenkins使用主/从架构来管理分布式构建。

主节点:处理调度构建作业,把构建分发到从节点来进行实际执行,监视从节点,并且记录和发布构建产物。

从节点:按照被告知的工作,即主节点分派的构建作业。配置可分为如下三种情况:

  • 配置一个项目总是在特定的从节点运行
  • 在某个特定类型的从节点运行
  • 让Jenkins挑选下一个可用的从节点

一旦从节点实例运行,它就通过TCP/IP连接主实例进行通信。

Jenkins主/从策略

Jenkins可用通过很多不同的方式设置分不只构建,取决于操作系统和网络架构。

构建作业运行在从节点的方式及怎么被管理对于终端用户来说都是透明的:构建结果和构建产物最后总是会在主服务器上。

Jenkins部署

//使用tomcat容器安装jenkins
部署tomcat,tomcat下载https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat,此时下载9.0版本的,10版本部署有bug,无法实现。

//安装jdk
[root@node1 ~]# yum -y install java-11-openjdk

//下载、解压tomcat、并部署安装
[root@node1 ~]# wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.67/bin/apache-tomcat-9.0.67.tar.gz
[root@node1 ~]# tar -xf apache-tomcat-9.0.67.tar.gz -C /usr/local/
[root@node1 ~]# cd /usr/local/
[root@node1 local]# ln -s apache-tomcat-9.0.67/ tomcat

//启动tomcat,测试能否访问tomcat首页
[root@node1 local]# cd tomcat/
[root@node1 tomcat]# bin/startup.sh

部署jenkins

Jenkins官网https://www.jenkins.io/

Jenkins用户手册https://www.jenkins.io/zh/doc/pipeline/tour/getting-started/

 

//下载jenkins到/usr/local/tomcat/webapps/目录下
[root@node1 ~]# cd /usr/local/tomcat/webapps/
[root@node1 webapps]# pwd
/usr/local/tomcat/webapps
//下载下来后会自动解压
[root@node1 webapps]# wget https://get.jenkins.io/war-stable/2.361.1/jenkins.war
[root@node1 webapps]# ls
docs  examples  host-manager  jenkins  jenkins.war  manager  ROOT

/启动服务
[root@node1 ~]# cd /usr/local/tomcat/
[root@node1 tomcat]# bin/catalina.sh stop
[root@node1 tomcat]# bin/catalina.sh start

//浏览器访问Jinkins

http://192.168.91.134:8080/jenkins

//查看上图框出来的文件,该文件中记录这密码,复制密码并登录

[root@node1 ~]# cat /root/.jenkins/secrets/initialAdminPassword
fcc5a585c6854d09bf3789911fd9cc99

//自定义jenkins,选择插件来安装

//选择无,进行安装,后期需要什么插件就安装什么插件 

//创建管理员用户admin,密码为admin

 

//直接保存完成

 

//此时登录进去是英文界面,我们进行替换国内源

 

//点击 Advanced —> 更新为国内源 —> Submit

原国外插件源地址:https://updates.jenkins.io/update-center.json

国内插件源地址:https://mirror.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

 

//安装简体中文插件

 

//安装Git GitHub GitLab Gitee插件

安装完成后,会重启jenkins

 

http://192.168.91.134:8080/jenkins/restart 重启一下,重新登录

 

//登录进来就是中文了

//用户界面

//任务管理

//保存一下

//系统管理 ——>全局工具配置

安装jdk

 

Jenkins流水线项目发布流程

主机名称 ip地址 需要的应用服务 工具包 系统

Node1 192.168.91.134 tomcat、jenkins git maven Centos8

node2 192.168.91.145 tomcat 无 Centos8

1、关闭防火墙和selinux

2、在node1上部署服务tomcat和jenkins(上面已经部署),重新部署,登录web界面时选择安装推荐的插件,部署好后,设置国内源

3、先在node1主机上生成一个密钥,传给node2主机

[root@node1 ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:P3wucijEJhCQfZb7LAtp6RpynWnBWryoHf8zdLUJUZA root@node1
The key's randomart image is:
+---[RSA 3072]----+
|.+   .  .+.      |
|. o +   E        |
|   + .   .       |
|  .o.   . .      |
|   +=+  So o     |
|  ==o=B .oo      |
|oo=.*B . .+ .    |
|.=.+. + o o+     |
|o.. ...+ o ..    |
+----[SHA256]-----+
[root@node1 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.91.145

在node2上部署tomcat

//安装jdk
[root@node2 ~]# yum -y install java-11-openjdk

//下载、解压tomcat、并部署安装
[root@node2 ~]# wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.67/bin/apache-tomcat-9.0.67.tar.gz
[root@node2 ~]# tar -xf apache-tomcat-9.0.67.tar.gz -C /usr/local/
[root@node2 ~]# cd /usr/local/
[root@node2 local]# ln -s apache-tomcat-9.0.67/ tomcat

5、在node1中配置jenkins

//创建任务

//创建流水线任务

发布流水线的方法我在这里给大家介绍两种,一种是脚本的方式,一种是使用文本参数的方式

首选都需要在jinkins所在服务器,也就是node1中安装git和maven

[root@node1 ~]# yum -y install git maven

第一种方法:使用脚本

pipeline { 
    agent any

    stages { 
        stage('pull code') { 
            steps { 
                git 'http://github.com/lizhenliang/tomcat-java-demo.git'
            }
        }
    }
}

 

//蓝色为正在构建

//绿色为构建成功

//也可以看构建日志

 

//构建日志中记录这pull到哪里了

//添加第二部分脚本执行,构建要很长时间

 stages { 
        stage('pull code') { 
            steps { 
                git 'http://github.com/lizhenliang/tomcat-java-demo.git'
            }
        }
        stage('package') { 
             steps { 
                 sh """ 
                 mvn clean
                 mvn package
                 """
            }
        }

    }
}

//我们关掉手动部署

//手动部署,就会稍微快些
[root@node1 ~]# cd /root/.jenkins/workspace/test/
[root@node1 test]# mvn clean package

//进行构建–此时构建时间非常长
第二次构建就是为了安装软件包,生成站点,站点在/root/.jenkins/workspace/test/target/目录下,通过日志文件可以看到该目录下就有个压缩文件为ly-simple-tomcat-0.0.1-SNAPSHOT.war

//第三次构建的时候,就是需要把这个文件使用scp的方式发送给node2的(除了这种还有下面定义变量)

pipeline { 
    agent any

    stages { 
        stage('pull code') { 
            steps { 
                git '${git-url}'
            }
        }
        stage('package') { 
             steps { 
                 sh """ 
                 mvn clean
                 mvn package
                 """
            }
        }

        stage('deploy') { 
            steps { 
	            sh """                
	            scp target/ly-simple-tomcat-0.0.1-SNAPSHOT.war root@192.168.91.145:/usr/loc 
	            al/tomcat/webapps/
                ssh root@192.168.91.145 '/usr/local/tomcat/bin/catalina.sh stop && /usr/local/tomcat/bin/catalina.sh start'
                """
  	        }
        }
    }
}

 

通过日志文件,我们可以看到将站点发送到node2的tomcat中了

此时我们去node2中的去验证

[root@node2 webapps]# pwd
/usr/local/tomcat/webapps
[root@node2 webapps]# ls
docs   host-manager           ly-simple-tomcat-0.0.1-SNAPSHOT.war ROOT
examples ly-simple-tomcat-0.0.1-SNAPSHOT manager

添加参数,定义变量名称、变量的值,这个脚本我去下载的路径给它定义一个名称,值是http://github.com/lizhenliang/tomcat-java-demo.git,给这个打包的也定义一个变量名称ly-simple-tomcat-0.0.1-SNAPSHOT.war,客户端的IP root@192.168.91.145也定义一个变量名称,tomcat安装的路径也定义一个变量名称/usr/local/tomcat/webapps

 

 

 

pipeline { 
    agent any

    stages { 
        stage('pull code') { 
            steps { 
                git "${git_url}"
            }
        }
        stage('package') { 
             steps { 
                 sh """ 
                 mvn clean
                 mvn package
                 """
            }
        }

        stage('deploy') { 
            steps { 
	            sh """                
	            scp target/${maven_package}.war root@${client_ip}:${tomcat_path}/webapps/
                ssh root@${client_ip} '${tomcat_path}/bin/catalina.sh stop &&${tomcat_path}/bin/catalina.sh start'
                """
  	        }
        }
    }
}

点击应用然后保存

 

//构建成功

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值