当前位置: 首页 > news >正文

Jenkins安装部署(以及常见报错解决方案),jdk版本控制器sdkman

目录

零、环境介绍

一、Jenkins安装

1、插件安装以及更换插件源

 2、修改jenkins时区

二、sdkman安装(可选)

1、sdkman常用方法

2、sdkman常用方法演示

2.1、查看可用的jdk

2.2、下载jdk并切换版本

三、jenkins报错解决

1、下载sdkman后systemctl启动失败

2、 其他可能的报错

2.1、端口占用问题

2.2、用户名问题

2.3、版本兼容性问题

2.4、 防火墙问题

2.5、权限问题


零、环境介绍

Operating SystemopenEuler 22.03 (LTS-SP2)
KernelLinux 5.10.0-153.12.0.92.oe2203sp2.x86_64
ip address192.168.240.11
JDK versionjdk-17
jenkins version2.479.3-1.1

安装之前先调整防火墙:

jenkins官网给的防火墙策略:

YOURPORT=8080
PERM="--permanent"
SERV="$PERM --service=jenkins"firewall-cmd $PERM --new-service=jenkins
firewall-cmd $SERV --set-short="Jenkins ports"
firewall-cmd $SERV --set-description="Jenkins port exceptions"
firewall-cmd $SERV --add-port=$YOURPORT/tcp
firewall-cmd $PERM --add-service=jenkins
firewall-cmd --zone=public --add-service=http --permanent
firewall-cmd --reload

嫌麻烦直接关掉防火墙也行:

sudo systemctl stop firewalld
sudo systemctl disable firewalld

一、Jenkins安装

按照官网的参考文档安装即可

Jenkins安装参考文档

sudo wget -O /etc/yum.repos.d/jenkins.repo \https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key
sudo yum upgrade
# Add required dependencies for the jenkins package
sudo yum install fontconfig java-17-openjdk
sudo yum install jenkins
sudo systemctl daemon-reload
sudo systemctl start jenkins
sudo systemctl enable jenkins
sudo systemctl status jenkins

顺利安装完成的话,执行systemctl status jenkins显示以下结果:

查看jenkins版本

 

 在浏览器输入:http://192.168.240.11:8080

 管理员密码在红色的提示文件当中,填入你自己的密码

cat /var/lib/jenkins/secrets/initialAdminPassword

 安装推荐的插件,如果嫌慢也可以离线导入。

等待安装完成。

1、插件安装以及更换插件源

依次点击Dashboard--> 系统管理--> 插件管理

在底部填写国内的jenkins插件源

https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

 提交后重启jenkins,会提示有可更新的插件,将这些插件更新,最后显示No updates available

 2、修改jenkins时区

 依次点击Dashboard -->系统管理--> Script Console

 填入以下内容,底部运行结果显示Result: Asia/Shanghai

 System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone', 'Asia/Shanghai')

 

二、sdkman安装(可选)

sdk官方下载网址

yum install -y tar
curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
sdk version

查看sdk版本,检验是否下载完毕:

1、sdkman常用方法

sdkman官方使用指南

  • 查看SKDMAN版本号: sdk version
  • 列出可用的SDK列表: sdk list
  • 安装特定的SDK: sdk install <sdk-name> <version>,例如,安装Java 8: sdk install java 8.0.292.hs-adpt
  • 切换SDK版本: sdk use <sdk-name> <version>,例如,切换到Java 9: sdk use java 9.0.7-zulu
  • 设置默认的SDK版本: sdk default <sdk-name> <version>,例如,设置Java 8为默认版本: sdk default java 8.0.292.hs-adpt
  • 卸载SDK: sdk uninstall <sdk-name> <version>,例如,卸载Java 9: sdk uninstall java 9.0.7-zulu
  • 更新SDKMAN: sdk upgrade
  • 清除旧版本的SDK: sdk flush archives sdk flush temp

以上为SDKMAN的基本使用命令,如果想要更多指令,可以输入sdk help来查看全部的指令内容。

2、sdkman常用方法演示

2.1、查看可用的jdk

sdk list java

下载java 17.0.14-zulu

下载之前,先看看Java二进制文件所在路径

which java

 [root@openEuler-1 ~]# which java
/usr/bin/java

 之所以查看这个路径,是因为安装了sdkman,并且切换jdk版本后,默认的java二进制文件路径会变更为/root/.sdkman/candidates/java/current/bin/java,稍后验证。

2.2、下载jdk并切换版本

sdk install  java 17.0.14-zulu

查看jdk版本

java -version

