文章目录

  • 前言
  • 一、pandas是什么?
  • 二、安装依赖环境
    • 1.前提准备
    • 2.安装git
    • 3.安装jdk,以及jdk版本选择
    • 4.安装maven
    • 5.安装NodeJS
    • 6.验证
  • 三、安装Jenkins
  • 四、验证Jenkins
  • 总结


前言

正在学习jenkins+docker部署前后端分离项目,安装jenkins的时候遇到了一些问题,本着安装步骤重新做一下记录。


一、pandas是什么?

Jenkins 是一个开源的、基于 Java 开发的 持续集成和持续交付 (CI/CD) 工具。它的核心使命是自动化软件开发过程中的构建、测试和部署阶段,从而显著提高开发效率、软件质量和发布速度。

二、安装依赖环境

1.前提准备

提前准备好了centos7环境,网络配置成功,能够正常ping通百度。

2.安装git

输入命令

yum install -y git

3.安装jdk,以及jdk版本选择

这里jdk使用21,因为之前我用的是openjdk8,安装完以后,到jenkins找到匹配的版本是2.346.1版本
在这里插入图片描述
安装完jenkins后初始化时候插件无法下载,
问题排查一:根据日志排查发现是因为清华源开源网络禁用问题。
请求镜像源网页出现提示:我们检测到您所在的子网和/或所使用的客户端存在大量下载某些较大二进制文件的行为,为保证用户的正常使用,我们阻断了此类请求。
解决方法就是切换网络,或者使用手机热点。
切换了手机热点以后,下载插件依旧失败,
问题排查二:根据查询问题,进行镜像源的切换,进入到Jenkins > Manage Jenkins > Plugin Manager、点击Advanced页面替换Update Site的url、并submit
在这里插入图片描述
切换为了华为镜像源,下载还是失败。
问题排查三:至此我就不打算解决插件下载问题了,直接使用,有些地方没有插件无法正常使用,比如git插件,没有的话无法配置远程代码仓库。最终我只能放弃jdk8安装了jdk21安装最新版本的jenkins。具体原因到安装jenkins时介绍。
jdk21下载命令如下:

wget https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.tar.gz -P /opt/software

下载成功后通过命令解压

tar -zxvf /opt/software/jdk-21_linux-x64_bin.tar.gz

配置环境变量

vi /etc/profile

到最下面将jdk环境变量配置粘贴到最后一行,注意地址。

export JAVA_HOME=/opt/software/jdk-21.0.7
export PATH=$JAVA_HOME/bin:$PATH

执行命令使环境变量生效

source /etc/profile

4.安装maven

通过命令下载maven

wget https://mirrors.bfsu.edu.cn/apache/maven/maven-3/3.8.9/binaries/apache-maven-3.8.9-bin.tar.gz

解压maven

tar -zxvf apache-maven-3.8.8-bin.tar.gz

配置maven环境变量

vi /etc/profile

将以下配置粘贴到最后一行,注意maven地址

MAVEN_HOME=/home/soft/maven/apache-maven-3.8.8
PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin
export MAVEN_HOME PATH

执行命令使环境变量生效

source /etc/profile

修改maven配置,注意地址

vi /home/soft/maven/apache-maven-3.8.9/conf/settings.xml

修改本地仓库位置,找到localRepository标签修改内容

<localRepository>/home/soft/maven/repository</localRepository>

配置阿里云镜像加速粘贴到mirrors标签中,将原来的配置注释掉

    <!-- 国内中央仓库的配置-阿里云中央仓库 --><mirror><id>nexus-aliyun</id><mirrorOf>central</mirrorOf><name>Nexus aliyun</name><url>http://maven.aliyun.com/nexus/content/groups/public</url></mirror>

5.安装NodeJS

下载NodeJS

wget https://nodejs.org/dist/v12.18.3/node-v12.18.3-linux-x64.tar.xz

解压

tar -xvf node-v12.18.3-linux-x64.tar.xz

配置环境变量

vi /etc/profile

将以下内容粘贴到最后一行,注意地址

NODEJS_HOME=/home/soft/node-v12.18.3-linux-x64
PATH=$PATH:$NODEJS_HOME/bin
export NODEJS_HOME PATH

执行命令使环境变量生效

