当前位置:首页 > 科技  > 软件

离线部署 Jenkins 填坑指南

来源: 责编: 时间:2024-06-05 17:42:49 247观看
导读本文目录如下:一、背景在实际项目中,通过这些实践,目前已经稳定运行了两个月,现在又有了一个新项目也是需要用 Jenkins 来实现自动化部署,但新项目的部署环境是 Linux 离线环境,所以我需要在离线环境上再部署一遍。因为部署

本文目录如下:bpw28资讯网——每日最新资讯28at.com

图片bpw28资讯网——每日最新资讯28at.com

一、背景

在实际项目中,通过这些实践,目前已经稳定运行了两个月,现在又有了一个新项目也是需要用 Jenkins 来实现自动化部署,但新项目的部署环境是 Linux 离线环境,所以我需要在离线环境上再部署一遍。bpw28资讯网——每日最新资讯28at.com

因为部署 Jenkins 的机器上没有网络,所以部署的过程中遇到了很多坑,本篇文章也是为了记录期间遇到的坑,以及解决方案。bpw28资讯网——每日最新资讯28at.com

二、依赖项

部署后端项目时需要依赖 Java、Maven、Git,对应的离线包版本如下表所示。bpw28资讯网——每日最新资讯28at.com

序号
bpw28资讯网——每日最新资讯28at.com

依赖项
bpw28资讯网——每日最新资讯28at.com

版本
bpw28资讯网——每日最新资讯28at.com

1
bpw28资讯网——每日最新资讯28at.com

Linux 服务器
bpw28资讯网——每日最新资讯28at.com

建议 ubuntu 20 以上
bpw28资讯网——每日最新资讯28at.com

2
bpw28资讯网——每日最新资讯28at.com

Jenkins 离线 war 包
bpw28资讯网——每日最新资讯28at.com

2.426.1(当前最新版本)
bpw28资讯网——每日最新资讯28at.com

3
bpw28资讯网——每日最新资讯28at.com

Java 离线包,后端部署需要
bpw28资讯网——每日最新资讯28at.com

Java 11, Java 17 or Java 21
bpw28资讯网——每日最新资讯28at.com

4
bpw28资讯网——每日最新资讯28at.com

Maven 离线安装,后端部署需要
bpw28资讯网——每日最新资讯28at.com

Maven 3.8.8
bpw28资讯网——每日最新资讯28at.com

5
bpw28资讯网——每日最新资讯28at.com

Git 离线包,拉取代码
bpw28资讯网——每日最新资讯28at.com

2.9.5(当前最新版本)
bpw28资讯网——每日最新资讯28at.com

关于离线部署前端项目会放到下一讲。bpw28资讯网——每日最新资讯28at.com

三、下载 Jenkins 安装包

安装包路径:bpw28资讯网——每日最新资讯28at.com

https://get.jenkins.io/war-stable/

选择版本:2.426.1bpw28资讯网——每日最新资讯28at.com

图片图片bpw28资讯网——每日最新资讯28at.com

下载完是一个 war 包,后续用 Java 启动这个 war 包即可。bpw28资讯网——每日最新资讯28at.com

图片图片bpw28资讯网——每日最新资讯28at.com

四、安装 Java

下载 Java 17 安装包

图片图片bpw28资讯网——每日最新资讯28at.com

创建目标目录:bpw28资讯网——每日最新资讯28at.com

sudo mkdir -p /usr/local/java

复制安装包到目标目录:bpw28资讯网——每日最新资讯28at.com

sudo cp /path/to/jdk-17_linux-x64_bin.tar.gz /usr/local/java

解压安装包:bpw28资讯网——每日最新资讯28at.com

cd /usr/local/javasudo tar -xvzf jdk-17_linux-x64_bin.tar.gz

移除压缩包:bpw28资讯网——每日最新资讯28at.com

sudo rm jdk-17_linux-x64_bin.tar.gz

配置环境变量:bpw28资讯网——每日最新资讯28at.com

sudo vim /etc/profileexport PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/binexport JAVA_HOME=/usr/local/javaexport PATH=$PATH:$JAVA_HOME/bin