[root@openEuler-1 ~]# java -version
openjdk version "17.0.14" 2025-01-21 LTS
OpenJDK Runtime Environment Zulu17.56+15-CA (build 17.0.14+7-LTS)
OpenJDK 64-Bit Server VM Zulu17.56+15-CA (build 17.0.14+7-LTS, mixed mode, sharing)

初次下载会自动切换,现在我的机器jdk版本由17.0.11变为17.0.14

三、jenkins报错解决

1、下载sdkman后systemctl启动失败

我们刚才切换了jdk版本后,虽然jdk版本由17.0.11变为17.0.14,但是同为jdk-17,应该不会出错

尝试重启Jenkins,发现的确没有出错。

但是,有时编译安装jdk后,再下载sdkman,可能会有如下报错:

关键提示:Unit jenkins.service not found

 意思是jenkins服务单元没有找到,原因是因为systemctl启动时调用的jenkins.service文件在/usr/lib/systemd/system目录下,无法调用/etc/init.d/下的jenkins。所以如果遇到服务方式无法启动jenkins,则需要修改jenkins.service来进行适配:

vim /usr/lib/systemd/system/jenkins.service

添加或者去掉注释修改以下内容:

Environment="JAVA_HOME=/root/.sdkman/candidates/java/current/bin/java"

 添加的内容其实就是,sdkman给我们修改的java二进制文件路径

重载并重启jenkins发现错误解决了:

systemctl daemon-reload
systemctl start jenkins
systemctl status jenkins

2、 其他可能的报错

2.1、端口占用问题


查看/etc/sysconfig/jenkins的JENKINS_PORT="8080”或者/usr/lib/systemd/system/jenkins.service的Environment="JENKINS_PORT=8080"

grep -i jenkins_port= /usr/lib/systemd/system/jenkins.service
ps -aux | grep 8080



vim /usr/lib/systemd/system/jenkins.service

把/usr/lib/systemd/system/jenkins.service的Environment="JENKINS_PORT=8080"改为你当前linux空闲的端口,然后重启jenkins

systemctl daemon-reload
systemctl start jenkins.service
systemctl stop jenkins.service
systemctl status jenkins.service

2.2、用户名问题

 查看/etc/sysconfig/jenkins或者/usr/lib/systemd/system/jenkins.service的JENKINS_USER="root",如果不是root,而是jenkins或者其它,要改成root。或者相反操作。

vim /usr/lib/systemd/system/jenkins.service
User=root
Group=root
systemctl daemon-reload
systemctl start jenkins.service
systemctl stop jenkins.service
systemctl status jenkins.service

2.3、版本兼容性问题

检查当前的jdk版本是否对应jenkins版本,不符合兼容性就切换jdk到对应版本。如何选择jdk版本或者jenkins版本参考jenkins官方文档:

Java Support Policy

2.4、 防火墙问题

文章开头已经讲过了,如果开始放行的是8080端口,你后面又改为了其他端口,自己配置对应的防火墙策略即可。

2.5、权限问题

如果使用jenkins用户和jenkins组的身份来启动jenkins服务,有可能因为jenkins用户的权限低而不能读取有关文件而导致启动失败,我们给jenkins用户提权即可。

echo "jenkins ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
sudo chown -R jenkins:jenkins /var/lib/jenkins
sudo chown jenkins:jenkins /usr/share/java/jenkins.war

不同版本的路径可能不同,可以使用find找出。

相关文章:

Jenkins安装部署(以及常见报错解决方案),jdk版本控制器sdkman

目录 零、环境介绍 一、Jenkins安装 1、插件安装以及更换插件源 2、修改jenkins时区 二、sdkman安装&#xff08;可选&#xff09; 1、sdkman常用方法 2、sdkman常用方法演示 2.1、查看可用的jdk 2.2、下载jdk并切换版本 三、jenkins报错解决 1、下载sdkman后systemc…...

利用JSON数据类型优化关系型数据库设计

利用JSON数据类型优化关系型数据库设计 前言 在关系型数据库中&#xff0c;传统的结构化存储方式要求预先定义好所有的列及其数据类型。 然而&#xff0c;随着业务的发展&#xff0c;这种设计可能会显得不够灵活&#xff0c;尤其是在需要扩展单个列的描述功能时。 JSON数据…...

Nxopen 直齿轮参数化设计

NXUG1953 Visualstudio 2019 参考论文&#xff1a; A Method for Determining the AGMA Tooth Form Factor from Equations for the Generated Tooth Root Fillet //FullGear// Mandatory UF Includes #include <uf.h> #include <uf_object_types.h>// Internal I…...

线程配置经验