source /etc/profile

6.验证

输入以下命令验证安装的所需环境是否成功

java -version
git --version
mvn -v
node -v
npm -v

如下输出对应的版本信息即为成功。
在这里插入图片描述

三、安装Jenkins

https://pkg.jenkins.io/redhat-stable/ 到此网页下查看对应jenkins 和jdk的版本
在这里插入图片描述
https://mirrors.jenkins.io/war-stable/下载对应版本的jenkins
在这里插入图片描述
因为我们使用的时jdk21所以就下载最新的2.479.1点击下载war包即可
在这里插入图片描述
将war包上传到服务器对应的路径下
在war包路径下新建jenkins.sh

vi jenkins.sh
#!/bin/bash# 检查参数个数
if [ "${#}" -lt 1 ]; thenecho "\033[41;37m 脚本使用示例: sh jenkins.sh start(运行)|stop(停止)|restart(重启)  \033[0m"exit
fi# SOFT_DIR='/home/soft'# 获取脚本第一个参数
APP_OPT=${1}
# 端口
APP_PORT=10000
# 名称
APP_NAME=jenkins
# jar名 | war名
APP_JAR=${APP_NAME}.war
# 程序根目录
APP_JAR_HOME=.
# 日志名
APP_LOG_NAME=jenkins
# 日志根目录
APP_LOG_HOME=.
# 程序运行参数
JAVA_OPTS="--httpPort=${APP_PORT} --prefix=/jenkins"echo "本次操作服务名:[${APP_NAME}]"
echo "本次操作选择:[${APP_OPT}]"# 停止
function stop(){echo "<-------------------------------------->"echo "[${APP_NAME}] ... stop ..."# 查看该jar进程pid=`ps -ef | grep ${APP_JAR} | grep -v 'grep' | awk '{print $2}'`echo "[${APP_NAME}] pid="${pid}# 存在则kill,不存在打印一下吧if [ "${pid}" ]; thenkill -9 ${pid}# 检查kill是否成功if [ "$?" -eq 0 ]; thenecho "[${APP_NAME}] stop success"elseecho "[${APP_NAME}] stop fail"fielseecho "[${APP_NAME}] 进程不存在"fi
}# 运行
function start(){echo "<-------------------------------------->"echo "[${APP_NAME}] ... start ..."cd ${APP_JAR_HOME}echo "当前路径:`pwd`"# 赋予可读可写可执行权限chmod 777 ${APP_JAR}echo "启动命令: nohup java -jar ${APP_JAR} ${JAVA_OPTS} >> ${APP_LOG_HOME}/${APP_NAME}.log 2>&1 &"nohup java -jar ${APP_JAR} ${JAVA_OPTS} >> ${APP_LOG_HOME}/${APP_NAME}.log 2>&1 &if [ "$?" -eq 0 ]; thenecho "[${APP_NAME}] start success"elseecho "[${APP_NAME}] start fail"fi
}# 重启
function restart(){echo "<-------------------------------------->"echo "[${APP_NAME}] ... restart ..."stopstart
}# 多分支条件判断执行参数
case "${APP_OPT}" in"stop")stop;;"start")start;;"restart")restart;;*)echo "\033[41;37m 提示:不支持参数 命令 -> ${APP_OPT} \033[0m";;
esac

保存文件通过sh jenkins.sh start命令启动jenkins
然后通过浏览器访问IP:10000/jenkins/等待初始化,
在这里插入图片描述
安装推荐插件等待安装完成
在这里插入图片描述
用户默认使用admin即可,默认密码即为上面解锁的密码,登录成功以后可在用户管理中修改,路径jenkins->manage->securityRealm
在这里插入图片描述
在这里插入图片描述

四、验证Jenkins

点击新建任务
在这里插入图片描述
输入任务名称,创建自由风格软件
在这里插入图片描述
构建步骤这里选择执行shell
在这里插入图片描述
输入shell命令
在这里插入图片描述

java -version
git --version
mvn -v
node -v
npm -v

点击保存即可
然后点击立即构建
在这里插入图片描述
点击查看控制台输出
在这里插入图片描述
在这里插入图片描述


总结

以上就是今天要讲的内容,本文仅仅简单介绍了jenkins的安装和验证。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/88370.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/88370.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/88370.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Leetcode刷题营第二十题:删除链表中的重复节点

