Jenkins在Linux环境下的安装与配置,包含遇到的问题以及解决方法

2023-05-16

一、Jenkins简介

Jenkins是一个开源软件项目,是基于Java开发的一种持续集成(CI)工具,用于解决持续重复的部署、监控工作;它一个开放易用的软件平台,大大简化软件的持续集成。

目前持续集成(CI)已成为许多软件开发团队的常见做法。它是一种实践,旨在缓和和稳固软件的构建过程,并且能够帮助您的团队应对如下挑战:

a. 软件构建自动化 :配置完成后,CI系统会依照预先制定的时间表,或者针对某一特定事件,对目标软件进行构建。
b.构建可持续的自动化检查 :CI系统能持续地获取新增或修改后签入的源代码,也就是说,当软件开发团队需要周期性的检查新增或修改后的代码时,CI系统会不断确认这些新代码是否破坏了原有软件的成功构建。这减少了开发者们在检查彼此相互依存的代码中变化情况需要花费的时间和精力(说直接一点也是钱啊,呵呵)。
c. 构建可持续的自动化测试 :构建检查的扩展部分,构建后执行预先制定的一套测试规则,完成后触发通知(Email,RSS等等)给相关的当事人。
d. 生成后后续过程的自动化 :当自动化检查和测试成功完成,软件构建的周期中可能也需要一些额外的任务,诸如生成文档、打包软件、部署构件到一个运行环境或者软件仓库。这样,构件才能更迅速地提供给用户使用。

部署一个CI系统需要的最低要求是,一个可获取的源代码的仓库,一个包含构建脚本的项目。
其主要用于:
1、持续的软件版本发布/测试项目。
2、监控外部调用执行的工作。

二、安装Jenkins

1、在服务器直接下载jenkins的war包

sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo

但是从海外的服务器下载非常慢,还经常失败;所以一般先在windows下载好war包(虽然也很慢,但是错了可以继续下载,而且并发操作不影响其他步骤,而且一次下载多次使用…),再传到服务器

#Tips-提高下载速度小技巧1:
电脑连手机热点,手机再打开vpn,服务节点最好选择美国;当然如果电脑有vpn就更方便了。

#Tips-提高下载速度小技巧2:
从阿里云开发者社区下载:
https://developer.aliyun.com/mirror/

2、在本地下载jenkins的war包

1)Jenkins官网地址

2)jenkins版本与jdk版本有对应,所以下载的第一步是看系统的jdk版本是多少?再找对应的jenkins。
下载页是最新的jenkins-2.361.1,要求jdk版本11或者17,我们系统是jdk8,所以一开始我就安装不上
在这里插入图片描述
jenkins过往版本的下载入口如下图
在这里插入图片描述
而且这里很贴心的写了jenkins对应的jdk版本
在这里插入图片描述

3、在linux部署jenkins

法一:jenkins本质上就是一个war包,和在linux部署普通项目类似;一般是找一个tomcat,把war包放在webapp中,启动tomcat即可。
法二:jenkins因为war包中也包含了tomcat,所以也可以像jar包一样部署,下面介绍一下这种部署方式。
1)上传jenkins.war,我这里是在usr下
在这里插入图片描述
在jenkins所在目录新建一个日志文件

vim nohup.out

保存退出

:wq

2)安装并启动Jenkins;因为jenkins默认端口是8080、一般都被占用了,这里用特定端口启动

#后台启动命令
nohup java -jar jenkins.war --httpPort=8095 >/usr/lib/jenkins/nohup.out &

#ctrl+c退出后,可以查询启动日志
tail -fn 200 nohup.out

3)在浏览器输入http://ip:8095,看到如下界面表示jenkins安装成功。
在这里插入图片描述

4、登录jenkins客户端,做基础配置

1)第一次登录需要使用初始密码。
密码在启动日志中就会打印出来,所以建议在启动时,打开实时日志(或者启动完打开日志文件夹中的catalina.out查看),就可以比较简单的找到初始密码。
在这里插入图片描述
当然,也可以在Jenkins指定的initialAdminPassword文件中查看

vim /root/.jenkins/secrets/initialAdminPassword

