当前位置: 首页 > news >正文

如何在 Ubuntu 22.04 服务器上安装 Jenkins

简介

Jenkins 是一个非常流行的免费自动化工具,每个人都应该了解它。DevOps 工程师使用它来自动化代码构建、测试和部署。本文将重点介绍如何在新的 Ubuntu LTS 版本,即 Ubuntu 22.04 中安装 Jenkins。

但在此之前,让我们快速讨论一下 Jenkins 是什么。

什么是 Jenkins

Jenkins 是开源自动化服务器的首选。它是目前最流行的 CI/CD 工具。它用于自动化软件开发任务,例如测试代码更改、打包以及在 SDLC 阶段末尾进行部署。

主要功能:

  • 管道自动化: 将 CI/CD 流程定义为代码。
  • 可扩展性: 支持超过 1500 个插件,用于各种集成(例如,Git、Docker、Kubernetes)。
  • 分布式构建: 在多台机器上运行作业以实现可扩展性。
  • 轻松集成: 可以与众多工具和平台(例如,Maven、Gradle、GitHub)协同工作。
  • 用户友好的界面: 简单的 Web UI,用于作业管理和监控。
  • 强大的社区支持: 定期更新和广泛的文档。

准备工作

服务器准备

必要前提:

  • 一个充满求知欲的大脑。
  • 一台 Linux 服务器(推荐腾讯云、阿里云或雨云等)。

我将以 雨云 为例,带大家创建一台自己的云服务器,以便学习本篇文章的内容。

注册链接: https://rainyun.ivwv.site

创建雨云服务器

以下步骤仅供参考,请根据实际需求选择配置。

  • 点击 云产品云服务器立即购买
  • 选择距离你较近的区域,以保证低延迟。

  • 按照自己需求选择配置,选择Ubuntu 22.04 版本,按照自己需求是否预装Docker。
  • 最后按照提示进行购买。
  • 购买后等待机器部署完毕,点击刚刚创建好的服务器,进入管理面板,找到远程连接相关信息。

  • 我们使用 PowerShell 进行 SSH 远程连接到服务器,Win+R 打开运行窗口,输入 powershell 后点击确定。

  • 输入 ssh root@你的服务器IP 例如 ssh root@154.9.227.239 回车后,首次需要输入 yes,再次回车后即可登录服务器。

  • 到此为止,我们的云服务器就远程连接上了。

如何在 Ubuntu 22.04 上安装 Jenkins

让我们从更新你的系统并安装必要的依赖项开始。

第一步:更新系统

在安装新软件之前更新你的系统软件包始终是一个明智的选择。打开终端并运行以下命令:

sudo apt update

sudo apt upgrade

它会更新你系统上使用的软件包索引。它会知道有哪些软件包及其版本,然后安装所有已安装的新版本。

第二步:安装 Java

第二步是在你的 Ubuntu 服务器上安装 Java,因为 Jenkins 需要它才能运行。Jenkins 官方支持 Java 11Java 17。我们将安装 OpenJDK 17,这是 Ubuntu 22.04 推荐的版本。

要安装 Java 17,请运行以下命令:

sudo apt install openjdk-17-jdk

安装 Java 后,通过检查版本来验证安装:

java -version

你应该看到类似于以下的输出:

openjdk version "17.0.x"
OpenJDK Runtime Environment (build 17.0.x+xx)
OpenJDK 64-Bit Server VM (build 17.0.x+xx, mixed mode)

安装 Java 后,我们准备好进行下一步。

第三步:添加 Jenkins 存储库

首先将 Jenkins GPG 密钥导入你的系统。请注意,下面提到的 URL 将来可能会更改,因此请在使用前进行验证。

sudo wget -O /usr/share/keyrings/jenkins-keyring.asc https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key

接下来,将 Jenkins 存储库添加到你系统的 sources.list:

sudo sh -c 'echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] https://pkg.jenkins.io/debian binary/ > /etc/apt/sources.list.d/jenkins.list'

