Jenkins--在Linux上使用Docker安装

一、Jenkins 简介

Jenkins是一个流行的开源自动化服务器,用于持续集成和持续交付(CI/CD)。Jenkins的核心功能主要包括以下几点:

  1. 持续集成:Jenkins可以监控版本控制系统(如Git、SVN)中的代码变更,并自动执行构建和测试,确保每次提交都被验证,从而尽早发现潜在的集成错误。
  2. 持续部署:当代码通过测试后,Jenkins可以自动将其部署到不同的环境中,包括测试、预生产或生产环境。
  3. 任务调度:Jenkins能够定时执行任务,比如夜间构建或定期发布。
  4. 工作流管理:Jenkins支持Pipeline,它可以定义一系列的任务(构建、测试、部署等),形成一个完整的流程。
  5. 插件扩展:Jenkins拥有强大的插件生态系统,可以通过安装插件来扩展其功能,支持与各种版本控制系统、构建工具、测试框架等的无缝集成。
  6. 分布式构建:Jenkins支持分布式构建,可以将构建任务分发到多个构建代理上并行执行,这对于大型项目和复杂系统的构建和部署过程至关重要,能够显著提高任务执行的速度,进而提高整体开发效率。

二、安装前准备

  • 需要先在系统中安装好JDK以及Maven。
    在这里插入图片描述
  • 由于Jenkins拉取代码时,需要对maven仓库有读写权限,所以的先给maven仓进行授权。
chomd 777 /usr/local/src/maven/repo/

三、开始安装

3.1 拉取Jenkins镜像

命令:docker pull jenkins/jenkins:lts

3.2 创建挂载目录

为了方便后期Jenkins中配置文件的修改,以及防止Jenkins中重要文件因为容器损毁或删除导致文件丢失,需要在宿主机上创建一个jenkins_home目录挂载到容器中的/var/jenkins_home目录上。通过挂载的方式可以保证容器的数据在容器停止或删除后依然保留在宿主机上。

## 宿主机上创建挂载目录
mkdir -p /usr/local/src/jenkins_home## 授权挂载目录的读写权限
chmod 777 /usr/local/src/jenkins_home
3.3 启动容器
docker run \
-d \
--name jenkins \
--restart=always \
-p 9100:8080 \
-p 50000:50000 \
-v /usr/local/src/java/jdk1.8/jdk1.8.0_391/:/usr/local/src/java/jdk1.8/jdk1.8.0_391/ \
-v /usr/local/src/maven/apache-maven-3.9.6/:/usr/local/src/maven/apache-maven-3.9.6/ \
-v /usr/local/src/jenkins_home/:/var/jenkins_home \
-v /etc/localtime:/etc/localtime:ro \
-u 0 \
jenkins/jenkins:lts
  • -d:在后台运行容器。
  • --name:设置容器的名称。
  • –restart:设置容器启动之后自动重启,默认no,always表示启动容器后重启。
  • -p 9100:8080:容器的8080端口映射宿主机9100端口(程序访问端口)。
  • -p 5000:50000:容器的50000端口映射宿主机50000端口(代理端口)。
  • -v /usr/local/src/java/jdk1.8/jdk1.8.0_391/:/usr/local/src/java/jdk1.8/jdk1.8.0_391/:将宿主机的JDK目录挂载到容器中。
  • -v /usr/local/src/maven/apache-maven-3.9.6/:/usr/local/src/maven/apache-maven-3.9.6/:将宿主机的Maven目录挂载到容器中。
  • -v /usr/local/src/jenkins_home/:/var/jenkins_home:将宿主机的jenkin工作空间目录挂载到容器中。
  • -v /etc/localtime:/etc/localtime:ro:设置容器时间与宿主机时间一致。
  • -u 0:使用root账号覆盖容器中内置的账号,0表示root账号的id。
3.4 登录Jenkins页面

(1)首次通过在浏览器中输入http://宿主机ip:9100/进入Jenkins页面。首次进入需要从远程服务器下载大量的插件和更新信息,这个过程可能会受到网络速度和稳定性的影响,尤其是Jenkins默认使用国外的镜像源,下载往往很慢。这时可以通过修改宿主机的挂载目录jenkins_home中的hudson.model.UpdateCenter.xml文件,将其默认的url更换成国内的镜像地址。
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
在这里插入图片描述
插件信息更新完成之后会跳出提示输入管理员密码的页面。
在这里插入图片描述
(2)通过到宿主机的挂载目录下的secrets中的initialAdminPassword文件中获取密码。
cat /usr/local/src/jenkins_home/secrets/initialAdminPassword

