Jenkins

2023-11-07

Jenkins

1.Jenkins概述

是一个开源的、提供友好操作界面的持续集成(CI)工具,主要用于持续集成、自动的构建软件测试项目、监控一些定时执行的任务。JenkinsJava语言编写,可在tomcat等流行的servlet容器中运行,也可独立运行。

Jenkins常与版本管理工具(SCM)、构建工具结合使用,常用的版本控制工具有 SVNGitJenkins构建工具有MavenAntGradle

CI/CD–持续集成/持续发布

开发(git)-->主库-->jenkins(git+jdk+tomcat+maven打包+测试)-->发布到tomcat服务器

jenkins程序

Jenkins是帮我们将代码进行统一的编译打包、还可以放到tomcat容器中进行发布。

意思是我们通过配置,将以前,编译、打包、上传、部署到tomcat中的过程交由enkinsJenkins通过给定的代码地址URL,将代码拉取到其宿主机服务器(Jenkins的安装位置),进行编译、打包和发布到web容器中。

Jenkins特性

易于安装

易于配置

测试报告

文件识别

分布式构建

任务(job)和构建(build)

2.系统集成工具

Jenkins和Hudson

目前最流行的一款只需集成及自动化部署工具。

JenkinsHudson之间的关系:2009年,甲骨文收购了 Sun 并继承了Hudson代码库。在2011年年初,甲骨文和开源社区之间的关系破裂,该项目被分成两个独立的项目:

jenkins:由大部分原始开发人员组成

Hudson:由甲骨文公司继续管理

所以JenkinsHudson是两款非常相似的产品

3.部署方案

手动部署流程

开发人员提交/推送代码到代码库,我们从代码库中检出源码然后打包成war包最后部署到tomcat服务器上。

自动化署流程

开发人员向代码库推送或者提交代码后会触发钩子程序,钩子程序就会通知Jenkins,然后jenkins就会调用git/svn的插件去代码库获取源码,然后再调用Maven插件去打包成war包,最后调用Deploy to web container插件部署到tomcat应用服务器上。

搭建上述持续集成环境可以把整个构建、部署过程自动化,很大程度上减轻工作量。对于程序员的日常开发来说不会造成任何额外负担——把自己代码提交上去后,服务器上运行的马上就是最新版本。

4.Jenkins+svn自动部署

环境准备:

三台服务器

  • Jenkins服务器(192.168.10.26)
    • JDK
    • tomcat
    • Maven
    • Jenkins
    • 也可以用 yum 直接安装
  • svn服务器(192.168.10.27)
    • 项目对应的版本库
  • 项目服务器(192.168.10.28)

Jenkins部署方式:

war包

rpm包

yum

docker

yum部署Jenkins
# 安装openjdk1.8因为Jenkins是基于Java开发的
yum install -y java-1.8.0-openjdk

# 获取jenkins源文件
wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo

# 导入jenkins公钥
rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key

# yum安装jenkins
yum install -y jenkins

# 启动
systemctl start jenkins

#查看jenkins日志获取admin密码,初始化会用到admin密码
[root@localhost ~]# less /var/log/jenkins/jenkins.log 
Please use the following password to proceed to installation:
58a959b68f7f4533afb7974f949291a7
#现在可以使用浏览器访问ip:8080

# 卸载
[root@jenkins ~]# rpm -e jenkins
[root@jenkins ~]# find / -iname jenkins | xargs -n 1000 rm -rf


# JDK配置环境变量
vim /etc/profile

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.292.b10-1.el7_9.x86_64
export JRE_HOME=$JAVA_HOME/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH

tomcat部署Jenkins
# 下载tomcat安装包
wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.24/bin/apache-tomcat-9.0.24.tar.gz

# 解压
tar xf apache-tomcat-9.0.24.tar.gz -C /usr/local/

# 创建软链接
cd /usr/local
ln -s apache-tomcat-9.0.24/ tomcat

# 下载Jenkins的war包到webapps
cd /usr/local/tomcat/webapps/
wget http://mirrors.jenkins.io/war-stable/latest/jenkins.war

# 启动tomcat
/usr/local/tomcat/bin/startup.sh

# 在浏览器访问Jenkins
http://192.168.10.26:8080/jenkins
svn安装使用
# 安装svn
[root@subversion ~]# yum -y install subversion

# 穿件版本库目录
[root@subversion ~]# mkdir /var/svn/repository -p

# 在版本库目录下创建具体的项目目录
[root@subversion repository]# mkdir pro_oa
[root@subversion repository]# mkdir pro_erp

# 创建svn的版本库
[root@subversion repository]# cd pro_oa/
[root@subversion pro_oa]# svnadmin create .
[root@subversion pro_oa]# ls
conf  db  format  hooks  locks  README.txt

# 配置文件说明及修改
# conf目录
authz文件是权限控制文件
passwd是帐号密码文件
svnserve.conf SVN服务配置文件

