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 的相关文章

  • 归档文件系统或格式

    我正在寻找一种文件类型来存储已退役系统的档案 目前 我们主要使用 tar gz 但从 200GB tar gz 存档中查找并提取几个文件是很麻烦的 因为 tar gz 不支持任何类型的随机访问读取规定 在你明白之前 使用 FUSE 安装 t
  • 在 /dev/input/eventX 中写入事件需要哪些命令?

    我正在开发一个android需要将触摸事件发送到 dev input eventX 的应用程序 我知道C执行此类操作的代码结构如下 struct input event struct timeval time unsigned short
  • diff 文件仅比较每行的前 n 个字符

    我有2个文件 我们将它们称为 md5s1 txt 和 md5s2 txt 两者都包含a的输出 find type f print0 xargs 0 md5sum sort gt md5s txt 不同目录下的命令 许多文件被重命名 但内容保
  • 如何更改 Ubuntu 14.04 上的 php-cli 版本?

    我是 Linux 新手 在篡改时破坏了一些 php 设置 如果我执行一个包含以下内容的 php 脚本 phpinfo 它显示 php 版本为 5 6 但通过命令行 如果我运行php v它返回 7 0 版本 我想让两个版本匹配 我怎样才能修复
  • bluetoothctl 到 hcitool 等效命令

    在 Linux 中 我曾经使用 hidd connect mmac 来连接 BT 设备 但自 Bluez5 以来 这种情况已经消失了 我可以使用 bluetoothctl 手动建立连接 但我需要从我的应用程序使用这些命令 并且使用 blue
  • 从 PL/SQL 调用 shell 脚本,但 shell 以 grid 用户而非 oracle 身份执行

    我正在尝试使用 Runtime getRuntime exec 从 Oracle 数据库内部执行 shell 脚本 在 Red Hat 5 5 上运行的 Oracle 11 2 0 4 EE CREATE OR REPLACE proced
  • 在 Linux 上更快地分叉大型进程?

    在现代 Linux 上达到与 Linux 相同效果的最快 最好的方法是什么 fork execve combo 从一个大的过程 我的问题是进程分叉大约 500MByte 大 并且一个简单的基准测试只能从进程中实现约 50 个分叉 秒 比较最
  • 无法加载 JavaHL 库。- linux/eclipse

    在尝试安装 Subversion 插件时 当 Eclipse 启动时出现此错误 Failed to load JavaHL Library These are the errors that were encountered no libs
  • 抑制 makefile 中命令调用的回显?

    我为一个作业编写了一个程序 该程序应该将其输出打印到标准输出 分配规范需要创建一个 Makefile 当调用它时make run gt outputFile应该运行该程序并将输出写入一个文件 该文件的 SHA1 指纹与规范中给出的指纹相同
  • 为什么内核需要虚拟寻址?

    在Linux中 每个进程都有其虚拟地址空间 例如 32位系统为4GB 其中3GB为进程保留 1GB为内核保留 这种虚拟寻址机制有助于隔离每个进程的地址空间 对于流程来说这是可以理解的 因为有很多流程 但既然我们只有 1 个内核 那么为什么我
  • Linux中的CONFIG_OF是什么?

    我看到它在很多地方被广泛使用 但不明白在什么场景下我需要使用它 What is 配置 OF OF 的全名是什么 打开固件 这是很久以前发明的 当时苹果公司正在生产基于 PowerPC CPU 的笔记本电脑 而 Sun Microsystem
  • 大多数 Linux 系统头文件与 C++ 兼容吗?

    大多数 Linux 系统头文件 API C 兼容吗 今天我试图做这样的事情 include
  • 从 Python 调用 PARI/GP

    我想打电话PARI GP http pari math u bordeaux fr dochtml gpman html仅从Python计算函数nextprime n 对于不同的n是我定义的 不幸的是我无法得到帕里蟒蛇 http code
  • 如何在数组中存储包含双引号的命令参数?

    我有一个 Bash 脚本 它生成 存储和修改数组中的值 这些值稍后用作命令的参数 对于 MCVE 我想到了任意命令bash c echo 0 0 echo 1 1 这解释了我的问题 我将用两个参数调用我的命令 option1 without
  • 所有平台上的java

    如果您想用 java 为 Windows Mac 和 Linux 编写桌面应用程序 那么所有这些代码都相同吗 您只需更改 GUI 即可使 Windows 应用程序更像 Windows 等等 如果不深入细节 它是如何工作的 Java 的卖点之
  • 如何使用GDB修改内存内容?

    我知道我们可以使用几个命令来访问和读取内存 例如 print p x 但是如何更改任何特定位置的内存内容 在 GDB 中调试时 最简单的是设置程序变量 参见GDB 分配 http sourceware org gdb current onl
  • vector 超出范围后不清除内存

    我遇到了以下问题 我不确定我是否错了或者它是一个非常奇怪的错误 我填充了一个巨大的字符串数组 并希望在某个点将其清除 这是一个最小的例子 include
  • arm64和armhf有什么区别?

    Raspberry Pi Type 3 具有 64 位 CPU 但其架构不是arm64 but armhf 有什么区别arm64 and armhf armhf代表 arm hard float 是给定的名称Debian 端口 https
  • 尝试安装 LESS 时出现“请尝试以 root/管理员身份再次运行此命令”错误

    我正在尝试在我的计算机上安装 LESS 并且已经安装了节点 但是 当我输入 node install g less 时 出现以下错误 并且不知道该怎么办 FPaulMAC bin paul npm install g less npm ER
  • 两种情况或 if 哪个更快? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我必须制作一个 非常 轻的脚本 它将接受用户的选项并调用脚本中的函数来执行一些任务 现在我可以使用 IF 和 CASE 选项 但我想知道两

随机推荐

  • @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