2)复制密码,返回浏览器将密码填入,然会点击“继续”,进入一下也页面,
我一般是“选择插件安装”,只选很少几个,后面有需要的再安装,这样可以节省时间。

当然选择“安装推荐的插件”,也可以。
在这里插入图片描述
下一步
在这里插入图片描述
这里插件即使没有安装成功也没有关系,后面可以补。可以在jenkins的客户端插件管理中自动下载,也可以从网上下载好插件安装上去,这里提供一下jenkins插件下载地址:
https://plugins.jenkins.io/

3)安装完成后,点击继续(如果有一两个没下载完,安装完成后也可以下载),创建用户
在这里插入图片描述
4)创建完成后点击“保存并完成”,一直点击“继续”,到下面界面点击“开始使用Jenkins”
在这里插入图片描述
在这里插入图片描述

5、插件安装失败解决方式

1)插件安装失败,大多都是jenkins版本与插件版本不对应导致的;如果可以安装最新版的jenkins,一般都不会有插件安装失败的问题,即使失败重新安装一下就好了。
但是现实中,公司服务器的jdk是很多项目在用,你不能随便改版本;所以只能安装匹配当前jdk版本的jenkins,进而就可能导致推荐的插件安装不上。
而且jenkins的插件,相互之间是有依赖关系的,于是有些插件安装失败会导致另外一些插件也安装失败…如此往复,会导致很多插件都安装失败,重试也不行。因为不是网络原因导致的,所以网上很多回答说,换插件下载地址是解决不了这个问题的。

2)这种情况,只有通过降低插件的版本来解决。
首先,要尽可能安装最新的jenkins,这样就不会有插件安装失败的问题;如果不行,就安装当前jdk支持的最新版本jenkins。比如,我们公司测试服务器装的是jdk1.8,jenkins支持jdk1.8的最新版本是2.356,再往后就不支持1.8了,那么就按照jenkins2.356;
其次,在jenkins插件管理中,提供的都是最新的插件,安装低版本需要在插件市场下载好、手动上传来安装。

3)比如你要安装插件Pipeline插件,发现最新的插件安装不上
在这里插入图片描述
这时你就可以点击就进入了jenkins专门的插件网站;然后选择release进入历史版本页,因为没有插件与jenkins的版本对应关系(我没找到),所以需要根据你安装版本大致估计需要往前多少;比如我安装的是jenkins2.356,那么我就下载2年前的版本;点击derect link就可下载。
在这里插入图片描述
然后在jenkins插件管理的"高级"页签下,找到手动安装,把刚才下载的hpi文件上传,点deploy部署即可
在这里插入图片描述
在这里插入图片描述

5)需要注意的是,插件相互之间有依赖关系,比如我要安装一个SSH插件,它需要先安装Credentials,再安装trilead Api,再安装SSH插件;如果前面的插件你没有,它会自动先安装前面的,而且是最新的。又因为你最新的安装不了(比如我),所以导致SSH安装失败。
这个时候,你要根据安装报错,按先后顺序安装。
在这里插入图片描述
还有就是,我安装了一个1.0.11的trilead Api,接着安装SSH,这时安装失败;报错信息说,当前这个SSH插件要求的trilead Api版本最低是1.67。那么我就需要再去找trilead Api1.67重新安装,1.67装好了、再安装后边的。
有点繁琐,但是大家也不用太担心,因为必须要安装的插件没有几个;而且这些插件的前置插件都差不多;比如Credentials,这个是证书库插件,基本每个插件都需要依赖它,但是你只要安装过一次,后面就不用再管了。

6)这里总结几个必须要的插件
Subversion 我的源码在svn上,如果源码在git上就必修要git插件;
publish over ssh 远程连接服务器
Maven Integration 多数项目需要用到maven部署
NodeJS 部署vue前端要用

三、linux环境配置

jenkins自动部署,本质上就是把代码拉取到服务器,然后打包;再把包发到指定的位置,可能在当前服务器、也可能需要传到远程服务器;最后启动。

