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/updates

sed -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 any
	
	environment {
		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 any
	
	environment {
	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 registry

npm 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 ls
  npm ---------- 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 使用旧的行为,允许安装依赖即使对等依赖不匹配。

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何用java使用es

添加依赖 如何连接es客户端 RestHighLevelClient 代表是高级客户端 其中hostname&#xff1a;es的服务器地址&#xff0c;prot端口号 &#xff0c;scheme&#xff1a;http还是https 如果不在使用es可以进行关闭&#xff0c;可以防止浪费一些资源 java如何创建索引&#xff1…

Python RPA简单开发实践(selenium登陆浏览器自动输入密码登陆)

打开csdn博客&#xff0c;简单版 class BS:def __init__(self, url):self.url url# self.password password# self.username usernamedef login_url(self):from selenium import webdriver# 不自动关闭浏览器option webdriver.ChromeOptions()option.add_experimental_opt…

每日OJ题_牛客_QQ2 微信红包

目录 牛客_QQ2 微信红包 解析代码 牛客_QQ2 微信红包 微信红包_牛客题霸_牛客网 解析代码 class Gift { public: int getValue(vector<int> gifts, int n) {int cnt 0, ret 0;// for(int i 0; i < n; i) // 摩尔投票法// {// if(cnt 0)// {// ret gifts[i];/…

STM32不使用中断实现定时器微秒级精确延时

我们在写代码的时候避免不了要使用延时函数&#xff0c;很多延时函数都是使用中断或者tick来实现的&#xff0c;tick的方式最大到毫秒ms级别&#xff0c;通过中断方式的通用定时器来实现&#xff0c;如果实现1us的延时那么每1us就来一次中断&#xff0c;很影响cpu的效率。 本文…

【webpack】----错误解决【Cannot read properties of undefined (reading ‘tap‘)】

1. 报错场景 安装 webpack-obfuscator 后&#xff0c;进行 js 代码混淆编译的时候报错。 2. 报错截图 3. 错误原因 通常是由于版本不兼容或配置错误引起的。 4. 查询本地 webpack 版本 4.1 查询命令 npm 查询 npm view webpack versionyarn 查询 yarn info webpack ver…

C++ —— 日期计算器

1. 头文件 #pragma once #include <iostream> using namespace std;class Date { public:Date(int year 1, int month 1, int day 1);int GetMonthDay();bool operator>(const Date& d) const;bool operator>(const Date& d)const;bool operator<(c…

opencv函数使用查找

opencv官方文档地址&#xff1a;https://docs.opencv.org/4.x/index.html 先选对应的版本opencv-python 以这个函数为例子 model cv2.face.LBPHFaceRecognizer.create() 点开后找face类的LBP里面就有create函数的用法

vue 安装脚手架报错 certificate has expired

vue 安装脚手架的时候报错&#xff0c;报错信息如下&#xff1a; 错误信息&#xff1a;npm ERR! request to https://registry.npm.taobao.org/vue%2fcli failed, reason: certificate has expired 翻译&#xff1a;npm ERR&#xff01;请求到https://registry.npm.taobao.org…

python的街道办管理系统flask-django-php-nodejs

随着世界经济信息化、全球化的到来和互联网的飞速发展&#xff0c;推动了各行业的改革。若想达到安全&#xff0c;快捷的目的&#xff0c;就需要拥有信息化的组织和管理模式&#xff0c;建立一套合理、动态的、交互友好的、高效的街道办管理系统。当前的信息管理存在工作效率低…

python的BBS论坛系统flask-django-nodejs-php

为了更好地发挥本系统的技术优势&#xff0c;根据BBS论坛系统的需求&#xff0c;本文尝试以B/S架构设计模式中的django/flask框架&#xff0c;python语言为基础&#xff0c;通过必要的编码处理、BBS论坛系统整体框架、功能服务多样化和有效性的高级经验和技术实现方法&#xff…

XS2186,八通道,兼容IEEE802.3at/af,以太网供电PSE控制器

XS2186是一个八通道、供电设备&#xff08;PSE&#xff09;电源 控制器&#xff0c;设计用于IEEE 802.3at/af兼容PSE。器 件提供用电设备&#xff08;PD&#xff09;检测、分级、限流以及负载 断开检测。器件支持全自动工作、软件编程和外挂 eeprom。器件还支持最新二事件分级。…

4核16G服务器租用优惠价格,26.52元1个月,半年149元

阿里云4核16G服务器优惠价格26.52元1个月、79.56元3个月、149.00元半年&#xff0c;配置为阿里云服务器ECS经济型e实例ecs.e-c1m4.xlarge&#xff0c;4核16G、按固定带宽 10Mbs、100GB ESSD Entry系统盘&#xff0c;活动链接 aliyunfuwuqi.com/go/aliyun 活动链接打开如下图&a…

C语言基础知识复习(考研)

&#xff08;1&#xff09;C语言文件操作 1 什么是文件 文件有不同的类型&#xff0c;在程序设计中&#xff0c;主要用到两种文件&#xff1a; (1)程序文件。包括源程序文件(后缀为.c)、目标文件(后缀为.obj)、可执行这种文件的内容是程序代码。 (2)数据文件。文件的内容不是…

win10下自由切换多版本JDK操作

1.在window 系统变量 path路径追加%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; 2.下载多版本jdk zip文件解压到到C:\Program Files\Java\目录下 3.定义切换Java版本的bat文件,内容如下 @echo off @echo -------------------welcome to use Java version switch service------------…

短剧分销cps推广很简单,短剧分销授权平台怎么搭建?

一、短剧分销是什么&#xff1f; 短剧分销&#xff0c;也被称为短剧CPS&#xff0c;是一种通过推广短剧并获得收益的方式。分销方会提供短剧片单&#xff0c;内容创作者可以根据这些片单剪辑成短视频内容进行分发。这样既能避免版权问题&#xff0c;又可以利用优质内容吸引用户…

vue3怎么使用reactive赋值

使用ref赋值&#xff1a; const list ref([]) const getList async () > {const res await axios.get(/list)list.value res.data } 如何使用reactive来替换呢&#xff1f; //const list ref([]) const list reactive([]) const getList async () > {const res…

LabVIEW焓差试验室流量计现场自动校准系统

LabVIEW焓差试验室流量计现场自动校准系统 在现代工业和科研领域&#xff0c;流量计的准确性对于保证生产过程的质量和效率非常重要。开发了一种基于LabVIEW的焓差试验室流量计现场自动校准系统&#xff0c;通过提高流量计校准的准确性和效率。 在空调器空气焓值法能效测量装…

3.22号arm

作业 实验现象&#xff0c;主函数每一秒循环字符m&#xff0c;当按下按键1&#xff0c;则串口输出1&#xff0c;按下按键2&#xff0c;串口输出2&#xff0c;按下按键3&#xff0c;串口输出3 main.c #include "uart4.h"#include "led.h"#include "k…

LeetCode每日一题——x 的平方根

x 的平方根OJ链接&#xff1a;69. x 的平方根 - 力扣&#xff08;LeetCode&#xff09; 题目&#xff1a; 思路&#xff1a; 乍一看题目只需要算一个数的平方根&#xff0c;根据我们之前学的C语言我们能很快的想到使用sqrt&#xff0c;pow这类的<math.h>库函数&#xf…