在服务器上搭建Jenkins

news2024/9/21 4:46:58

 

目录

1.服务器要求

2.官方文档

3.在服务器上下载Jenkins

3.1 下载war包

3.2 将war包上传到服务器的一个目录下

3.3 启动jenkins

3.3.1 jdk版本升级

1)下载jdk17

2)解压到当前文件夹

3)配置路径

4.jenkins配置

4.1 填写初始密码,激活系统

4.2 选择插件

4.3 设置初始密码

4.4 插件需要重启才能生效

5.Jenkins项目构建

5.1 构建完成效果

5.2 构建springcloud项目

5.3 构建vue项目

6.Jenkins后台运行

7.关闭JenKins


近年来,在软件开发领域,git作为版本管理工具已经被广泛应用。而gitlab则是一个基于git的代码托管平台,提供了代码仓库、issue跟踪、CI/CD等功能,被越来越多的企业和团队所使用。

1.服务器要求

1、CPU:建议使用双核或以上的CPU。

2、内存:建议使用4GB或以上内存。

3硬盘:建议使用至少50GB的硬盘空间,如果需要使用git-lfs,则建议使用100GB或以上的硬盘空间。

4、操作系统:建议使用Linux操作系统,推荐使用Ubuntu或CentOS操作系统。

5、依赖项:

a)curl、openssh-server、ca-certificates软件包。

b)PostgreSQL或MySQL数据库。建议使用PostgreSQL数据库。

c)Redis服务。该服务用于处理gitlab的后台任务。

d)nginx或apache服务。gitlab使用其中的一个服务作为web服务器,推荐使用nginx。

3Gitlab:通过官方网站下载相应版本的gitlab安装包。也可以通过源码来安装gitlab。

2.官方文档

集成构建工具

用户手册

3.在服务器上下载Jenkins

3.1 下载war包

http://mirrors.jenkins.io/war-stable/latest/jenkins.war

3.2 将war包上传到服务器的一个目录下

3.3 启动jenkins

来到war包所在目录下

java -jar jenkins.war --httpPort=45

如果出现git自动触发时报错403,启动加如下参数可以解决问题:

nohup java -jar -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true  /www/wwwroot/yangsaiya/server/jenkins.war --httpPort=45  &

如果出现下面提示:

表示需要jdk的版本为11或17.

3.3.1 jdk版本升级

1)下载jdk17

wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz

2)解压到当前文件夹

tar -zxvf jdk-17_linux-x64_bin.tar.gz

3)配置路径

我的jdk在/usr/java目录下

进入/etc/profile.d目录下

cd /etc/profile.d

在此目录下新建一个java.sh文件

将环境变量写入里面

export JAVA_HOME=/usr/java/jdk-17.0.8
export PATH=$JAVA_HOME/bin:$PATH

之后来到/etc/profile.d/目录下运行脚本

cd /etc/profile.d
source java.sh

之后在任何目录下

java -version

就可以看到jdk版本已经变成了17

启动

4.jenkins配置

在浏览器上访问你的服务器ip地址加端口号。

4.1 填写初始密码,激活系统

4.2 选择插件

4.3 设置初始密码

4.4 插件需要重启才能生效

对jenkins进行重启,之后进行插件的下载

下载插件,以springboot为例:

  • Maven Integration:Maven 构建工具。
  • Publish Over SSH:整个工具,将来把 Jenkins 打包好的 jar 上传到应用服务器上。
  • Gitee:协助使用 Gitee 仓库。

安装成功后,重启Jenkins。

5.Jenkins项目构建

可以参考文档:三:Jenkins项目构建 · jenkins · 看云

5.1 构建完成效果

5.2 构建springcloud项目

注意:如果构建失败,可以加上这一行:

#!/usr/bin/env bash
mvn package
cd /root/docker-compose-vote
docker-compose down
docker-compose up -d

5.3 构建vue项目