加载环境变量:bpw28资讯网——每日最新资讯28at.com

source /etc/profile

检查 Java 版本:bpw28资讯网——每日最新资讯28at.com

java -version

java 版本java 版本bpw28资讯网——每日最新资讯28at.com

五、启动 Jenkins

启动方式分为两种:bpw28资讯网——每日最新资讯28at.com

  • 直接启动
  • 后台静默启动

直接启动 jenkins

执行启动的命令:bpw28资讯网——每日最新资讯28at.com

java -jar jenkins.war --httpPort=8082

后台静默启动

执行启动的命令:bpw28资讯网——每日最新资讯28at.com

nohup java -jar jenkins.war --httpPort=8082 >nohup.out 2>&1 &

打开 Jenkins 站点

打开 Jenkins 站点 http://<你的服务器ip>:8082。bpw28资讯网——每日最新资讯28at.com

遇到异常,提示如下:bpw28资讯网——每日最新资讯28at.com

图片图片bpw28资讯网——每日最新资讯28at.com

java.lang.RuntimeException: Fontconfig head is null, check your fonts or fonts configuration

解决方案:bpw28资讯网——每日最新资讯28at.com

将安装了 java8 的 fontconfig.bfc 文件拷贝到 jenkins 那台服务器上的 java lib 目录下fontconfig.bfc 示例路径:C:/Program Files/Java/jre1.8.0_191/lib/fontconfig.bfc拷贝到 /usr/local/java/lib/ 目录

再次启动,运行成功。另外有一个提示无法访问 jenkins 更新网站的错误,可以忽略,因为该服务器没联网所以访问不到。bpw28资讯网——每日最新资讯28at.com

图片图片bpw28资讯网——每日最新资讯28at.com

jenkins 运行目录

另外还需要从打印的日志找到 jenkins 的运行目录,后续会用到。bpw28资讯网——每日最新资讯28at.com

如下图所示,在 /home/xxx/.jenkins 目录。bpw28资讯网——每日最新资讯28at.com

jenkins 运行目录jenkins 运行目录bpw28资讯网——每日最新资讯28at.com

该目录下有一个非常重要的目录:plugins,我们可以拷贝一些插件到这个目录里面,这样 jenkins 就可以启动这些插件了。bpw28资讯网——每日最新资讯28at.com

图片图片bpw28资讯网——每日最新资讯28at.com

六、配置 maven

下载地址:bpw28资讯网——每日最新资讯28at.com

https://maven.apache.org/download.cgi

解压文件夹:bpw28资讯网——每日最新资讯28at.com