第四步:安装 Jenkins

Jenkins 在默认的 Ubuntu 存储库中不可用,因此我们需要添加 Jenkins 存储库,然后从那里安装 Jenkins。

添加存储库后,更新软件包列表并通过运行以下命令安装 Jenkins:

sudo apt update

sudo apt install jenkins

安装 Jenkins 后,它将自动作为服务启动。

第五步:启动并启用 Jenkins

现在 Jenkins 已经安装,我们需要启动并启用 Jenkins 服务,以便它在启动时自动运行。

使用以下命令启动 Jenkins:

sudo systemctl start jenkins

为确保 Jenkins 在启动时启动,请使用以下命令启用它:

sudo systemctl enable jenkins

你可以检查 Jenkins 的状态以确保它正在运行:

sudo systemctl status jenkins

你应该看到一个输出,指示 Jenkins 处于活动状态并正在运行。

第六步:调整防火墙

Jenkins 托管在端口 8080 上,这是默认端口。如果你的服务器具有内置防火墙,则必须允许此端口上的流量。为此,请运行以下命令:

对于 UFW(Uncomplicated Firewall)用户,允许端口 8080:

sudo ufw allow 8080
sudo ufw reload

如果你正在使用其他防火墙,例如 iptables,请确保它允许端口 8080 上的流量。

要验证 UFW 状态并确认 Jenkins 已通过防火墙,请运行以下命令:

sudo ufw status

第七步:访问 Jenkins Web 界面

Jenkins 现在已安装并在你的服务器上运行。要完成设置,你需要访问 Jenkins Web 界面。打开 Web 浏览器并输入你的服务器的 IP 地址,后跟端口 8080:

http://your-server-ip:8080

如果你在本地运行 Jenkins,请使用:

http://localhost:8080

第八步:配置 Jenkins

首次访问 Jenkins 时,它会要求提供初始管理密码。要检索此密码,请在终端中运行以下命令:

sudo cat /var/lib/jenkins/secrets/initialAdminPassword

你会看到一长串字符。复制此密码并将其粘贴到 Jenkins 设置屏幕中。

输入初始管理密码后,Jenkins 会将你带到 Customize Jenkins 页面。在这里,你将被要求安装插件。建议安装建议的插件以获取基本的 Jenkins 功能。

单击 Install suggested plugins 开始该过程。

Jenkins 将自动安装最常用的插件,这可能需要几分钟,具体取决于你的服务器速度。

第九步:创建第一个管理员用户

安装插件后,Jenkins 将提示你创建第一个管理员用户。填写如下所示的必填字段:

此帐户将用作 Jenkins 管理员用户。

创建用户后,单击 Save and Finish

你已成功在 Ubuntu 22.04 上安装了 Jenkins。

接下来,让我们使用 Jenkins 创建一个简单的管道。

使用 Jenkins 创建一个简单的管道

在 Jenkins 中创建你的第一个基本管道是开始自动化的好方法。Jenkins 管道将你的 CI/CD 流程的步骤定义为代码,这些代码可以进行版本控制并轻松重复使用。以下是使用 Jenkins 创建非常基本管道的分步指南。

在你的 Jenkins 仪表板上,单击 New Item

命名你的作业(例如,“Demo”),选择 Pipeline 作为项目类型,然后单击 OK

向下滚动到 Pipeline 部分。在 Definition 下拉列表中,选择 Pipeline script

在出现的文本框中,输入一个非常基本的管道脚本。这是一个简单的示例:

pipeline {agent anystages {stage('Build') {steps {echo 'Building...'}}stage('Test') {steps {echo 'Testing...'}}stage('Deploy') {steps {echo 'Deploying...'}}}
}

此管道的功能:

  • pipeline {}:定义整个管道。
  • agent any:在任何可用的 Jenkins 代理上运行管道。
  • stages {}:列出管道的阶段。
  • stage(‘Build’), stage(‘Test’), stage(‘Deploy’):定义构建、测试和部署的各个阶段。
  • steps {}:每个阶段中发生的实际操作(在本例中,是简单的 echo 语句)。