所以为了支持打包等任务,需要在部署jenkins的服务器上安装一些项目管理工具,如后端java项目一般需要安装jdk和maven,前端vue项目需要安装nodejs,安装完成后再在jenkins全局变量中配置这些工具的信息。

在linux环境安装maven和nodejs这里就不展开说了,下面说一下,安装好之后(可能你们公司的服务器本来就有这些工具),jenkins还需要做那些配置。

1、在jenkins客户端-全局配置中,配置jdk信息

在这里插入图片描述

2、在jenkins客户端-全局配置中,配置maven信息

在这里插入图片描述
如果没有Maven配置的地方,说明Maven插件没有安装成功,先去安装插件。

3、在jenkins客户端-全局配置中,配置nodejs信息

在这里插入图片描述

结语:至此,Jenkins的安装配置全部完成,下面就该使用它进行远程项目部署了

Jenkins自动部署后端maven项目、前端vue项目

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

Jenkins在Linux环境下的安装与配置,包含遇到的问题以及解决方法 的相关文章

  • 为什么使用stream().forEach

    java8新出的循环方式stream forEach objects stream forEach p gt 最大的特点是并发执行 xff0c 对于循环内业务量比较多的场景非常适合 xff0c 比如数据库查询 xff0c 第三方接口调用等耗
  • YAPI -- API管理平台

    YAPI介绍 前后台分离开发中 xff0c 我们前后台开发人员都需要遵循接口文档 xff0c 所以接下来我们介绍一款撰写接口文档的平台 YApi 是高效 易用 功能强大的 api 管理平台 xff0c 旨在为开发 产品 测试人员提供更优雅的
  • NodeJS安装

    1 双击安装包 2 选择安装目录 选择安装到一个 xff0c 没有中文 xff0c 没有空格的目录下 xff08 新建一个文件夹NodeJS xff09 3 验证NodeJS环境变量 NodeJS 安装完毕后 xff0c 会自动配置好环境变
  • nginx

    介绍 nginx Nginx是一款轻量级的Web服务器 反向代理服务器及电子邮件 xff08 IMAP POP3 xff09 代理服务器 其特点是占有内存少 xff0c 并发能力强 xff0c 在各大型互联网公司都有非常广泛的使用 nigi
  • SpringBoot基础

    SpringBootWeb快速入门 创建SpringBoot工程 xff08 需要联网 xff09 基于Spring官方骨架 xff0c 创建SpringBoot工程 基本信息描述完毕之后 xff0c 勾选web开发相关依赖 xff08 注
  • docker Hub-Node模式运行selenium grid4,经常遇到用例运行到60%-65%时无法继续运行

    问题描述 报错第一行 INTERNALERROR gt def worker internal error self node formatted error 报错中间错误内容详情 情况一 selenium common exception
  • Postman

    Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件 Postman原是Chrome浏览器的插件 xff0c 可以模拟浏览器向后端服务器发起任何形式 如 get post 的HTTP请求 使用Postman还可以在
  • MyBatis -- 1

    创建springboot工程 创建springboot工程 xff0c 并导入 mybatis的起步依赖 mysql的驱动包 配置MyBatis 在springboot项目中 xff0c 可以编写application properties
  • java.lang.ClassNotFoundException:javax.xml.bind.DatatypeConverter【解决办法】使用jwt时报错

    遇到的问题 java lang ClassNotFoundException javax xml bind DatatypeConverter 原因 xff1a 这有可能是因为SpringBoot项目结合jwt进行登录时出现的问题 xff0
  • 开发规范--REST、统一响应结果、开发流程

    开发规范 REST REST xff08 Representational State Transfer xff09 xff0c 表述性状态转换 xff0c 它是一种软件架构风格 传统URL风格如下 xff1a http localhost
  • Java-springboot中的常见的注解

    64 RestController RestController注解相当于 64 ResponseBody和 64 Controller合在一起使用 64 Controller xff1a 将当前修饰类注入ICO容器 xff0c 也有语义化
  • 文件上传前后端实现

    前端实现 span class token tag span class token tag span class token punctuation lt span form span span class token attr name
  • SpringBoot配置文件 -- 参数配置化

    常见配置文件格式对比 SpringBoot提供了多种属性配置方式 application properties server port 61 8080 server address 61 127 0 0 1 application yml
  • JWT令牌技术

    JWT令牌 全称 xff1a JOSN Web Token https jwt io 定义了一种简介的 自包含的格式 xff0c 用于在通信双方以JSON数据格式安全的传输信息 犹豫数字签名的存在 xff0c 这些信息是可靠的 通过base
  • 拦截器Interceptor

    Interceptor拦截器入门 介绍 什么是拦截器 xff1f 是一种动态拦截方法调用的机制 xff0c 类似于过滤器 拦截器是Spring框架中提供的 xff0c 用来动态拦截控制器方法的执行 拦截器的作用 xff1a 拦截请求 xff
  • 异常处理--全局异常处理器

    异常处理方案 出现异常之后 xff0c 三层依次向上抛出 xff0c 最后交给Spring框架处理 xff0c 返回一个JSON的错误信息 在三层构架项目中 xff0c 出现了异常 xff0c 可以用以下两种方式处理 方案一 xff1a 在
  • 简单理解位运算:位与&、位或|、位非~、异或^、左移<<、右移>>

    位运算 xff0c 顾名思义 xff0c 就是对字节中的每个位进行一位一位的运算 常见的运算符有 xff1a 位与 xff08 amp xff09 位或 xff08 xff09 位非 xff08 xff09 异或 xff08 xff09 左
  • bash 脚本字符串截取表达式详细说明

    在编写linux脚本时 xff0c 有时需要操作字符串 xff0c 从一个字符串中截取一段字符串 xff0c linux系统的bash脚本截取字符串的功能比较强 xff0c 表达式丰富 xff0c 时间长了容易忘记 xff0c 因此作此笔记
  • Springboot入门 -- AOP

    一 事务 1 回顾MySQL事务管理 事务的操作主要有三步 xff1a 开启事务 xff08 一组操作开始前 xff0c 开启事务 xff09 xff1a start transaction begin 提交事务 xff08 这组操作全部成
  • SpringBoot原理篇

    1 配置优先级 优先级一次为 xff1a application properties application yml application ymal 推荐使用yml 除了配置文件属性配置 xff0c 还支持Java系统属性和命令行参数的