# 设置帐号密码 vim passwd[users]块中添加用户和密码,格式:帐号=密码,如:username=123456

# 设置权限 vim authz
在末尾添加如下代码:
1. [/]  
2. username=rw  # 代表这个用户对svn的根目录有读写权限

# 修改svnserve.conf文件 vi svnserve.conf
   打开下面的几个注释:
   anon-access = none		# 匿名用户不可访问
   auth-access = write 		# 授权用户可写
   password-db = passwd	 	# 使用哪个文件作为账号文件
   authz-db = authz			 # 使用哪个文件作为权限文件
   realm = /var/svn/svntest  # 认证空间名,版本库所在目录

# 启动svn版本库 
svnserve -d -r /var/svn/repository(停止SVN命令 killall svnserve)

# 测试
# 在另一台服务器上检出我们的项目目录
[root@jenkins ~]# svn co svn://192.168.10.27:/pro_oa

# 文件已同步过来
[root@jenkins ~]# cd pro_oa/
[root@jenkins ~/pro_oa]# ls
123.txt  a.txt  test1.txt

# 创建一个文件测试提交
[root@jenkins ~/pro_oa]# touch haha.txt
[root@jenkins ~/pro_oa]# svn add haha.txt
[root@jenkins ~/pro_oa]# svn commit -m "test"
正在增加       haha.txt
传输文件数据.
提交后的版本为 4

# 然后去Windows上检出项目目录
# 安装svn客户端
svn checkout svn://192.168.10.27/pro_oa
# 可以同步过来文件
# 以后那边操作了然后提交后,另一边执行svn up 就可以同步版本
maven安装
# 官网下载安装包 http://maven.apache.org/download.cgi

# 解压
tar xf apache-maven-3.8.1-bin.tar.gz -C /usr/local/

# 配置环境变量
vim /etc/profile
export MAVEN_HOME=/usr/local/apache-maven-3.8.1
export PATH=$MAVEN_HOME/bin:$PATH
source /etc/profile

# 验证
mvn -v
配置

安装插件 Publish over SSH 、Subversion
系统配置,如果没有这个选项,注意是否安装此插件

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
新建工程
在这里插入图片描述

配置工程

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

测试
# 创建一个新文件,提交到svn
[root@localhost data]# echo 'test' >test.txt
[root@localhost data]# svn add test.txt
[root@localhost data]# svn commit -m 'test'
[root@localhost data]# ls
test.txt
# 在远程服务器上查看
[root@subversion server]# cat test.txt
test
# 发现已经同步过来了

5. jenkins+gittee自动化部署nginx

  • Jenkins服务器:123.59.173.106

    • 安装Jenkins、JDK、Maven
  • nginx服务器:43.255.31.74

    • 安装nginx、Git

安装完成之后配置

1、服务器放置项目位置克隆 Gitee 上项目

cd /
git clone https://gitee.com/whell/firsthouse.git	# 我项目位置/firsthouse

2、检查 jenkins 配置配置文件,将执行用户改成 root,不然后面可能出现执行 shell 没有权限

vim /etc/sysconfig/jenkins # 编辑文件
JENKINS_USER="root" # 改成root
systemctl restart jenkins.service # 重启服务

安装必要插件

  • gitee
  • Publish over SSH
  • Deploy to container Plugin

配置gitee
在这里插入图片描述

在这里插入图片描述

配置远程服务器

在这里插入图片描述

全局安全配置
在这里插入图片描述

全局工具配置
在这里插入图片描述
在这里插入图片描述

新建一个工程
在这里插入图片描述
配置工程
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

测试

自己弄一个nginx网站
在这里插入图片描述

在Windows上修改123.txt并提交
在这里插入图片描述

浏览器上刷一下就同步过来了
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Jenkins 的相关文章