(3)将获取到的密码输入到页面,点击继续进入到后续的设置。
在这里插入图片描述
(4)插件安装
新手推荐选择安装推荐的插件,也可以选择插件来安装,看个人喜好。可能有些插件会安装失败,这里不影响Jenkins安装先不管,继续往后面操作,后续安装完成后再到Jenkins使用页面进行插件的安装。
在这里插入图片描述
(5)创建第一个管理员用户
输入管理员用的账号密码以及邮箱信息,然后点击右下角的使用admin账户继续。
在这里插入图片描述
(6)实例配置
实例配置页面默认会带出Jenkins URL地址,也不需要改,直接点击保存并完成。
在这里插入图片描述
(7)开始使用
到这步就已经安装完成了,点击开始使用Jenkins。
在这里插入图片描述

四、插件管理

进入到Jenkins使用页面后,点击左边菜单栏的Manage Jenkins,会在右边提示刚刚安装是未成功的插件错误信息,也可以在这里搜索想要安装的插件。在这里插入图片描述### 五、解决插件安装失败问题
插件安装失败一般可通过升级Jenkins到最新版本来解决问题,下面来指定升级对应的版本。

(1)首先根据我们使用的镜像源,也就是刚开始安装时我们替换成的清华镜像源的地址https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/中找到对应的版本中的update-center.json文件。
在这里插入图片描述
(2)然后到Jenkins安装服务器上,全局查找default.json这个文件。
find / -name default.json
在这里插入图片描述
(3)进入这个文件所在目录,先备份该文件,以便后面回滚。
cp default.json default.json.bak
(4)在同目录下载刚刚在清华镜像源地址中找到的update-center.json文件,并修改文件名为default.json。

wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/dynamic-2.444/update-center.jsonmv update-center.json default.json

在这里插入图片描述
(5)重启Jenkins,再次登录进去就线上插件都安装成功了。
在这里插入图片描述

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

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

相关文章

模型训练----加载自己的数据集,train.txt包含“路径,类别”

今天想训练一个restnet,之前我是会用文件夹的方式加载数据集,但是师兄给我的数据是用.txt文件划分的训练集和验证集,知道是要把路径和标签提取出来,搞了半天没搞成,后边找到咋搞了。 点击查看 纯真丁一郎博客点击访问…

产品经理的6个关键职责

1. 前言 本文深入探讨了产品经理的六个关键职责,全面解析了产品经理在产品开发与市场运营中的核心作用。首先,市场调研是产品经理的基础工作,通过对市场趋势、用户需求及竞争态势的深入研究,为产品决策提供有力支持。其次,产品定义及设计是产品经理的核心能力,他们需精准…

蓝桥杯:Python基础学习一

目录 一、遍历列表 1.使用for 循环和 enumerate()函数实现 2.案例代码 二、对列表进行统计和计算 1.统计数值列表的元素和 2.案例代码 三、对列表进行排序 1.使用列表对象的sort()方法 2.使用内置的 sorted()函数实现 四、列表推导式 1.从列表中选择符合条件的元素组…

Matlab|计及电池储能寿命损耗的微电网经济调度

目录 1 主要内容 储能寿命模型 负荷需求响应 2 部分代码 3 程序结果 4 下载链接 1 主要内容 该程序参考文献《考虑寿命损耗的微网电池储能容量优化配置》模型,以购售电成本、燃料成本和储能寿命损耗成本三者之和为目标函数,创新考虑储能寿命损耗约…

【Java跳槽面试必备】2024年最新八股文

Java基础面试题 Java的特点 Java 与 C 的区别 JDK/JRE/JVM三者的关系 Java程序是编译执行还是解释执行? 面向对象和面向过程的区别? 面向对象有哪些特性? 数组到底是不是对象? Java的基本数据类型有哪些? 为什么不能用…

【python由站点数据插值到网格数据方法对比】

文章目录 1、前言2、结果对比2.1 原始散点站位图2.2 griddata插值2.3 krige插值2.4 RBF插值2.5 IDW插值 3、总结 1、前言 气象海洋中空间数据类型有站点数据、格点数据。站点数据空间分布不连续,不利于进行时空分析;有时需要将站点数据插值到网格中。本…

GEC6818开机自动加载驱动与更改开发板的RTC时钟

GEC6818开机自动加载驱动与更改开发板的RTC时钟 本文主要涉及: 1.GEC6818开机自动加载驱动 2.更改开发板的RTC时钟 文章目录 GEC6818开机自动加载驱动与更改开发板的RTC时钟一、开机自动加载驱动或运行程序**STEP1:** 使用vi打开文件profile.命令如下**S…