工作时&#xff0c;时常会遇到&#xff0c;线程相关的问题与解法&#xff0c;本人会持续对开发过程中遇到的关于线程相关的问题及解决记录更新记录在此篇博客中。 目录 一、线程基本知识 1. 线程和进程 二、问题与解法 1. 避免乘法级别数量线程并行 1&#xff09;使用线程池…...

火语言RPA--KimiAiFree服务

&#x1f6a9;【组件功能】&#xff1a;KimiAiFree服务支持联网搜索、支持智能体对话、支持长文档解读、支持图像OCR。 配置预览 配置说明 服务地址 支持T或# 自行搭建或第三方提供的KimiAiFree服务地址。 RefreshToken 支持T或# 与KimiAiFree服务交互时用到的token。从ki…...

P6120 [USACO17JAN] Hoof, Paper, Scissor S

难度&#xff1a;普及/提高−&#xff1b; 题意&#xff1a; ​ 石头、剪刀、布游戏&#xff0c;先给出 n n n 轮已经知道的其中一人的对局情况&#xff0c;例如样例&#xff1a; 5 P - 布 P - 布 H - 石头 P - 布 S - 剪刀另外一人&#xff0c;只允许修改一次机会的情况下…...

Android Studio打包APK

1.导出APK安装包 如果是首次打包&#xff0c;Create new 单击蓝色对话框右边文件夹&#x1f4c2;图标 &#xff0c;选择密钥保存路径&#xff0c;然后在下方File name对话框中填写您想要名称&#xff0c;再点击OK回到密钥创建对话框。 在此对话框中填写密码&#xff08;Passwo…...

08 比特币通用技术介绍

比特币分层 比特币区块结构 存储结构 区块是比特币存储交易的结构&#xff0c;一个区块总是指向其父节点。 一个区块包含三个字段&#xff1a;区块头、区块交易数量、交易列表。交易数量受到区块大小限制&#xff0c;输入、输出数量和脚本都会占用区块空间&#xff0c;矿工往…...

拟合损失函数

文章目录 拟合损失函数一、线性拟合1.1 介绍1.2 代码可视化1.2.1 生成示例数据1.2.2 损失函数1.2.3 绘制三维图像1.2.4 绘制等高线1.2.5 损失函数关于斜率的函数 二、 多变量拟合2.1 介绍2.2 代码可视化2.2.1 生成示例数据2.2.2 损失函数2.2.3 绘制等高线 三、 多项式拟合3.1 介…...

二进制安卓清单 binary AndroidManifest - XCTF apk 逆向-2

XCTF 的 apk 逆向-2 题目 wp&#xff0c;这是一道反编译对抗题。 题目背景 AndroidManifest.xml 在开发时是文本 xml&#xff0c;在编译时会被 aapt 编译打包成为 binary xml。具体的格式可以参考稀土掘金 MindMac 做的类图&#xff08;2014&#xff09;&#xff0c;下面的博…...

在线免费快速无痕去除照片海报中的文字logo

上期和大家分享了用photoshop快速无痕去除照片海报中的文字logo的方法&#xff0c;有的同学觉得安装PS太麻烦&#xff0c;有那下载安装时间早都日落西山了&#xff0c;问有没有合适的在线方法可以快速去除&#xff1b;达芬奇上网也尝试了几个网站&#xff0c;今天分享一个对国人…...

引领未来科技潮流:Web3 前沿发展趋势

随着技术不断发展&#xff0c;我们正站在一个全新的互联网时代的门槛上&#xff0c;Web3的出现正在重新定义互联网的构架和运作方式。Web3&#xff0c;作为互联网的下一代发展趋势&#xff0c;其核心思想是去中心化、开放与用户主权。与现有的Web2.0相比&#xff0c;Web3更加注…...

【番外篇】鸿蒙扫雷天纪:运混沌灵智勘破雷劫天局

大家好啊&#xff0c;我是小象٩(๑ω๑)۶ 我的博客&#xff1a;Xiao Xiangζั͡ޓއއ 很高兴见到大家&#xff0c;希望能够和大家一起交流学习&#xff0c;共同进步。 这一节课我们不学习新的知识&#xff0c;我们来做一个扫雷小游戏 目录 扫雷小游戏概述一、扫雷游戏分析…...

08.OSPF 特殊区域及其他特性

OSPF 特殊区域及其他特性 一. 前言OSPF的四个特殊区域Stub末梢区域Totally Stub完全末梢区域NSSATotally NSSA完全的NSSA二.Stub 区域和 Totally Stub 区域(1)网络规模变大引发的问题(2)传输区域和末端区域(3)Stub 区域(4)Totally Stub 区域三.NSSA 区域和 Totally NSS…...