编写完管道脚本后,单击 Save。在作业的仪表板上,单击 Build Now 以运行管道。

你可以在左侧的 Build History 部分中查看进度。单击构建号以查看控制台输出并检查每个阶段的结果。

它将显示管道已成功执行。

构建完成后,单击构建号,然后单击 Pipeline StepsPipeline Graph

Jenkins 将以可视方式表示管道,显示每个阶段以及它是否通过或失败。

结论

在本指南中,我们逐步解释了如何在 Ubuntu 22.04 上安装 Jenkins。我们介绍了安装 Java、添加 Jenkins 存储库、安装 Jenkins 服务器以及启动 Jenkins 服务器。再次说明,从 Jenkins 的角度来看,现在我们已经启动并运行了它,你可以开始使用此 CI/CD 管道集成系统来自动化你的开发操作。

雨云 - 新一代云服务提供商: https://rainyun.ivwv.site
我的博客:https://blog.ivwv.site

相关文章:

如何在 Ubuntu 22.04 服务器上安装 Jenkins

简介 Jenkins 是一个非常流行的免费自动化工具,每个人都应该了解它。DevOps 工程师使用它来自动化代码构建、测试和部署。本文将重点介绍如何在新的 Ubuntu LTS 版本,即 Ubuntu 22.04 中安装 Jenkins。 但在此之前,让我们快速讨论一下 Jenk…...

【一篇搞定配置】如何在Ubuntu上配置单机/伪分布式Hadoop

🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀各种软件安装与配置_十二月的猫的博客-CSDN博客 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 目录 1.…...

利用Map集合设计程序,存储城市和对应等级相关信息