“智慧食堂”设计与实现|Springboot+ Mysql+Vue+Java+ B/S结构(可运行源码+数据库+设计文档)

本项目包含可运行源码数据库LW,文末可获取本项目的所有资料。 推荐阅读100套最新项目持续更新中..... 2024年计算机毕业论文(设计)学生选题参考合集推荐收藏(包含Springboot、jsp、ssmvue等技术项目合集) 目录 1. 功…

智能电表怎么偷电?

大家好,今天我们要聊的是一个关于智能电表的小疑惑——智能电表是否能被“偷电”。可能你听过这样的说法,有人声称通过某些方法可以让电表不准确计费,甚至可以“偷电”。但事实真的是这样吗?让我们一起来科普一下。 首先,智能电表…

全球首位AI程序员诞生,技术革新还是职业威胁?

目录 导语: 一、2024年的第一丝凉意 二、AI在编程领域的应用现状 三、关于Devin的现状 四.未来展望 五.面对未来挑战,我们应该 结语: 导语: 时间回调到两周前的3月13号,世界上第一位AI程序员Devin诞生&#xff…

人工智能的决策树介绍

决策树模型 决策树基于“树”结构进行决策 每个“内部结点”对应于某个属性上的“测试”每个分支节点对应于该测试的一种可能结果(即属性的某个取值)每个“叶结点”对应于一个“预测结果” 学习过程:通过对训练样本的分析来确定“划分属性”…

记录echarts各种地图json文件下载地址

今日绘图需要用到echarts的地图json文件,但是github上已经找不到了,后发现伟大的网友提供了地址如下:Index of /examples/data/asset/geohttps://echarts.apache.org/examples/data/asset/geo/ 免费下载实时更新的geoJson数据、行政区划边界…

如何解决Modbus转Profinet网关通信不稳定或数据丢失问题

接到现场反映,在配置Modbus转Profinet网关时,出现Modbus转Profinet网关(XD-MDPN100)通信不稳定或数据丢失的问题,就这个问题特做出答疑。 解决Modbus转Profinet网关(XD-MDPN100)通信不稳定或数据…

【Linux进阶之路】理解UDP,成为TCP。

前言 学了TCP 和UDP之后,感觉UDP就像是初入职场的年轻人,两耳不闻 “窗外事”,只管尽力地把自己的事情做好,但收获的却是不可靠,而TCP更像是涉世极深的"职场老油条",给人的感觉就是 “城府极深&a…

Arduino中引脚的数字与真实引脚的对应关系

我们使用arduino开发时,最长遇到的是对端口管脚的拉高拉低,代码如下 void setup() {pinMode(13,OUTPUT); }void loop() {digitalWrite(13,HIGH); }上面还最简单io控制代码,其中引脚我们使用了数字13,但是这个13对应着哪个引脚呢&a…

老壁灯带你入门动态规划

1. 什么是动态规划 动态规划(dynamic programming)是运筹学的一个分支,是求解决策过程(decision process)最优化的数学方法。 从字面意义上来理解,就是走一步看一步,边解决问题,边对问题进行整体规划。 其实,动态规…

Mac上的Gatekeeper系统跟运行时保护

文章目录 问题:无法打开“xxx.xxx”,因为无法验证开发者。macOS无法验证此App是否包含恶意软件。如何解决? 参考资料门禁运行时保护 问题:无法打开“xxx.xxx”,因为无法验证开发者。macOS无法验证此App是否包含恶意软件…

Leetcode - 2580. 统计将重叠区间合并成组的方案数

文章目录 思路AC CODE总结 题目链接:2580. 统计将重叠区间合并成组的方案数 思路 一个区间合并的板子,计算出区间数目之后,每个区间都有放左和放右两种选法,所以最后的答案就是 2 k 2^k 2k。但是需要用c进行二维数组的排序&…

【正点原子FreeRTOS学习笔记】————(4)FreeRTOS中断管理

这里写目录标题 一、什么是中断?(了解)二、中断优先级分组设置(熟悉)三、中断相关寄存器(熟悉)四、FreeRTOS中断管理实验(掌握) 一、什么是中断?(…

深入理解C语言宏定义

目录 一、前言 二、宏的相关语法 2.1 #define 2.2 #undef 2.3 #运算符 2.4 ##运算符 三、宏替换的规则 四、宏与函数 一、前言 我们都知道#define语句可以定义常量,在编译器预处理时会全部将名字替换为常量。与此同时,#define也允许把参数替换到…