面试题 02.01. 移除重复节点 编写代码&#xff0c;移除未排序链表中的重复节点。保留最开始出现的节点。 示例1&#xff1a; 输入&#xff1a;[1, 2, 3, 3, 2, 1]输出&#xff1a;[1, 2, 3]示例2&#xff1a; 输入&#xff1a;[1, 1, 1, 1, 2]输出&#xff1a;[1, 2]提示&…

关于市场主流自动化测试工具和框架的简要介绍

下面我会分别讲解 Selenium、Appium、Playwright 等主流自动化框架的区别、联系、适用场景和归属范畴&#xff0c;帮助你更系统地理解它们。&#x1f527; 一、它们都属于哪一类工具&#xff1f;Selenium、Appium、Playwright、Cypress 等都属于&#xff1a;▶️ 自动化测试框架…

基于cornerstone3D的dicom影像浏览器 第三十二章 文件夹做pacs服务端,fake-pacs-server

文章目录 前言一、实现思路二、项目与代码三、dicom浏览器调用1. view2d.vue前言 本系列最后一章,提供一个模拟pacs服务,供访问dicom图像测试。 修改nodejs本地目录做为http服务根目录,提供一个根目录,其中的每个子目录代表一个检查。在dicom浏览器url中带入参数studyId=目…

【Python 核心概念】深入理解可变与不可变类型

文章目录一、故事从变量赋值说起二、不可变类型 (Immutable Types)三、可变类型 (Mutable Types)四、一个常见的陷阱&#xff1a;当元组遇到列表五、为什么这个区别如此重要&#xff1f;1. 函数参数的传递2. 字典的键 (Dictionary Keys)3. 函数的默认参数陷阱六、进阶话题与扩展…

wpf使用webview2显示网页内容(最低兼容.net framework4.5.2)