#!/usr/bin/env bash
yarn
yarn build
cd /root/docker-compose-vote-front
docker-compose down
docker-compose up -d

6.Jenkins后台运行

 java -jar jenkins.war --httpPort=45 & 

执行以下三步:

(1)执行java -jar xxx.jar后

(2)ctrl+z 退出到控制台,执行 bg

(3)exit

完成以上3步,退出shell后,jar服务一直在后台运行。

nohup java -jar jenkins.war --httpPort=8080 &

ps:不要直接关掉xshell窗口,先退出exit,再关闭。

7.关闭JenKins

输入网址:

服务器ip地址+端口号/exit

点击按钮,可以看到已经关闭了。

再访问JenKins已经访问不到了。

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

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

相关文章

直线模组在搬运行业的应用

近几年,国内直线模组的研发发展非常快,直线模组应用的范围也在一直在扩大,发展到今天,已经被广泛应用到各种设备中,尤其是在搬运行业中,是搬运行业中必不可少的传动元件之一。 直线模组在搬运中的应用&…

算法笔记(一):时间复杂度

省略的技巧 已知 f ( n ) f(n) f(n) 来说,求 g ( n ) g(n) g(n) 表达式中相乘的常量,可以省略,如 f ( n ) 100 ∗ n 2 f(n) 100*n^2 f(n)100∗n2 中的 100 100 100 多项式中数量规模更小(低次项)的表达式&#…

vue create -p dcloudio/uni-preset-vue my-project创建文件报错443

因为使用vue3viteuniappvant4报错,uniapp暂不支持vant4,所以所用vue2uniappvant2 下载uni-preset-vue-master 放到E:\Auniapp\uni-preset-vue-master 在终端命令行创建uniapp vue create -p E:\Auniapp\uni-preset-vue-master my-project

mysql profiling profiles profile

要想优化一条 Query,我们就需要清楚的知道这条 Query 的性能瓶颈到底在哪里,是消耗的 CPU计算太多,还是需要的的 IO 操作太多?要想能够清楚的了解这些信息,在 MySQL 5.0 和 MySQL 5.1正式版中已经可以非常容易做到了&a…

云计算中的数据安全与隐私保护策略