人工智能在医疗领域的应用有哪些?

人工智能在医疗领域的应用十分广泛&#xff0c;涵盖了诊断、治疗、药物研发等多个环节&#xff0c;以下是一些主要的应用&#xff1a; 医疗影像诊断 疾病识别&#xff1a;通过分析 X 光、CT、MRI 等影像&#xff0c;人工智能算法能够识别出肿瘤、结节、骨折等病变&#xff0c;…...

c#使用Confluent.Kafka实现生产者发送消息至kafka(远程连接kafka发送消息超时的解决 Local:Message timed out)

水一篇&#xff1a; 参考&#xff1a;c#使用Confluent.Kafka实现生产者发送消息至kafka&#xff08;远程连接kafka发送消息超时的解决 Local&#xff1a;Message timed out&#xff09; - 寒冰之光 - 博客园 该死的Kafka&#xff0c;远程连接Kafka超时以及解决办法 - 博客王大…...

【2025年数学建模美赛F题】(顶刊论文绘图)模型代码+论文

全球网络犯罪与网络安全政策的多维度分析及效能评估 摘要1 Introduction1.1 Problem Background1.2Restatement of the Problem1.3 Literature Review1.4 Our Work 2 Assumptions and Justifications数据完整性与可靠性假设&#xff1a;法律政策独立性假设&#xff1a;人口统计…...

DeepSeek 的背景介绍

在全球人工智能大模型蓬勃发展的浪潮中&#xff0c;DeepSeek 宛如一颗耀眼的新星&#xff0c;迅速崛起并吸引了众多关注的目光。它的出现不仅为人工智能领域注入了新的活力&#xff0c;也在一定程度上改变了行业的竞争格局。 一、创立背景与资金支持 DeepSeek&#xff0c;中文…...

Meta 计划 2025 年投资 650 亿美元推动 AI 发展

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…...

信息学奥赛一本通 2110:【例5.1】素数环

【题目链接】 ybt 2110&#xff1a;【例5.1】素数环 【题目考点】 1. 深搜回溯 2. 质数 【解题思路】 1~n的数字构成一个环&#xff0c;要求相邻数字加和必须是质数。 该题最终输出的是一个序列&#xff0c;只不过逻辑上序列最后一个数字的下一个数字就是序列的第一个数字…...

3.3.1_1 检错编码(奇偶校验码)

从这节课开始&#xff0c;我们会探讨数据链路层的差错控制功能&#xff0c;差错控制功能的主要目标是要发现并且解决一个帧内部的位错误&#xff0c;我们需要使用特殊的编码技术去发现帧内部的位错误&#xff0c;当我们发现位错误之后&#xff0c;通常来说有两种解决方案。第一…...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面

代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口&#xff08;适配服务端返回 Token&#xff09; export const login async (code, avatar) > {const res await http…...

【C语言练习】080. 使用C语言实现简单的数据库操作

080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...

AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别

【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而&#xff0c;传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案&#xff0c;能够实现大范围覆盖并远程采集数据。尽管具备这些优势&#xf…...

DingDing机器人群消息推送

文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人&#xff0c;点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置&#xff0c;详见说明文档 成功后&#xff0c;记录Webhook 2 API文档说明 点击设置说明 查看自…...

MySQL JOIN 表过多的优化思路

当 MySQL 查询涉及大量表 JOIN 时&#xff0c;性能会显著下降。以下是优化思路和简易实现方法&#xff1a; 一、核心优化思路 减少 JOIN 数量 数据冗余&#xff1a;添加必要的冗余字段&#xff08;如订单表直接存储用户名&#xff09;合并表&#xff1a;将频繁关联的小表合并成…...

比较数据迁移后MySQL数据库和OceanBase数据仓库中的表

设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...

android13 app的触摸问题定位分析流程

一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...

人工智能--安全大模型训练计划:基于Fine-tuning + LLM Agent

安全大模型训练计划&#xff1a;基于Fine-tuning LLM Agent 1. 构建高质量安全数据集 目标&#xff1a;为安全大模型创建高质量、去偏、符合伦理的训练数据集&#xff0c;涵盖安全相关任务&#xff08;如有害内容检测、隐私保护、道德推理等&#xff09;。 1.1 数据收集 描…...

系统掌握PyTorch:图解张量、Autograd、DataLoader、nn.Module与实战模型

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文通过代码驱动的方式&#xff0c;系统讲解PyTorch核心概念和实战技巧&#xff0c;涵盖张量操作、自动微分、数据加载、模型构建和训练全流程&#…...