ky10.aarch64安装Jenkins

参考地址:《安装部署 Jenkins》

前言

有war包和rpm两种安装方式,如果是长期使用更加推荐rpm的安装方式,可以更好的管理Jenkins;
我此次安装jenkins主要用于测试和简单的个人使用,所以选择更轻便的war安装。

1 下载Jenkins

下载地址:https://get.jenkins.io/war-stable/

1.1 版本选择

jekins 选择2.4以上,尽量使用新的版本,这样可以更好的安装插件!
我这里选择:2.426
jdk版本要求:jdk11 以上
jdk下载安装地址:毕昇JDK 11 安装指南

2 安装

2.1.需要先安装jdk11

根据毕昇JDK 11 安装指南安装即可。

2.2 安装Jenkins

直接上传war包,使用命令运行:

nohup /opt/env/bisheng-jdk-11.0.22/bin/java -Dhudson.model.DownloadService.noSignatureCheck=true -jar /usr/lib/jenkins/jenkins.war  --httpPort=8080 > /var/log/jenkins/jenkins.log 2>&1 &

命令解释:

nohup:
nohup 是一个用于忽略 Hangup 信号的命令,它可以让命令在后台持续运行,即使用户退出登录或者关闭终端窗口。/opt/env/bisheng-jdk-11.0.22/bin/java:
这部分是指定了 Java 所在的路径,表明要使用该路径下的 Java 运行 Jenkins。-Dhudson.model.DownloadService.noSignatureCheck=true:
这是 Java 虚拟机参数,通过 -D 参数传递给 Java 应用程序。在这里设置了一个 Hudson 模块的属性,用于禁用 Jenkins 下载服务的签名检查。-jar /usr/lib/jenkins/jenkins.war:
-jar 参数告诉 Java 运行时要执行的 jar 文件是 /usr/lib/jenkins/jenkins.war,这启动了 Jenkins 服务。--httpPort=8080:
这个参数指定了 Jenkins 服务监听的端口号,这里设置为 8080。> /var/log/jenkins/jenkins.log 2>&1:
这部分是将标准输出(stdout)和标准错误输出(stderr)重定向到指定的日志文件 /var/log/jenkins/jenkins.log 中。> 表示将标准输出重定向,2>&1 则表示将标准错误输出重定向到标准输出,也就是都输出到同一个日志文件中。&:
最后的 & 符号表示将命令放入后台运行,这样即使关闭终端窗口,Jenkins 服务也会继续在后台运行。

3 使用Jenkins

启动完之后,就可以访问Jenkins
访问地址:http://ip:8080/

3.1 修改配置

修改插件的下载源为清华大学的镜像源:

1.修改配置文件中插件的下载源

# 目录
cd /root/.jenkins/updatessed -i 's#https://updates.jenkins.io/download#https://mirrors.tuna.tsinghua.edu.cn/jenkins#g' default.json && sed -i 's#http://www.google.com#https://www.baidu.com#g' default.json

2、修改升级站点的URL地址

Dashboard -> Manage Jenkins->Plugins ->Advanced settings->Update Site
在这里插入图片描述

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

3.2 安装插件

在这里插入图片描述

Generic Webhook Trigger:通用 Webhook 触发器,用于通过 Webhook 触发自动化流水线的执行。

GitLab:代码托管平台,用于管理源代码、协作开发以及触发 CI/CD 流水线等。

JavaMail API:Java 邮件 API,用于在 Java 应用程序中发送和接收电子邮件。

Pipeline:流水线,通常指 CI/CD 流水线,用于自动化构建、测试和部署应用程序。

Publish Over SSH:通过 SSH 进行发布,可以在流水线中使用 SSH 协议将构建好的应用程序发布到远程服务器。

SSH server:SSH 服务器,用于通过 SSH 连接进行远程访问和操作。

Workspace Cleanup Plugin:工作空间清理插件,用于在流水线执行结束后清理工作空间,释放资源并保持环境整洁。