cd /usr/localtar -zvxf /usr/local/maven/apache-maven-3.8.8-bin.tar.gzmv  apache-maven-3.8.8/* mavensudo rm -rf apache-maven-3.8.8sudo rm -rf /usr/local/maven/apache-maven-3.8.8-bin.tar.gz

添加环境变量:bpw28资讯网——每日最新资讯28at.com

sudo vim /etc/profile

配置信息:bpw28资讯网——每日最新资讯28at.com

export M2_HOME=/usr/local/mavenexport MAVEN_HOME=/usr/local/mavenexport PATH=${M2_HOME}/bin:${PATH}

加载配置bpw28资讯网——每日最新资讯28at.com

source /etc/profile

查看 maven 配置是否生效:bpw28资讯网——每日最新资讯28at.com

mvn -version

图片图片bpw28资讯网——每日最新资讯28at.com

七、配置 Git

下载安装包

网站路径:https://mirrors.edge.kernel.org/pub/software/scm/git/

拷贝到这个目录下 /usr/local/git/,如果没有 git 目录则新建一个。bpw28资讯网——每日最新资讯28at.com

sudo mkdir -p /usr/local/git

图片图片bpw28资讯网——每日最新资讯28at.com

解压 git 安装包

sudo tar -xvzf /usr/local/git/git-2.9.5.tar.gz -C /usr/local/git

编译 git

cd /usr/local/git./configure --prefix=/usr/local/gitmake && make install

提示没有 gcc 编译器:bpw28资讯网——每日最新资讯28at.com

图片图片bpw28资讯网——每日最新资讯28at.com

解决方案:离线安装依赖包。bpw28资讯网——每日最新资讯28at.com

  • 下载依赖的安装包

下载地址:https://pkgs.org/search/?q=libnl-genlbpw28资讯网——每日最新资讯28at.com

  • 安装依赖的安装包
dpkg -i xxx.deb

再次编译,提示编译成功bpw28资讯网——每日最新资讯28at.com

图片图片bpw28资讯网——每日最新资讯28at.com

图片图片bpw28资讯网——每日最新资讯28at.com

添加 git 环境变量:bpw28资讯网——每日最新资讯28at.com

export PATH=$PATH:/usr/local/git/binsource /etc/profile

查看 git 版本:bpw28资讯网——每日最新资讯28at.com

git --version

图片bpw28资讯网——每日最新资讯28at.com

八、安装 Jenkins 插件

离线环境下,不能通过直接选择插件安装的方式,所以需要将插件的离线包导入到 plugins 目录下。bpw28资讯网——每日最新资讯28at.com

  • 方式一:在线下载插件离线包并导入到 Jenkins 后台。
  • 方式二:批量拷贝同版本 Jenkins 在线安装的插件。

方式一:下载插件并导入

以下两个站点都可以在线下载插件。bpw28资讯网——每日最新资讯28at.com

https://plugins.jenkins.io/bpw28资讯网——每日最新资讯28at.com

http://updates.jenkins-ci.org/download/plugins/bpw28资讯网——每日最新资讯28at.com

安装 Git 插件

图片图片bpw28资讯网——每日最新资讯28at.com

可能会提示依赖的插件不存在,如下所示:bpw28资讯网——每日最新资讯28at.com

- Plugin is missing: structs (308.v852b473a2b8c) - Plugin is missing: workflow-scm-step (2.13) - Plugin is missing: scm-api (595.vd5a_df5eb_0e39) - Plugin is missing: mailer (408.vd726a_1130320) - Plugin is missing: credentials (2.6.1) - Plugin is missing: git-client (3.11.0) - Plugin is missing: script-security (1131.v8b_b_5eda_c328e) - Plugin is missing: workflow-step-api (622.vb_8e7c15b_c95a_) - Plugin is missing: credentials-binding (1.27.1) - Plugin is missing: ssh-credentials (1.19)

因为有些插件依赖其他插件,所以需要先将其他插件安装,如果再安装的过程中又遇到缺失其他的插件,都按这种方式处理。bpw28资讯网——每日最新资讯28at.com

方式二:批量拷贝已安装的插件

先在有网的机器上部署相同的版本的 Jenkins,然后在线安装所需插件,最后批量拷贝插件到离线的 Jenkins 插件目录下。bpw28资讯网——每日最新资讯28at.com

插件所在的目录一般在这里:bpw28资讯网——每日最新资讯28at.com

/home/<user>/.jenkins/plugins/

拷贝之后,重启 Jenkins 就会自动安装这些插件了。bpw28资讯网——每日最新资讯28at.com

九、配置全局工具

配置 Maven settings

在 Jenkins 后台系统管理->全局工具配置中添加 Maven settings 配置,如下图所示。bpw28资讯网——每日最新资讯28at.com

路径为 Maven setting 的文件路径:/usr/local/maven/conf/settings.xml。bpw28资讯网——每日最新资讯28at.com

图片图片bpw28资讯网——每日最新资讯28at.com

配置 Maven 安装

在 Jenkins 后台系统管理->全局工具配置中添加 Maven 安装配置,如下图所示。bpw28资讯网——每日最新资讯28at.com

路径为 Maven 的安装路径:/usr/local/maven/。bpw28资讯网——每日最新资讯28at.com

图片图片bpw28资讯网——每日最新资讯28at.com

配置 Java JDK

在 Jenkins 后台系统管理->全局工具配置中添加 Java 配置,如下图所示:bpw28资讯网——每日最新资讯28at.com

路径为 Java 的安装路径:/usr/local/java/。bpw28资讯网——每日最新资讯28at.com

JDK 路径配置JDK 路径配置bpw28资讯网——每日最新资讯28at.com

配置 Git

在 Jenkins 后台系统管理->全局工具配置中添加 Git 配置,如下图所示:bpw28资讯网——每日最新资讯28at.com

路径为 Java 的安装路径:/usr/bin/git。bpw28资讯网——每日最新资讯28at.com

图片图片bpw28资讯网——每日最新资讯28at.com

十、问题

问题 1、pipeline 输入框没有显示出来

F12 调试工具可以报错信息如下:bpw28资讯网——每日最新资讯28at.com

jenkins workflow-editor.js Ajax is not defined ReferenceError: Ajax is not defined

原因

插件有问题。bpw28资讯网——每日最新资讯28at.com

解决方案

替换所有插件文件。安装一个同样版本的 jenkins,并在线下载插件,并删除原 jenkins 的插件目录,然后替换全部插件文件。bpw28资讯网——每日最新资讯28at.com

问题 2、bat 命令不识别

java.io.IOException: Batch scripts can only be run on Windows nodes

原因

当前 Jenkins 部署在 Linux 系统中,所以不能识别 bat 命令。因为 bat 命令是 windows 系统使用的命令,而 sh 命令才是 linux 系统使用的命令。bpw28资讯网——每日最新资讯28at.com

解决方案

将 bat 改为 sh。bpw28资讯网——每日最新资讯28at.com

问题 3、执行 sudo 命令需要密码

SSH: EXEC: STDOUT/STDERR from command [sudo docker service update --force job-executor] ...SSH: EXEC: connectedsudo: no tty present and no askpass program specified

原因

由于 jenkins 帐号并没有开启免密码导致的。bpw28资讯网——每日最新资讯28at.com

解决方法

给jenkins添加不用密码使用sudo的权限。bpw28资讯网——每日最新资讯28at.com

sudo vi /etc/sudoers

在sudoers文件中加一行:bpw28资讯网——每日最新资讯28at.com

jenkins ALL=(ALL) NOPASSWD:ALL

问题 4、RoleBasedAuthorizationStrategy 插件问题

报错信息bpw28资讯网——每日最新资讯28at.com

SEVERE  jenkins.InitReactorRunner$1#onTaskFailed: Failed Loading global configcom.thoughtworks.xstream.mapper.CannotResolveClassException: com.michelin.cio.hudson.plugins.rolestrategy.RoleBasedAuthorizationStrategy

原因

jenkins 插件安装有问题导致无法启动 jenkinsbpw28资讯网——每日最新资讯28at.com

解决方案

修改 /home/xxx/.jenkins/config 文件bpw28资讯网——每日最新资讯28at.com

<authorizationStrategy class="hudson.security.FullControlOnceLoggedInAuthorizationStrategy">  <denyAnonymousReadAccess>true</denyAnonymousReadAccess></authorizationStrategy>

问题 5、需要更新插件版本

部分插件由于缺少依赖无法加载。要恢复这些插件提供的功能,需要修复这些问题并重启 Jenkins。

图片图片bpw28资讯网——每日最新资讯28at.com

原因

缺少插件或版本不正确。bpw28资讯网——每日最新资讯28at.com

解决方案

将对应的版本的插件 xxx.jpi 下载后,在后台上传,部署插件完成后,勾选重启 jenkins 服务。bpw28资讯网——每日最新资讯28at.com

问题 6、Git 拉取代码提示证书问题

报错信息:bpw28资讯网——每日最新资讯28at.com

server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile:

原因

缺少证书。bpw28资讯网——每日最新资讯28at.com

解决方案

跳过 Git 的证书验证。bpw28资讯网——每日最新资讯28at.com

git config --global http.sslVerify false

问题 7、配置环境变量后,找不到 sudo 命令

报错信息:bpw28资讯网——每日最新资讯28at.com

Command 'sudo' is available in '/usr/bin/sudo'

原因

环境变量配置有问题,找不到bpw28资讯网——每日最新资讯28at.com

解决方案

使用以下命令重新打开 /etc/profile 文件bpw28资讯网——每日最新资讯28at.com

/usr/bin/sudo /usr/bin/vim /etc/profile

把以下环境变量配置到 profile 中的其他环境变量之前bpw28资讯网——每日最新资讯28at.com

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

图片图片bpw28资讯网——每日最新资讯28at.com

问题 8、Jenkins 时区问题相差 8 小时

解决方案

  1. 进入 Jenkins 的系统管理页面。
  2. 点击“脚本命令行”。
  3. 执行以下命令以设置时区为北京时间:
System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone', 'Asia/Shanghai')
  1. 确保时区设置正确以便任务构建和定时构建按照北京时间触发。

十一、总结

本篇讲解了在离线环境下如何部署 Jenkins、Jenkins 插件、Maven、Java、Git 工具。bpw28资讯网——每日最新资讯28at.com

在部署的过程中遇到了很多坑,遇到一个解决一个,希望大家在以后遇到类似问题时,能根据本文档缩短排查问题的时间。bpw28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-92123-0.html离线部署 Jenkins 填坑指南

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 解决消息队列中的关键问题:消息丢失、顺序消费、消息积压与重复消费

下一篇: 前端构建工具大盘点

标签:
  • 热门焦点
  • 7月安卓手机性能榜:红魔8S Pro再夺榜首

    7月份的手机市场风平浪静,除了红魔和努比亚带来了两款搭载骁龙8Gen2领先版处理器的新机之外,别的也想不到有什么新品了,这也正常,通常6月7月都是手机厂商修整的时间,进入8月份之
  • 2023年Q2用户偏好榜:12+256G版本成新主流

    3月份的性能榜、性价比榜和好评榜之后,就要轮到2023年的第二季度偏好榜了,上半年的新机潮已经过去,最明显的肯定就是大内存和存储的机型了,另外部分中端机也取消了屏幕塑料支架
  • 6月iOS设备性能榜:M2稳居榜首 A系列只能等一手3nm来救

    没有新品发布,自然iOS设备性能榜的上榜设备就没有什么更替,仅仅只有跑分变化而产生的排名变动,毕竟苹果新品的发布节奏就是这样的,一年下来也就几个移动端新品,不会像安卓厂商,一
  • 服务存储设计模式:Cache-Aside模式

    Cache-Aside模式一种常用的缓存方式,通常是把数据从主存储加载到KV缓存中,加速后续的访问。在存在重复度的场景,Cache-Aside可以提升服务性能,降低底层存储的压力,缺点是缓存和底
  • 得物效率前端微应用推进过程与思考

    一、背景效率工程随着业务的发展,组织规模的扩大,越来越多的企业开始意识到协作效率对于企业团队的重要性,甚至是决定其在某个行业竞争中突围的关键,是企业长久生存的根本。得物
  • 从零到英雄:高并发与性能优化的神奇之旅

    作者 | 波哥审校 | 重楼作为公司的架构师或者程序员,你是否曾经为公司的系统在面对高并发和性能瓶颈时感到手足无措或者焦头烂额呢?笔者在出道那会为此是吃尽了苦头的,不过也得
  • 共享单车的故事讲到哪了?

    来源丨海克财经与共享充电宝相差不多,共享单车已很久没有被国内热点新闻关照到了。除了一再涨价和用户直呼用不起了。近日多家媒体再发报道称,成都、天津、郑州等地多个共享单
  • 认真聊聊东方甄选:如何告别低垂的果实

    来源:山核桃作者:财经无忌爆火一年后,俞敏洪和他的东方甄选依旧是颇受外界关心的&ldquo;网红&rdquo;。7月5日至9日,为期5天的东方甄选&ldquo;甘肃行&rdquo;首次在自有App内直播,
  • 信通院:小米、华为等11家应用商店基本完成APP签名及验签工作

    中国信通院表示,目前,小米、华为、OPPO、vivo、360手机助手、百度手机助手、应用宝、豌豆荚和努比亚等9家应用商店,以及抖音和快手2家新型应用分发平
Top