wpf使用webview2显示网页内容(最低兼容.net framework4.5.2 一、核心功能与架构混合开发支持‌进程隔离模型‌通信机制‌二、核心优势性能与兼容性‌跨平台部署‌开发效率‌安全机制‌三、适用场景四、开发部署要点WebView2 是微软推出的现代浏览器控件,基于 Chromium 内核的 …

MySQL断开连接后无法正常启动解决记录

问题现象 夜里23点MySQL在还原备份的时候断开连接&#xff0c;尝试重启&#xff0c;表面上是运行中实际上无法通过命令端连接&#xff0c;无法正常启动。 问题检查 可以使用 systemctl start mysql 但是没有监听 3306端口 mysql -ucosmic -p 提示无法找到socket文件 删除原先的…

隧道安全监测系统的应用意义

随着我国交通基础设施建设的快速发展&#xff0c;公路、铁路及城市地铁隧道数量不断增加&#xff0c;隧道安全问题日益凸显。隧道作为地下封闭空间&#xff0c;受地质条件、施工质量、运营环境等多因素影响&#xff0c;易出现结构变形、渗漏水、衬砌开裂等安全隐患。一旦发生事…

前端UI逻辑复杂可以用什么设计模式

中介者模式 当UI组件间存在复杂交互或多个组件需共享状态时&#xff0c;中介者模式能集中管理事件分发和状态更新&#xff0c;减少组件间的直接依赖&#xff0c;提升解耦性。 vue实现中介者模式 在Vue中实现中介者模式&#xff0c;你可以通过创建一个全局的事件中心&#xff08…

WIFI协议全解析05:WiFi的安全机制:IoT设备如何实现安全连接?

&#x1f510; WiFi的安全机制&#xff1a;IoT设备如何实现安全连接&#xff1f;“我的设备明明连上WiFi了&#xff0c;为什么还是能被‘蹭网’&#xff1f;” “WPA3 是什么&#xff1f;ESP32 支持吗&#xff1f;” “我做了MQTT加密就算安全了吗&#xff1f;”IoT设备连接WiF…

HTTP 请求体类型详解:选择最适合的数据提交格式

HTTP 请求体类型详解&#xff1a;选择最适合的数据提交格式 &#x1f680; 本文全面解析 HTTP 请求中不同 Content-Type 的适用场景、数据结构与优劣势&#xff0c;帮助开发者高效选择数据传输方案。 &#x1f4cc; 目录 核心请求体类型对比详细类型解析最佳实践指南总结 &am…

C语言 | 函数核心机制深度解构:从底层架构到工程化实践

个人主页-爱因斯晨 文章专栏-C语言 引言 最近偷懒了&#xff0c;迷上了三国和李贺。给大家分享一下最喜欢的一句诗&#xff1a;吾不识青天高黄地厚&#xff0c;唯见月寒日暖来煎人寿。我还不是很理解27岁的李贺&#xff0c;如何写出如此绝笔。 正文开始&#xff0c;今天我们…

uniapp真机调试“没有检测到设备,请插入设备或启动模拟器后点击刷新再试”

当真机调试&#xff0c;运行到安卓 APP基座 时&#xff0c;有时会检测不到设备&#xff0c;显示下面的问题&#xff1a;此时&#xff0c;可以通过下面的几种方法进行排查&#xff1a;1.在手机中找到“开发者选项”选项&#xff08;可在设置中搜索&#xff0c;如搜索不到&#x…

使用langchain连接llama.cpp部署的本地deepseek大模型开发简单的LLM应用

langchain是一个基于python实现的开源LLM开发框架&#xff0c;llama.cpp是一个基于C框架可以在本地部署大模型并开放服务端接口开放给外部应用使用。 本文结合langchain和llama.cpp&#xff0c;在本地部署轻量级的deepseek大模型&#xff0c;并构建一个简单的链式LLM应用&…

Serverless 数据库来了?无服务器数据库 vs 传统数据库有何不同?

随着云计算技术的迅猛发展&#xff0c;无服务器&#xff08;Serverless&#xff09;架构逐渐成为一种主流趋势。其中&#xff0c;Serverless 数据库作为云原生应用的重要组成部分&#xff0c;为开发者提供了前所未有的灵活性和成本效益。相比传统的数据库管理方式&#xff0c;S…

【读书笔记】如何画好架构图:架构思维的三大底层逻辑

【读书笔记】如何画好架构图&#xff1a;架构思维的三大底层逻辑 架构图并非技术人的“画功比拼”&#xff0c;而是一个团队、一个系统、一次项目从混沌走向清晰的关键抓手。它是系统的视觉语言&#xff0c;是让技术人员、产品经理、运营甚至老板都能站在统一上下文下讨论的“…

Maven 编译过程中发生了 Java Heap Space 内存溢出(OutOfMemoryError)

这个是我最近遇到的&#xff0c;因为本人最近换了电脑&#xff0c;这个电脑的前任是配置好了环境&#xff0c;但是当我用这个环境去做另外一个项目的时候&#xff0c;在maven构建war和jar包的时候&#xff0c;报了这个内存溢出mvn clean install 就给我报错了[ERROR] Failed to…

C++ 模板参数展开

C 模板参数展开一、获取可变参数大小二、通过模版循环继承的方式来展开可变参数三、改用Using去实现循环继承一、获取可变参数大小 背景&#xff1a; FLen<int, char, long> Len; 我想要获取模板参数类型的总大小 template<typename T,typename ...ParamTypes> c…

零基础入门物联网-远程门禁开关:云平台创建

一、 onenet云平台注册创建 远程开关的信息传输依赖云平台&#xff0c;本教程以 OneNET - 中国移动物联网开放平台为例进行操作&#xff0c;具体步骤如下&#xff1a; 1、平台账号创建 点击 OneNET - 中国移动物联网开放平台进入官网 点击页面中的 “登录” 按钮&#xff0c;…

html页面,当鼠标移开A字标就隐藏颜色框

html页面代码&#xff1a;<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><title>颜色选择器</title><style>body {font-family: "Microsoft YaHei", sans-serif;padding: 20px;}.c…

保姆级搭建harbor私有仓库与docker-ce教程与使用教程

搭建harbor仓库[rootharbor ~]# vim cat /etc/host192.168.121.12 harbor[rootharbor ~]# vim /etc/hostnameharbor导入 harbor 项目镜像[rootharbor ~]# tar -zxf harbor-v2.9.2.tgz -C /usr/local/[rootharbor ~]# cd /usr/local/harbor[rootharbor harbor]# docker load -i…