3.2.1 兼容性问题

如果遇到 Jenkins版本过低无法安装的情况:

Some plugins could not be loaded due to unsatisfied dependencies. Fix these issues and restart Jenkins to re-enable these plugins.Dependency errors:Credentials Binding Plugin (657.v2b_19db_7d6e6d)
Jenkins (2.414.3) or higher required
JSON Api Plugin (20240303-41.v94e11e6de726)
Jenkins (2.414.3) or higher required
Mina SSHD API :: Core (2.12.0-90.v9f7fb_9fa_3d3b_)
Jenkins (2.361.4) or higher required
Jakarta Activation API (2.1.3-1)
Jenkins (2.361.4) or higher required
Credentials Plugin (1337.v60b_d7b_c7b_c9f)
Jenkins (2.426.3) or higher required
Mina SSHD API :: Common (2.12.0-90.v9f7fb_9fa_3d3b_)
Jenkins (2.361.4) or higher required
ASM API Plugin (9.6-3.v2e1fa_b_338cd7)
Jenkins (2.401.3) or higher required
Caffeine API Plugin (3.1.8-133.v17b_1ff2e0599)
Jenkins (2.361.4) or higher required

手动安装:
搜索所需插件,点击进入,找到较低的版本(自己大概推测一下),点击下载:
在这里插入图片描述
然后上传安装包,手动部署:
在这里插入图片描述

3.2.2 配置构建工具

Dashboard -> Manage Jenkins->Tools

3.2.2.1 配置jdk

在这里插入图片描述

3.2.2.2 配置git

在这里插入图片描述
问题:权限不够

Caused by: java.io.IOException: Cannot run program "/opt/env/git/bin" (in directory "/root/.jenkins/workspace/gateway"): error=13, 权限不够at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1128)at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1071)at hudson.Proc$LocalProc.<init>(Proc.java:252)at hudson.Proc$LocalProc.<init>(Proc.java:221)at hudson.Launcher$LocalLauncher.launch(Launcher.java:994)at hudson.Launcher$ProcStarter.start(Launcher.java:506)at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:2839)

解决:配置git的目录需要配置到执行文件git

/opt/env/git/bin/git
3.2.2.3 配置maven

在这里插入图片描述

3.3 构建项目

3.3.1 新建项目

在这里插入图片描述
选择pipeline
在这里插入图片描述
勾选 “Discard old builds” 选项并配置相应的参数,这些参数通常包括:
“Max # of builds to keep”:指定要保留的构建数量。
“Days to keep builds”:指定保留构建的天数。
“Artifacts to keep”:选择是否保留构建产生的构件。
在这里插入图片描述

3.3.2 编写流水线代码

在这里插入图片描述
点击流水线语法,去生成代码:
在这里插入图片描述
选择:checkout: Check out from version control
填写仓库地址、账号密码、要拉取的分支

在这里插入图片描述
然后点击生成:
在这里插入图片描述

checkout scmGit(branches: [[name: '*/2.0.0']], extensions: [], gitTool: 'git-2.36.6', userRemoteConfigs: [[credentialsId: '12fg45fgf45-535e-49ffe-8f2a-ac4045634fedc', url: 'http://192.10.80.100/xxx-xx/xx-xx-xxx.git']])

生成要执行的shell命令:
在这里插入图片描述

sh 'mvn clean package -Dmaven.offline=true -Dmaven.test.skip=true -Pcreatezip'

完整的后端编译构建流水线代码:

pipeline {agent anyenvironment {startTime=new Date().getTime()// 工程名projectName="$JOB_NAME"// git仓库地址gitUrl='http://132.17.78.138/xxxx/xxxx.git'// 拉取分支gitBranch='master'// git用户凭证gitCredentialsId='dfffg-535e-498e-8f2a-fgfg4545455'}options {skipDefaultCheckout(true)}stages{stage('拉取代码'){steps {step([$class: 'WsCleanup'])checkout([$class: 'GitSCM', branches: [[name: '*/2.0.0']], doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'project']], submoduleCfg: [], userRemoteConfigs: [[credentialsId: "${gitCredentialsId}", url: "${gitUrl}"]]])sh "mv project/* ./"}}stage('编译及单元测试'){steps {sh 'mvn clean package -Dmaven.offline=true -Dmaven.test.skip=true -Pcreatezip'}}}}

前端流水线

pipeline {agent anyenvironment {startTime=new Date().getTime()// 工程名projectName="$JOB_NAME"// git仓库地址gitUrl='http://132.17.78.138/xxxx/xxxx.git'// 拉取分支gitBranch='master'// git用户凭证gitCredentialsId='dfffg-535e-498e-8f2a-fgfg4545455'}options {skipDefaultCheckout(true)}stages{stage('拉取代码'){steps {step([$class: 'WsCleanup'])checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'project']], submoduleCfg: [], userRemoteConfigs: [[credentialsId: "${gitCredentialsId}", url: "${gitUrl}"]]])sh "mv project/* ./"}}stage('编译及单元测试'){steps {sh 'rm -rf package-lock.json'sh 'npm install --legacy-peer-deps'sh 'npm run build'}}}}

4 部署遇到的问题

4.1.前端项目的依赖一直拉取不下来:

设置代理镜像:

yarn config set registry https://registry.npmmirror.com
yarn config get registrynpm config set registry https://registry.npmmirror.com
npm config get registry

其他镜像源:

# 腾讯
https://mirrors.cloud.tencent.com/npm/
# cnpm
https://r.cnpmjs.org/
# 安装 nrm npm 源地址管理工具
[root@localhost ~]# npm i -g nrm[root@localhost ~]# nrm lsnpm ---------- https://registry.npmjs.org/yarn --------- https://registry.yarnpkg.com/tencent ------ https://mirrors.cloud.tencent.com/npm/cnpm --------- https://r.cnpmjs.org/taobao ------- https://registry.npmmirror.com/npmMirror ---- https://skimdb.npmjs.com/registry/
[root@localhost ~]#  nrm use taobao

4.2 证书过期

FetchError: request to https://registry.npm.taobao.org/@babel%2fcore failed, reason: certificate has expired

忽略证书过期

npm config set strict-ssl false -g

4.3 换源后还是拉取镜像超时

[root@localhost ~]# npm install -g pnpm
npm ERR! code ETIMEDOUT
npm ERR! syscall connect
npm ERR! errno ETIMEDOUT
npm ERR! network request to https://cdn.npmmirror.com/packages/pnpm/8.15.4/pnpm-8.15.4.tgz failed, reason: connect ETIMEDOUT 117.34.40.215:443

如果由于网络不稳定,换源还是拉取不下来,直接在其他机器进行构建,构建成功后,复制构建成功后的node_modules包过来,直接放到项目下

	stage('编译及单元测试'){steps {sh 'rm -rf package-lock.json'sh 'cp ../node_modules.tar ./'sh 'tar -xvf node_modules.tar'sh 'npm install --legacy-peer-deps'sh 'npm run build'}}

–legacy-peer-deps 是在使用 npm 安装包时的一个选项,用于指示 npm 在处理依赖关系时采用旧的对等依赖解析方式。在新版本的 npm 中,默认情况下会强制进行对等依赖检查,如果发现对等依赖不匹配则会报错。而使用 --legacy-peer-deps 选项可以告诉 npm 使用旧的行为,允许安装依赖即使对等依赖不匹配。

如果没遇到依赖不匹配报错的问题可以不用加

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

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

相关文章

网络安全知识核心之ARP协议

概述 地址解析协议&#xff0c;即 ARP&#xff08;Address Resolution Protocol&#xff09;&#xff0c;是根据 IP 地址获取物理地址的一个TCP/IP 协议。 发送 ARP 请求的以太网数据帧 广播 到以太网上的每个主机&#xff0c;ARP 请求帧中包含了目的主机的 IP 地址。 目的主…

RK3568基于openHarmony3.2版本之GT911触摸屏调试成功

RK3568基于openHarmony3.2版本之GT911触摸屏 开发环境调试过程HDF架构配置内核配置(选择性配置)效果展示总结开发环境 ubuntu版本:20.04 openharmony版本:3.2.4-release 核心板:RK3568 触摸屏型号:GT911 博主想说句话:太太太不容易了,这源码的坑不是一般的多,在总结那…

每日一题 --- 209. 长度最小的子数组[力扣][Go]

长度最小子数组 题目&#xff1a; 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 连续 子数组 [numsl, numsl1, ..., numsr-1, numsr] &#xff0c;并返回其长度**。**如果不存在符合条件的子数组&#xff0c…

C++检测多显示器并把窗口显示在不同显示器上(完整源码)

初级代码游戏的专栏介绍与文章目录-CSDN博客 早先大部分应用都不考虑多显示的问题。 如果是多窗口应用&#xff0c;子窗口不会被限制在父窗口里面的&#xff0c;可以轻松把窗口拖到不同的显示器上。 但是很多流行的界面都是一个全屏主窗口&#xff0c;然后其他窗口都只能在主窗…

【docker】查看并拷贝容器内文件

一、查询容器 查询所有容器 docker ps查询名为os11的容器 docker ps | grep os11查询名为os11的容器&#xff08;包含不运行的&#xff09; docker ps -a| grep os11 docker ps [option] 显示结果介绍如下&#xff1a; 参考&#xff1a;[https://blog.51cto.com/u_15009374/31…

Linux离线部署gitLab及使用教程

一、下载gitLab的linux系统rpm包 地址&#xff1a;Index of /gitlab-ce/yum/el7/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 找到这个最新版 点击下载 二、上传到linux系统 笔者是在windows系统下的vmware虚拟机中部署安装的&#xff0c;虚拟机中安装了cent…

腾讯在GDC 2024展示GiiNEX AI游戏引擎现已投入《元梦之星》中开发使用,展示强大AIGC能力

在近日举行的GDC 2024游戏开发者大会上&#xff0c;腾讯揭开了其AI Lab团队精心打造的GiiNEX AI游戏引擎的神秘面纱。这款引擎依托先进的生成式AI和决策AI技术&#xff0c;为游戏行业带来了革命性的变革。 相关阅读&#xff1a;腾讯游戏出品&#xff01;腾讯研效AIGC&#xff…

【DataWhale学习】用免费GPU线上跑chatGLM、SD项目实践

用免费GPU线上跑chatGLM、SD项目实践 ​ DataWhale组织了一个线上白嫖GPU跑chatGLM与SD的项目活动&#xff0c;我很感兴趣就参加啦。之前就对chatGLM有所耳闻&#xff0c;是去年清华联合发布的开源大语言模型&#xff0c;可以用来打造个人知识库什么的&#xff0c;一直没有尝试…

分别使用TCP/UDP实现互相实时发送消息,接收消息功能

什么是TCP? TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层协议。它是互联网协议套件中的一部分,用于在网络上可靠地传输数据。TCP协议的主要特点包括: 面向连接:在TCP通信中,通信双方在通信之前必须先建立连接。连接建立后,数据传输完成后还需要显式…

Apache James数据库存储用户信息的密码加密问题

项目场景 Apache James邮件服务器使用数据库来存储用户信息的密码加密问题&#xff1a; 将James的用户改为数据库存储James密码是如何加密验证的 1.将James的用户改为数据库存储 1、修改存储方式 找到james-2.3.2\apps\james\SAR-INF\config.xml 找到<users-store>标…

elementUI(Vue2)和elementPlus(Vue3)图标icon差异

Vue2用法 <i class"el-icon-edit"></i><el-button type"primary" icon"el-icon-search">搜索</el-button> Vue3用法 <!-- 使用 el-icon 为 SVG 图标提供属性 --> <template><div><el-icon :siz…

Python的re模块进行正则表达式操作时的常用方法[回顾学习]

re 模块是 Python 中用于处理正则表达式的标准库模块。通过 re 模块&#xff0c;可进行字符串匹配、搜索和替换等各种操作。 有几个常用的方法&#xff1a;# re.match(pattern, string)&#xff1a;从字符串开头开始匹配模式&#xff0c;并返回匹配对象。适合用于确定字符串是否…

Doris的3种数据模型详解和数据仓库每一层的模型选用

Apache Doris是一个用于离线数据仓库开发的分布式SQL查询和分析引擎。在使用Doris进行离线数据仓库开发时,可以采用三种不同的数据模型:Duplicate模型、Aggregate模型和Unique模型。每种模型都有其适用的场景和特点,同时也对于不同层次的数据仓库有着不同的使用建议。 Dupl…

Python爬虫入门教程:从零开始学习网络数据采集(零基础入门,小白看的懂)

随着互联网的快速发展&#xff0c;数据成为了信息时代的核心。而网络爬虫&#xff08;Web Scraper&#xff09;作为一种自动化采集网络数据的工具&#xff0c;在数据获取和分析领域发挥着重要作用。Python作为一种简单易学、功能丰富的编程语言&#xff0c;被广泛用于编写网络爬…

HarmonyOS实战开发-编写一个分布式邮件系统

概述 本篇Codelab是基于TS扩展的声明式开发范式编程语言编写的一个分布式邮件系统&#xff0c;可以由一台设备拉起另一台设备&#xff0c;每次改动邮件内容&#xff0c;都会同步更新两台设备的信息。效果图如下&#xff1a; 说明&#xff1a; 本示例涉及使用系统接口&#xff…

深度学习之分层时间记忆(Hierarchical Temporal Memory,HTM)附代码解析

介绍 分层时间记忆(Hierarchical Temporal Memory,HTM)是一种基于神经科学原理的机器学习模型,用于处理时间序列数据,它模拟了大脑皮层中的一些关键特征。HTM模型由Numenta公司的研究人员Jeff Hawkins等人提出,旨在模拟大脑皮层的工作原理。 HTM模型的核心概念是将信息…

【数据结构】——排序之冒泡排序

&#x1f49e;&#x1f49e; 前言 hello hello~ &#xff0c;这里是大耳朵土土垚~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f4a5;个人主页&#x…

视频讲解|基于非对称纳什谈判的多微网电能共享运行优化策略

1 主要内容 该讲解视频对应的程序链接为基于非对称纳什谈判的多微网电能共享运行优化策略_吴锦领&#xff0c;主要内容是对《基于非对称纳什谈判的多微网电能共享运行优化策略》的matlab复现&#xff0c;解决的是微网间基于非对称纳什谈判的P2P电能交易共享问题&#xff0c;基…

SpringBoot接口防止重复提交(AOP+Redis)

方法一&#xff1a; 若依框架的实现 【具体靠请求地址URL参数列表来判断请求是否重复】 SpingBoot接口防止重复提交_springboot接口防抖(防重复提交)的一些实现方案-CSDN博客文章浏览阅读518次。3.根据缓存键获取缓存中对象&#xff0c;如果存在&#xff0c;判断当前请求参…

利用scipy求解方程组、拟合直线、圆、椭圆、抛物线

scipy.optimize作为优化模块可以实现任意曲线拟合&#xff0c;方程求根、非线性方程组求解、自定义代价函数求解等功能&#xff0c;下面给出了optimize中常用的几个子模块&#xff1a; minimize&#xff1a;需要自己构建代价函数&#xff08;有时也称损失函数&#xff0c;目标函…