随机推荐

  • maven私服配置说明

    私服配置说明 使用私服 xff0c 需要在maven的settings xml配置文件中 xff0c 做如下配置 xff1a 需要在 servers 标签中 xff0c 配置访问私服的个人凭证 访问的用户名和密码 span class to
  • Git基本使用

    1 Git快速入门 1 1 Git概述 Git是一个免费的 xff0c 开源的分布式版本控制系统 xff0c 可以快速高效地处理从小型或大型的各种项目 Git易于学习 xff0c 占用空间小 xff0c 性能快得惊人 官网 xff1a ht
  • MyBatisPlus

    1 简介 官网 xff1a https www baomidou com 2 相关依赖以及配置 2 1 pom引入依赖 span class token comment lt MyBatisPlus 启动器 gt span span cla
  • 使用STM32点亮LED

    多学多练 一 题目描述二 设计思路三 寄存器实现01 时钟配置02 模式设置03 代码编写04 创建工程文件 四 HAL库实现01 安装 STM32CubeMX02 安装HAL库03 新建工程04 Keil仿真调试 五 硬件连接六 逻辑仿真
  • C语言数据结构中利用栈和队列实现回文的判断

    数据结构中栈有着极为广大的运用 xff0c 其操作特点是FILO先进后出 队列的特点是FIFO先进先出 判断回文 xff0c 回文序列很好理解 xff0c 正反来看它都一样 那我们可以巧妙的利用栈和队列特点来判断回文 xff0c 存入进抽象
  • csp202112-1 序列查询 满分AC python

    nN 61 int x for x in input split n 61 nN 0 N 61 nN 1 list1 61 0 43 int x for x in input split if int x lt N 43 N num 61
  • isPrime()函数:判断素数,构造素数表

    素数函数isPrime xff08 素数 xff1a 指在大于1的自然数中 xff0c 除了1和它自身外 xff0c 不能被其他自然数整除的数 xff09 方法一 span class token keyword int span span
  • gets()函数

    gets 函数 1 描述 C 库函数 char gets char str 从标准输入 stdin 读取一行 xff0c 并把它存储在 str 所指向的字符串中 当读取到换行符时 xff0c 或者到达文件末尾时 xff0c 它会停止 xff
  • win11系统新版edge不兼容网银如何解决【解决办法】

    由于目前国内的网银都是基于IE浏览器进行开发的 xff0c 由于微软推行Edge xff0c Win11把IE砍掉后 xff0c 会将IE的链接强制跳转到Edge上 xff0c 很多网银无法调用 xff0c 对于需要使用Web网银的用户来说
  • 如何判断输入的字符是小写字母、大写字母还是数字?

    一 比较判断 计算机中字符都有自己的ASCII码 xff0c 并且数字 xff0c 字母都有自己的范围 如下 xff1a 类型ASCII码数字0 948 57大写字母A Z65 90小写字母a z97 122 但是在编码时可能记不住ASCI
  • C语言· 实现各进制间的相互转换

    数制只是人用来计数的不同方法 xff0c 但他们所表示的量不会改变 下面我们试着用C语言来实现数制之间的转换 一 由十进制转换为其他进制 我们常用的更为熟悉的是十进制 xff0c 那我们就用十进制开始 xff08 下面用二进制举例 xff0
  • C语言——如何简单地实现四舍五入

    如何实现数的四舍五入 span class token macro property span class token directive keyword include span span class token string lt st
  • 菜鸡自学 Python 笔记(二)

    菜鸡自学 Python 笔记 xff08 二 xff09 五 xff0c 结构与语句1 选择结构 if 语句2 循环控制语句 xff08 1 xff09 while 语句 xff08 2 xff09 for 语句 xff08 3 xff09
  • 菜鸡自学 Python 笔记(三)

    菜鸡自学 Python 笔记 xff08 三 xff09 九 函数1 内置函数2 自定义函数3 带参数的函数4 函数的返回值 十 处理异常和错误1 异常捕捉2 抛出异常3 自定义异常 十一 类与对象1 创建类和实例对象2 属性的公有 私有3
  • 一篇文章学会 Python 正则表达式!

    菜鸡自学 Python 笔记 xff1a 正则表达式 一 简单理解二 re findall函数三 普通字符与元字符1 普通字符2 元字符 四 修饰符 xff08 可选标志 xff09 五 re sub函数六 re match函数七 re s
  • DOM型XSS

    gt DOM型XSS与之前两种在原理上有本质区别 xff0c 它的攻击代码并不需要服务器解析响应 xff0c 触发XSS靠的是浏览器端的DOM解析 客户端上的JavaScript脚本可以直接访问浏览器的DOM并修改页面的内容 在客户端直接输
  • 三大linux系统对比

    概述 xff1a centos作为服务器部署是第一选择 CentOS去除很多与服务器功能无关的应用 xff0c 系统简单但非常稳定 xff0c 命令行操作可以方便管理系统和应用 xff0c 丰富的帮助文档和社区的支持 ubuntu最佳的应用
  • SQL数据查询之单表查询

    目录 语句格式 选择表中的若干列 查询表中所有列 选择表中的若干元组 查询满足条件的元组 字符匹配 涉及空值的查询 多重条件查询 ORDRD BY子句 聚集函数 GROUP BY子句 语句格式 SELECT ALL DISTINCT lt
  • NVIDIA CUDA安装失败解决方法

    CUDA安装失败原因可能与显卡驱动安装有关 xff0c 之前安装的显卡驱动影响了cuda安装 xff0c 建议就是清除原本的显卡驱动安装 xff0c 自动重启 xff0c 再重新安装cuda 下载显卡驱动安装工具解压 百度网盘链接 xff1
  • Jenkins在Linux环境下的安装与配置,包含遇到的问题以及解决方法

    一 Jenkins简介 Jenkins是一个开源软件项目 xff0c 是基于Java开发的一种持续集成 xff08 CI xff09 工具 xff0c 用于解决持续重复的部署 监控工作 xff1b 它一个开放易用的软件平台 xff0c 大大