package testmap;import java.util.HashMap; import java.util.Scanner; import java.util.Set;public class TestHashMap6 {public static void main(String[] args) {//1.创建一个Map集合&#xff1a;存储键值对HashMap<String, String> map new HashMap<>();/…...

【自动驾驶】单目摄像头实现自动驾驶3D目标检测

&#x1f351;个人主页&#xff1a;Jupiter. &#x1f680; 所属专栏&#xff1a;传知代码 欢迎大家点赞收藏评论&#x1f60a; 目录 概述算法介绍演示效果图像推理视频推理 核心代码算法处理过程使用方式环境搭建下载权重文件pytorch 推理&#xff08;自动选择CPU或GPU&#x…...

21 go语言(golang) - gin框架安装及使用(二)

四、组成 前面的文章中&#xff0c;我们介绍了其中一部分组成&#xff0c;接下来继续学习&#xff1a; Router&#xff08;路由器&#xff09; Gin 使用基于树结构的路由机制来处理 HTTP 请求。它支持动态路由参数、分组路由以及中间件。路由器负责将请求路径映射到相应的处理…...

Intel(R) Iris(R) Xe Graphics安装Anaconda、Pytorch(CPU版本)

一、Intel(R) Iris(R) Xe Graphics安装Anaconda 下载网址&#xff1a;https://repo.anaconda.com/archive/ 双击Anaconda3-2024.10-1-Windows-x86_64&#xff0c;一直下一步&#xff0c;选择安装的路径位置&#xff0c;一直下一步就安装完成了。打开Anaconda PowerShell Promp…...

【Unity3D】实现可视化链式结构数据(节点数据)

关键词&#xff1a;UnityEditor、可视化节点编辑、Unity编辑器自定义窗口工具 使用Newtonsoft.Json、UnityEditor相关接口实现 主要代码&#xff1a; Handles.DrawBezier(起点&#xff0c;终点&#xff0c;起点切线向量&#xff0c;终点切线向量&#xff0c;颜色&#xff0c;n…...

Three.js推荐-可以和Three.js结合的动画库

在 Three.js 中&#xff0c;3D 模型、相机、光照等对象的变换&#xff08;如位置、旋转、缩放&#xff09;通常需要通过动画进行控制&#xff0c;以实现更加生动和富有表现力的效果。然而&#xff0c;Three.js 本身并没有内置的强大动画管理系统&#xff0c;尽管可以通过关键帧…...

增强现实(AR)和虚拟现实(VR)的应用

增强现实&#xff08;AR&#xff09;和虚拟现实&#xff08;VR&#xff09;是近年来迅速发展的技术&#xff0c;广泛应用于多个行业&#xff0c;提供沉浸式的体验和增强的信息交互。以下是AR和VR的定义及其在不同领域的具体应用。 相关学点&#xff1a; 2025年大数据、通信技术…...

告别机器人味:如何让ChatGPT写出有灵魂的内容

目录 ChatGPT的一些AI味道小问题 1.提供编辑指南 2.提供样本 3.思维链大纲 4.融入自己的想法 5.去除重复增加多样性 6.删除废话 ChatGPT的一些AI味道小问题 大多数宝子们再使用ChatGPT进行写作时&#xff0c;发现我们的老朋友ChatGPT在各类写作上还有点“机器人味”太重…...

【Threejs】从零开始(六)--GUI调试开发3D效果

请先完成前置步骤再进行下面操作&#xff1a;【Threejs】从零开始&#xff08;一&#xff09;--创建threejs应用-CSDN博客 一.GUI界面概述 GUI&#xff08;Graphical User Interface&#xff09;指的是图形化用户界面&#xff0c;广泛用在各种程序的上位机&#xff0c;能够通过…...

Cocos Creator 试玩广告开发

之前主要是使用Unity,这次刚好项目是试玩游戏的开发&#xff0c;所以临时学了Cocos来开发。所以这篇文章&#xff0c;更加关注从Unity转到Cocos开发的经历以及试玩的基本开发。 首先&#xff0c;我是没有使用过Cocos的&#xff0c;也没有接触过Ts语言&#xff0c;对于Ts的开发开…...

快速解决oracle 11g中exp无法导出空表的问题

在一些生产系统中&#xff0c;有些时候我们为了进行oracle数据库部分数据的备份和迁移&#xff0c;会使用exp进行数据的导出。但在实际导出的时候&#xff0c;我们发现导出的时候&#xff0c;发现很多空表未进行导出。今天我们给出一个快速解决该问题的办法。 一、问题复现 我…...

selenium 报错 invalid argument: invalid locator

环境&#xff1a; Python3.12.2 selenium4.0 报错信息&#xff1a; invalid argument: invalid locator 错误分析&#xff1a; selenium语法错误,find_element方法少写By.XPATH参数 错误语法如下&#xff1a; driver.find_element(//div[id"myid"]) 解决办…...

Flink2.0未来趋势中需要注意的一些问题

手机打字&#xff0c;篇幅不长&#xff0c;主要讲一下FFA中关于Flink2.0的未来趋势&#xff0c;直接看重点。 Flink Forward Asia 2024主会场有一场关于Flink2.0的演讲&#xff0c;很精彩&#xff0c;官方也发布了一些关于Flink2.0的展望和要解决的问题。 1.0时代和2.0时代避免…...

机械鹦鹉与真正的智能:大语言模型推理能力的迷思

编者按&#xff1a; 大语言模型真的具备推理能力吗&#xff1f;我们是否误解了"智能"的本质&#xff0c;将模式匹配误认为是真正的推理&#xff1f; 本文深入探讨了大语言模型&#xff08;LLMs&#xff09;是否真正具备推理能力这一前沿科学问题&#xff0c;作者的核…...

本地电脑使用命令行上传文件至远程服务器

将本地文件上传到远程服务器&#xff0c;在本地电脑中cmd使用该命令&#xff1a; scp C:/Users/"你的用户名"/Desktop/environment.yml ws:~/environment.yml 其中&#xff0c;C:/Users/“你的用户名”/Desktop/environment.yml是本地文件的路径&#xff0c; ~/en…...

【系统】Windows11更新解决办法,一键暂停

最近的windows更新整的我是措不及防&#xff0c;干啥都要关注一下更新的问题&#xff0c;有的时候还关不掉&#xff0c;我的强迫症就来了&#xff0c;非得关了你不可&#xff01; 经过了九九八十一难的研究之后&#xff0c;终于找到了一个算是比较靠谱的暂停更新的方法&#x…...

34. Three.js案例-创建球体与模糊阴影

34. Three.js案例-创建球体与模糊阴影 实现效果 知识点 WebGLRenderer WebGLRenderer 是 Three.js 中用于渲染 3D 场景的核心类。它负责将场景中的对象绘制到画布上。 构造器 new THREE.WebGLRenderer(parameters)参数类型描述parametersObject可选参数对象&#xff0c;包…...

Qt同步读取串口

头文件 #include "InsScpi.h" #include <QObject> #include <QSerialPort>class TestSerial : public QObject {Q_OBJECT public:explicit TestSerial(QObject *parent nullptr);//打开设备bool openDevice(const QString &portName);//关闭设备…...

RestClient

什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端&#xff0c;它允许HTTP与Elasticsearch 集群通信&#xff0c;而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级&#xff…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻

在如今就业市场竞争日益激烈的背景下&#xff0c;越来越多的求职者将目光投向了日本及中日双语岗位。但是&#xff0c;一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧&#xff1f;面对生疏的日语交流环境&#xff0c;即便提前恶补了…...

3.3.1_1 检错编码(奇偶校验码)

从这节课开始&#xff0c;我们会探讨数据链路层的差错控制功能&#xff0c;差错控制功能的主要目标是要发现并且解决一个帧内部的位错误&#xff0c;我们需要使用特殊的编码技术去发现帧内部的位错误&#xff0c;当我们发现位错误之后&#xff0c;通常来说有两种解决方案。第一…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案

问题描述&#xff1a;iview使用table 中type: "index",分页之后 &#xff0c;索引还是从1开始&#xff0c;试过绑定后台返回数据的id, 这种方法可行&#xff0c;就是后台返回数据的每个页面id都不完全是按照从1开始的升序&#xff0c;因此百度了下&#xff0c;找到了…...

关于 WASM:1. WASM 基础原理

一、WASM 简介 1.1 WebAssembly 是什么&#xff1f; WebAssembly&#xff08;WASM&#xff09; 是一种能在现代浏览器中高效运行的二进制指令格式&#xff0c;它不是传统的编程语言&#xff0c;而是一种 低级字节码格式&#xff0c;可由高级语言&#xff08;如 C、C、Rust&am…...

ip子接口配置及删除

配置永久生效的子接口&#xff0c;2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...

JVM 内存结构 详解

内存结构 运行时数据区&#xff1a; Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器&#xff1a; ​ 线程私有&#xff0c;程序控制流的指示器&#xff0c;分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 ​ 每个线程都有一个程序计数…...

PostgreSQL——环境搭建

一、Linux # 安装 PostgreSQL 15 仓库 sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm# 安装之前先确认是否已经存在PostgreSQL rpm -qa | grep postgres# 如果存在&#xff0…...

HubSpot推出与ChatGPT的深度集成引发兴奋与担忧

上周三&#xff0c;HubSpot宣布已构建与ChatGPT的深度集成&#xff0c;这一消息在HubSpot用户和营销技术观察者中引发了极大的兴奋&#xff0c;但同时也存在一些关于数据安全的担忧。 许多网络声音声称&#xff0c;这对SaaS应用程序和人工智能而言是一场范式转变。 但向任何技…...

Qt 事件处理中 return 的深入解析

Qt 事件处理中 return 的深入解析 在 Qt 事件处理中&#xff0c;return 语句的使用是另一个关键概念&#xff0c;它与 event->accept()/event->ignore() 密切相关但作用不同。让我们详细分析一下它们之间的关系和工作原理。 核心区别&#xff1a;不同层级的事件处理 方…...