当前位置: 首页 > 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;只不过逻辑上序列最后一个数字的下一个数字就是序列的第一个数字…...

在AirSim里用Python实现LQR控制:让无人机自动跟踪预设轨迹(附完整代码)

用Python实现AirSim无人机LQR轨迹跟踪&#xff1a;从理论到代码落地 1. 环境准备与基础概念 在开始编写代码之前&#xff0c;我们需要先搭建好开发环境并理解几个核心概念。AirSim是微软开源的无人机/车辆仿真平台&#xff0c;基于Unreal Engine构建&#xff0c;提供了高度逼真…...

深入理解Java AQS:抽象队列同步器的核心原理与实战指南

深入理解Java AQS&#xff1a;抽象队列同步器的核心原理与实战指南 【免费下载链接】JavaGuide Java 面试 & 后端通用面试指南&#xff0c;覆盖计算机基础、数据库、分布式、高并发、系统设计与 AI 应用开发 项目地址: https://gitcode.com/gh_mirrors/ja/JavaGuide …...

ED-最优设计实战:如何用Python实现鲁棒实验设计(附完整代码)

ED-最优设计实战&#xff1a;如何用Python实现鲁棒实验设计&#xff08;附完整代码&#xff09; 在数据科学和工程领域&#xff0c;实验设计是优化参数估计和模型性能的关键环节。传统D-最优设计虽然经典&#xff0c;但在面对参数不确定性时往往表现不佳。本文将带你深入理解ED…...

别再手动写Excel了!用Coze+GPT-4o,5分钟把Word需求文档变成测试用例表格

从Word到Excel&#xff1a;零代码打造智能测试用例生成流水线 每次产品需求文档更新后&#xff0c;测试团队最头疼的莫过于手动编写成百上千条测试用例。传统方式下&#xff0c;测试工程师需要反复阅读PRD文档&#xff0c;逐条提取功能点&#xff0c;再按照固定模板填充到Excel…...

AQS深度探索:以ReentrantLock看Java并发编程的高效实现

在技术领域&#xff0c;我们常常被那些闪耀的、可见的成果所吸引。今天&#xff0c;这个焦点无疑是大语言模型技术。它们的流畅对话、惊人的创造力&#xff0c;让我们得以一窥未来的轮廓。然而&#xff0c;作为在企业一线构建、部署和维护复杂系统的实践者&#xff0c;我们深知…...

Qwen3-VL:30B开源大模型实践:星图平台提供模型微调+量化+蒸馏全工具链

Qwen3-VL:30B开源大模型实践&#xff1a;星图平台提供模型微调量化蒸馏全工具链 1. 开篇&#xff1a;为什么你需要一个私有化的多模态助手&#xff1f; 想象一下这个场景&#xff1a;你正在和团队讨论一个产品设计图&#xff0c;需要快速分析图片中的UI布局是否合理&#xff…...

HBuilderX+Android Studio本地离线打包Uniapp安卓Apk全流程解析

1. 为什么需要本地离线打包&#xff1f; 每次用HBuilderX云打包都要排队等半天&#xff1f;项目紧急上线时看着进度条干着急&#xff1f;作为过来人&#xff0c;我太懂这种痛苦了。去年我们团队开发医疗问诊App时&#xff0c;高峰期云打包排队超过2小时&#xff0c;差点耽误版…...

SM4算法在嵌入式平台的轻量化移植与优化实践

1. SM4算法与嵌入式平台适配挑战 SM4作为我国自主设计的商用分组密码标准&#xff0c;在物联网设备安全领域应用广泛。但直接将OpenSSL中的SM4实现移植到STM32等嵌入式平台时&#xff0c;开发者常会遇到三大难题&#xff1a; 代码体积膨胀&#xff1a;OpenSSL的SM4实现依赖大量…...

Apache Flink Agents 0.2.1 发布公告

Apache Flink 社区很高兴地宣布发布 Apache Flink Agents 0.2 系列的首个缺陷修复版本。 此版本包含 3 项缺陷和漏洞修复以及一些对Flink-Agents 0.2的小幅改进。下面列出了所有缺陷修复和改进内容&#xff08;不包括构建基础设施和构建稳定性方面的改进&#xff09;。如需查看…...

Pixel Dream Workshop 企业级部署架构:基于 Docker 的高可用方案

Pixel Dream Workshop 企业级部署架构&#xff1a;基于 Docker 的高可用方案 1. 为什么企业需要高可用部署方案 当Pixel Dream Workshop从开发测试环境走向生产环境时&#xff0c;稳定性、扩展性和可维护性就成为了关键考量。想象一下&#xff0c;当营销团队急需批量生成节日…...