随机推荐

  • @FeignClient服务之间调用Get请求传递对象参数

    使用feign进行服务间调用时 Get请求有多个参数的时候如何使用对象传参呢 第一步 引入pom依赖
  • unity中控制主角的移动和旋转

    在游戏中我们通常要控制玩家的移动和旋转 首先我们说一下移动 移动的本质就是在Update 或LateUpdate 中不断修改物体的position来实现移动 移动的方法有4中 1 transform Translate 第一种方法与直接修改
  • 两列表同时排序,排序后对应元素不变(用到zip打包和解包)

    number是数字 lis是要排的序列 def sort number list number lis 利用 解包方式 将一个排序好的元组 通过元组生成器再转成list list sorted list list zip sorted zi
  • 创造自己的专属免费网盘:Nextcloud

    由于百度网盘速度奇慢无比 而且同步文件夹还需要会员什么的 这对于Nextcloud来说简直就是欺负人啊 所以我们通过搭建一个Nextcloud的私有云 来解决这些问题 目录 简介 快捷安装 配置ssl 启用https 报错 意外处理 一 简
  • less动态样式语言(预处理语言)

    一 使用方法 Less是一门CSS 预处理语言 它扩展了 CSS 语言 增加了变量 Mixin 函数等特性 使 CSS 更易维护和扩展 Less 可以运行在 Node 或浏览器端 1 客户端使用 1 下载less 2 编写项目less文件
  • 红米10A 一键root教程 解锁BL 跳过168小时限制 刷面具root救黑砖刷机 解决无法解锁BL 新版本刷机

    新版本 红米10A 解锁BL 无法秒解锁BL root bootloader 要刷机 线刷救砖 获取Root权限都需要解除bootloader锁 我们称解除刷机限制的这个操作就叫解锁BL 只有解锁BL后 才可以进行刷机 刷Root权限等等一
  • Linux多进程:orphan process——孤儿进程

    孤儿进程orphan process 当父进程比子进程先结束 这样的子进程就成为了孤儿进程 每当出现一个孤儿进程 内核会把孤儿进程的父进程设置为init 托管 init进程会循环wait 孤儿进程结束 然后做剩下的善后 回收资源 因此 孤儿
  • 验证链表是否有环

    思路 声明一个快指针 一个慢指针 快指针一次走两步 慢指针一次走一步 如果快慢两个指针相遇 说明链表有环 至于为什么快慢两个指针相遇就说明链表中有环 这个牵扯到数学证明 这里就不论证了 我们直接用结论 代码实现 初始化的时候 快指针指向 h
  • SSM框架学习(三),SSM整合

    主要整合的主要整合Spring和Mybatis 将Mybatis交由Spring管理 第一步配置datasource
  • 因找不到D3DCompiler_47.dll文件导致游戏软件无法启动问题

    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题 如果是新手第一时间会认为是软件或游戏出错了 其实并不是这样 其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库 这时你可以下载这个D3DComp
  • jdbc中加载oracle驱动程序,在一个Java应用程序中使用多个Oracle JDBC驱动程序?

    我想通过JDBC连接到两个不同的Oracle数据库 一个8 0 5 0 0和一个12c 我确实有两个JDBC驱动程序 它们可以通过简单的 hello world 应用程序分别成功地连接到相应的DB 下面 我将它们都放在一个Java应用程序中
  • 【R语言】实验五 综合应用

    系列文章目录 实验一 R 语言数据结构 数据导入与数据处理 实验二 基本数据处理 实验三 数据可视化 实验四 数据分析 实验五 综合应用 实验数据 实验数据下载 1 systation 数据集 systation csv 中包含的是沈阳地铁
  • springmvc_上传图片以及显示图片到页面

    首先我使用的开发工具是IntelliJ idea 今天想做一个上传头像以及显示头像的简单功能 也在网上查询了很多资料 真的看得头大 最后还是自己鼓捣出来了 明明很简单的一个功能 先看看效果吧 需要注意的地方 1 记住要在wepapp文件目录
  • 必看,Mac苹果电脑重装系统教程

    们在使用mac电脑的过程中 因为Mac电脑长时间使用或多或少都可能会出现一些问题 这个时候我们可以选择重新安装系统来解决这些问题 Mac电脑重装系统方法其实很简单 分为两种 一种可以在线重装系统 一种可以将Mac系统制作到U盘里进行系统重装
  • ubuntu pptp

    Hi 1 安装pptp linux sudo apt get install pptp linux binutils 2 建立pptp连接 sudo pptpsetup create testvpn server 45 77 243 243
  • 在Ubuntu18.04上安装Docker CE的方法

    卸载旧版本 如果之前安装旧版本 需要先卸载 1 sudoapt get remove docker docker engine docker io containerd runc 设置仓库 更新apt包索引 1 sudoapt get up
  • Java实验3 员工管理系统

    Java实验3 员工管理系统 文章目录 Java实验3 员工管理系统 toc 1 实验要求 2 具体创建过程 3 结果展示 4 代码展示 1 实验要求 进行一个企业员工基本信息的数据库设计 使用员工信息表 部门信息表两个数据表来存放数据 选
  • SSM集成Redis的小案例

    一 详情介绍 这里是使用Window版本的Redis 将下载好的Windows版本的Redis压缩包解压到一个目录下 客户端使用的是Redis Desktop Manager 使用Redis需要启动相应的服务 操作如下图所示 备注 双击打开
  • LDAP应用技术简述

    LDAP应用技术简述 一 一 简介 a X500 目录服务 OSL X 500目录是基于OSI网络协议的目录服务协议 也是LDAP的前身 但是X 500的缺点是不支持TCP IP 而是支持OSI协议 显然 在 Windows等个人电脑上不可
  • Jenkins

    Jenkins 文章目录 Jenkins 1 Jenkins概述 Jenkins特性 2 系统集成工具 Jenkins和Hudson 3 部署方案 手动部署流程 自动化署流程 4 Jenkins svn自动部署 环境准备 yum部署Jenk