文章目录 1. 云计算中的数据安全挑战1.1 数据泄露和数据风险1.2 多租户环境下的隔离问题 2. 隐私保护策略2.1 数据加密2.2 访问控制和身份验证 3. 应对方法与技术3.1 零知识证明(Zero-Knowledge Proofs)3.2 同态加密(Homomorphic Encryption&…

cublas_v2.h没有那个文件和目录,解决

我的是orin,使用的cuda11.4,后来发现通过sudo jetson_release看到的CUDA是没有安装的。 定位到问题是: 使用ls /usr/local/ -lha查看软连接,如下: 能够发现cuda这个软连接是有问题的,他链接的是cuda10.2 …

几种在JavaScript中创建对象的方式!

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 字面量方式⭐ 构造函数方式⭐ Object.create()方式⭐ 工厂函数方式⭐ ES6类方式⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门…

Python分享之redis(2)

Hash 操作 redis中的Hash 在内存中类似于一个name对应一个dic来存储 hset(name, key, value) #name对应的hash中设置一个键值对(不存在,则创建,否则,修改) r.hset("dic_name","a1","aa&quo…

java八股文面试[多线程]——sleep wait join yield

sleep和wait有什么区别 sleep 方法和 wait 方法都是用来将线程进入阻塞状态的,并且 sleep 和 wait 方法都可以响应 interrupt 中断,也就是线程在休眠的过程中,如果收到中断信号,都可以进行响应并中断,且都可以抛出 In…

ServiceManger Binder的处理流程

陌生知识点如下: BinderProxy:是将Native层的BpBinder对象进行封装后传给Java层使用的Binder对象android_util_binder: Binder在JNI层的相关注册,处理,转换封装接口BpBinder:Binder驱动在Native层的封装。IPCThreadState&#xf…

3.BGP状态机和路由注入方式

BGP状态机 BGP路由的生成 不同于IGP路由协议,BGP自身并不会发现并计算产生路由,BGP将GP路由表中的路由注入到BGP路由表中,并通过Update报文传递给BGP对等体。 BGP注入路由的方式有两种: Networkimport-route与IGP协议相同,BGP支持根据已有的路由条目进行聚合,生成聚合路由…

【Linux】多线程概念线程控制

文章目录 多线程概念Linux下进程和线程的关系pid本质上是轻量级进程id,换句话说,就是线程IDLinux内核是如何创建一个线程的线程的共享和独有线程的优缺点 线程控制POSIX线程库线程创建线程终止线程等待线程分离 多线程概念 Linux下进程和线程的关系 在…

Pygame编程(9)font模块

Pygame编程(9)font模块 函数示例 函数 pygame.font.init 初始化字体模块init() -> None pygame.font.quit 反初始化字体模块quit() -> None pygame.font.get_init True,如果字体模块已初始化get_init() -> bool pygame.font.get_default_font …

VUE笔记(九)vuex

一、vuex的简介 1、回顾组件之间的通讯 父组件向子组件通讯:通过props实现 子组件向父组件通讯:通过自定义事件($emit)方式来实现 兄弟组件之间的通讯:事件总线($eventBus)、订阅与发布方式来实现 跨级组件的通讯…

django+MySQL计算机毕设之图片推荐系统(报告+源码)

图片推荐系统是在的数据存储主要通过MySQL。用户在使用应用时产生的数据通过Python语言传递给数据库。通过此方式促进图片推荐信息流动和数据传输效率,提供一个内容丰富、功能多样、易于操作的平台。述了数据库的设计,系统的详细设计部分主要论述了几个主…

win开机自启jar包

下载winsw工具 只需下载图中红框的工具 https://github.com/winsw/winsw/releases 文件配置 将下载的文件与jar文件放置在一起&#xff0c;两个文件名修改为服务名 编辑xml文件 注意不要出现中文&#xff0c; 标签内的jar文件地址要改为自己目录 <service><!-- I…

日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个题目详解(逻辑类型题2)

题目内容 题目日本某地发生了一件谋杀案&#xff0c;警察通过排查确定杀人凶手必为4个嫌疑犯的一个。 以下为4个嫌疑犯的供词&#xff1a; A说&#xff1a;不是我。 B说&#xff1a;是C。 C说&#xff1a;是D。 D说&#xff1a;C在胡说 已知3个人说了真话&#xff0c;1个…

VUE笔记(十)Echarts

一、Echarts简介 1、什么是echarts ECharts是一款基个基于 JavaScript 的开源可视化图表库 官网地址&#xff1a;Apache ECharts 国内镜像&#xff1a;ISQQW.COM x ECharts 文档&#xff08;国内同步镜像&#xff09; - 配置项 示例&#xff1a;echarts图表集 2、第一个E…

腾讯音乐财务前景疲软,股价上涨势头难以持续

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 市场对腾讯音乐第二季度财报反应积极 猛兽财经之前在2023年6月12日发表的一篇文章中就曾分析过腾讯音乐&#xff08;TME&#xff09;股票&#xff0c;我们当时分析了腾讯音乐2023年第一季度的财务业绩。根据S P Capital IQ…

[halcon] 局部图片保存 gen_circle 和 gen_rectangle2 对比 这怕不是bug吧

背景 我想实现一个功能&#xff0c;获取图片中瑕疵的位置&#xff0c;将瑕疵周边的一块区域抠图并保存。 上代码 一开始我代码这么写的&#xff1a; gen_circle (Rectangle, Row[i], Column[i], 256) reduce_domain(Image,Rectangle,GrayEllipse) crop_domain(GrayEllipse,…