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

docker从零部署jenkins保姆级教程

jenkins,基本是最常用的持续集成工具。在实际的工作中,后端研发一般没有jenkins的操作权限,只有一些查看权限,但是我们的代码是经过这个工具构建出来部署到服务器的,所以我觉着有必要了解一下这个工具的搭建过程以及简单的一些使用。尽可能多的了解公司中和你开发相关的所有东西,不要只是干CRUD的工作,只有这样,你才会有成长。
我本地使用的mac充当宿主机,因为最近一直在看docker相关的东西,docker对于搭建测试环境非常方便,所以这次也选择用docker搭建jenkins。有一点,特别提一下,因为我们要访问github、dockerhub,所以需要能科学上网。
这篇文章的主要目标是搭建起我们本地的jenkins,然后用jenkins对我们的本地项目进行自动化的构建,打包,也就是我们常常手动执行的maven的clean、install命令。
好,下面正式开始搭建过程

文章目录

  • 1、下载jenkins镜像
  • 2、创建jenkins容器
  • 3、验证jenkins容器启动成功
  • 4、安装jenkins插件
  • 5、创建一个jenkins用户
  • 6、安装jenkins工具
  • 7、创建第一个jenkins任务
    • 7.1、创建一个任务
    • 7.2、配置git仓库的信息
    • 7.3、执行maven的打包命令
  • 8、测试jenkins打包
  • 9、jenkins构建时间和服务器同步

1、下载jenkins镜像

jenkins需要依赖jdk环境,所以我们直接下载带JDK的jenkins镜像,如下图

docker pull jenkins/jenkins:jdk11

最好不要尝试下载纯jenkins的容器,否则可能会报:
The JAVA_HOME environment variable is not defined correctly

2、创建jenkins容器

下面是创建jenkins容器的docker命令,解释一下创建参数

docker run 
-p 8080:8080 
-p 5030:5000 
--restart=always 
-v /etc/localtime:/etc/localtime 
-v /Users/abc/personal/test/docker/jenkins1/jenkins-data:/var/jenkins_home 
-v /Users/abc/.docker/run/docker.sock:/var/run/docker.sock 
-v /Users/abc/personal/test/docker/maven/apache-maven-3.8.1:/usr/local/maven 
--name jenkins_jdk11 
-d 
jenkins/jenkins:jdk11

1)、-p 8080:8080和 -p 5030:5000,都是将容器端口映射到宿主机的一个端口
2)、–restart=alwasy,是容器启动失败后重启
3)、-v是卷的意思,将宿主机目录映射到容器中的目录,卷在docker中很重要,感兴趣的同学可以再详细了解一下。
可以看到,我们的容器创建命令中有4个卷的指令。
第一个:将宿主机的时间文件映射到容器中,为的是让宿主机的时间和容器的时间保持一致
第二个:创建jenkins的工作目录,这个目录很重要。jenkins构建好的项目就会放到这个目录中。这里我们将jenkins的工作目录映
射到了宿主机的一个目录中
第三个:将本地的docker监听的文件映射到容器中。
第四个:将本地maven映射到容器的maven中。
4)、–name jenkins_jdk11,容器的名称是jenkins_jdk11
5)、-d 容器后台运行
6)、jenkins/jenkins:jdk11,使用这个镜像创建容器

3、验证jenkins容器启动成功

可以访问127.0.0.1:8080,如果可以看到jenkins的登录页面就算安装成功了
在这里插入图片描述
我们查看一下登录密码,输入,就可以登录到jenkins的主页面

4、安装jenkins插件

初始化jenkins的时候,会提示你安装建议的插件或者自行安装插件,我建议大家听jenkins的建议,毕竟当务之急是让jenkins先跑起来。
在这里插入图片描述
jenkins推荐的插件有一点多,需要等一会。

5、创建一个jenkins用户

随便搞一下,但是要记住,否则后面就登录不了jenkins了
在这里插入图片描述
下面这个配置信息,直接使用默认即可,不需要更改
在这里插入图片描述

6、安装jenkins工具

主要就是让jenkins使用上我们容器中的maven。
选择Manage Jenkins标签下的Tools标签
在这里插入图片描述
拉到最后
在这里插入图片描述
/usr/local/maven,是我们容器的maven目录,实际上是映射的宿主机中的maven(创建容器的时候,我们使用-v指定了本地的maven目录映射到容器的/user/local/maven目录中)

7、创建第一个jenkins任务

7.1、创建一个任务

在这里插入图片描述
填写一个任务名称,然后选择Freestyle project,接着点击ok
在这里插入图片描述

7.2、配置git仓库的信息

尤其注意最下面那个main,不是master了,我卡在这个地方好久,太大意了。这里稍微偏点题,github为什么要将用了很多年的master修改为main呢?据说是因为master、slave在老美那边代表的是奴隶制的词汇,很多人建议不要使用这种带有歧视性的词汇,所以github就将主分支的名称从master换成了main
在这里插入图片描述
这里要注意,你填写的git仓库代码,根路径下必须有一个pom文件,否则maven打包就会因为找不到pom而报错:
The goal you specified requires a project to execute but there is no POM in this directory

7.3、执行maven的打包命令

这个地方是为了验证我们的jenkins是不是安装成功了
在这里插入图片描述
在这里插入图片描述

8、测试jenkins打包

点击Build Now标签,开始构建项目,首次构建需要将项目依赖的jar包下载到容器中,可能需要一点时间,第二次构建就快多了。这里注意:我们的首次构建,不是要构建本地项目的docker镜像,只是测试一下jenkins的构建功能是否正常。
如下图,就是正在构建
在这里插入图片描述
如果看到构建任务的结束标志是一个✅,就是构建成功了。反之就是构建失败
在这里插入图片描述

如果构建失败,我们可以点击#1
在这里插入图片描述
然后点击Console Output来查看具体的报错信息
在这里插入图片描述

9、jenkins构建时间和服务器同步

不知道大家有没有注意到构建结果那里的时间和我们的宿主机以及docker容器的时间对不上,差了8个小时。
这是因为,本地宿主机是CST时区,东8区
而docker因为是老美的东西,所以默认是UTC时区,标准时间。这2个时区的时间差是8个小时,所以导致了我们jenkins的构建时间和宿主机差了8个小时。
修改的方式很简单,我们只需要在jenkins上执行一条命令即可
点击Manage Jenkins标签,然后选择最下面的Script Console
在这里插入图片描述
然后输入如下的命令,点击run

System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone','Asia/Shanghai')

如果Result是这个结果,就证明执行成功了
在这里插入图片描述
此时,返回到job的构建结果处,再看我们的构建时间,就和宿主机保持一致了
在这里插入图片描述

下一篇,讲一下如何通过jenkins构建一个本地项目的docker镜像并运行

相关文章:

docker从零部署jenkins保姆级教程

jenkins,基本是最常用的持续集成工具。在实际的工作中,后端研发一般没有jenkins的操作权限,只有一些查看权限,但是我们的代码是经过这个工具构建出来部署到服务器的,所以我觉着有必要了解一下这个工具的搭建过程以及简…...

什么是 MVVM 模式?

MVVM 模式 官方解释:Vue 虽然没有完全遵循 MVVM 模型,但是 Vue 的设计也受到了它的启发。因此在文档中经常会使用 vm (ViewModel 的缩写) 这个变量名表示 Vue 实例。 什么是 MVVM 模式? MVVM 是一种新的开发模式,对比传统模式&…...

WebGL Varing变量的作用和内插过程,及执行Varing时涉及的图形装配、光栅化、颜色插值、片元着色器执行机制等详解

目录 前言 在 WebGL 或 OpenGL 中,“varying” 是一种用于在顶点着色器和片元着色器之间传递数据的特殊类型的变量。它允许在顶点着色器对数据进行处理后,在片元着色器中使用该处理后的数据进行进一步计算。 彩色三个点 ​编辑 彩色三个点示例代码…...

赢在起跑线:战略定位咨询带来的核心价值

在企业的发展之路上,三个核心问题始终伴随着我们:我们是谁?我们要做什么?我们要如何做?在业务的马拉松比赛中,开始时的位置至关重要。而战略定位咨询就是帮助企业赢在起跑线的关键。那么什么是战略定位?战略定位包含…...

【链表OJ 11】复制带随机指针的链表

前言: 💥🎈个人主页:​​​​​​Dream_Chaser~ 🎈💥 ✨✨刷题专栏:http://t.csdn.cn/UlvTc ⛳⛳本篇内容:力扣上链表OJ题目 目录 leetcode138. 复制带随机指针的链表 1. 问题描述 2.代码思路: 2.1拷贝节点插入到…...

Jenkins自动构建(Gitee)

Gitee简介安装JenkinsCLI https://blog.csdn.net/tongxin_tongmeng/article/details/132632743 安装Gitee jenkins-cli install-plugin gitee:1.2.7 # https://plugins.jenkins.io/gitee/releases获取安装命令(稍作变更) JenkinsURL Dashboard-->配置-->Jenkins Locatio…...

nginx离线安装

ngixn的离线安装(centos7) 需要的依赖 gcc、gcc-c pcre-8.42.tar.gz zlib-1.2.11.tar.gz openssl-1.1.1s.tar.gz perl-5.28.0.tar.gz 在进行nginx离线安装时,首先查看系统是否安装 gcc、gcc-c,若没有进行安装,请先进行安装 gcc -v #查…...

Oracle Merge Into ORA-00001: unique constaint violated问题

最近使用Datax同步进行定时数据同步,并在同步完之后进行回调sql进行统计操作。对应的ORACLE表结构如下: create table DATA_STAT_DAY ( DATA_DATE DATE, ID VARCHAR2(2), NAME VARCHAR2(2), CLASSNO VARCHAR2(2), SCORES NUMBER(16,0) );CREATE UNIQU…...

javaScript:DOM中的CSS操作

目录 1.style 属性获取元素写在行间的样式 2.getComputedStyle(元素对象,null)可以获取元素的非行间样式 3.案例(定义一个div和按钮,每点击一次按钮div宽度增加) 效果预览图 代码实现 在 JavaScript 中,可以通过…...

2023最新UI工作室官网个人主页源码/背景音乐/随机壁纸/一言

2023最新UI工作室官网个人主页源码/支持背景音乐/随机壁纸/一言 功能介绍: 载入动画 站点简介 Hitokoto 一言 日期及时间 实时天气 时光进度条 音乐播放器 移动端适配 打开文件;index.html和setting.json修改替换你的相关信息&a…...

常用命令之mysql命令之show命令

一、mysql show命令简介 mysql数据库中show命令是一个非常实用的命令,SHOW命令用于显示MySQL数据库中的信息。它可以用于显示数据库、表、列、索引和用户等各种对象的信息。我们常用的有show databases,show tables,show full processlist等&…...

iOS接入IJKPlayer遇到的问题汇总

这里有一个我自己编译的IJKMediaFramework,能解决目前Github上反馈很多常见的IJKPlayer使用问题(包含播放异常,UI主线程Crash等),替换自己项目中的IJKMediaFramework即可链接: https://pan.baidu.com/s/1UO-YfN_1YIDOX81bgW8bag?pwdvq4u 提取…...

【LeetCode题目详解】第八章 贪心算法 part06 738.单调递增的数字 968.监控二叉树 (day37补)

本文章代码以c为例&#xff01; 一、力扣第738题&#xff1a;单调递增的数字 题目&#xff1a; 当且仅当每个相邻位数上的数字 x 和 y 满足 x < y 时&#xff0c;我们称这个整数是单调递增的。 给定一个整数 n &#xff0c;返回 小于或等于 n 的最大数字&#xff0c;且数…...

代码随想录算法训练营Day48 | 198.打家劫舍,213.打家劫舍II,337.打家劫舍III | Day 20 复习

198.打家劫舍 文章链接 | 题目链接 | 视频链接 C解法 class Solution { public:int rob(vector<int>& nums) {vector<int> dp (nums.size(), 0);if (nums.size() 0){return 0;}if (nums.size() 1){return nums[0];}dp[0] nums[0];dp[1] max(nums[0]…...

Spring Boot @Validated 和Javax的@Valid配合使用

一、Validated 和Valid有什么用 Validation 和Valid 常常配合使用对传输的参数进行数据校验的注解&#xff0c;并通过配置全局异常处理器进行合理化的提示&#xff0c;增加用户的体验 并且Validated可以通过分组来指定什么时候触发什么样的参数校验&#xff08;这里看一下就行…...

论文复现--lightweight-human-pose-estimation-3d-demo.pytorch(单视角多人3D实时动作捕捉DEMO)

分类&#xff1a;动作捕捉 github地址&#xff1a;https://github.com/Daniil-Osokin/lightweight-human-pose-estimation-3d-demo.pytorch 所需环境&#xff1a; Windows10&#xff0c;conda 4.13.0&#xff1b; 目录 conda环境配置安装Pytorch全家桶安装TensorRT&#xff08;…...

在Windows下设置将EXE开机自启动

在Windows下设置将EXE开机自启动&#xff0c;有多种方法。以下是两种常用的方法&#xff1a; 方法一&#xff1a;通过注册表 打开“运行”&#xff08;快捷键&#xff1a;Win R&#xff09;&#xff0c;输入&#xff1a;reg add HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windo…...

反序列化漏洞及漏洞复现

文章目录 渗透测试漏洞原理不安全的反序列化1. 序列化与反序列化1.1 引例1.2 序列化实例1.2.1 定义一个类1.2.2 创建对象1.2.3 反序列化1.2.4 对象注入 2. 漏洞何在2.1 漏洞触发 3. 反序列化漏洞攻防3.1 PHP反序列化实例3.1.1 漏洞利用脚本3.1.2 漏洞利用3.1.3 获取GetShell 3.…...

软件工程笔记001

2023年9月5日&#xff0c;周二上午 软件工程的目标 软件工程的目标是成功地开发一个软件&#xff1a; 较低的开发成本能按时交付软件开发出来的软件该有的功能都有开发出来的软件运行效率高开发出来的软件可靠性高开发出来的软件易于维护 软件的生存周期 概念 软件生存周期…...

java进行系统的限流实现--Guava RateLimiter、简单计数、滑窗计数、信号量、令牌桶

本文主要介绍了几种限流方法&#xff1a;Guava RateLimiter、简单计数、滑窗计数、信号量、令牌桶&#xff0c;漏桶算法和nginx限流等等 1、引入guava集成的工具 pom.xml 文件 <dependency><groupId>com.google.guava</groupId><artifactId>guava<…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战

前言 现在我们有个如下的需求&#xff0c;设计一个邮件发奖的小系统&#xff0c; 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式&#xff08;Decorator Pattern&#xff09;允许向一个现有的对象添加新的功能&#xff0c;同时又不改变其…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来

一、破局&#xff1a;PCB行业的时代之问 在数字经济蓬勃发展的浪潮中&#xff0c;PCB&#xff08;印制电路板&#xff09;作为 “电子产品之母”&#xff0c;其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透&#xff0c;PCB行业面临着前所未有的挑战与机遇。产品迭代…...

SciencePlots——绘制论文中的图片

文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了&#xff1a;一行…...

前端倒计时误差!

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

微信小程序 - 手机震动

一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注&#xff1a;文档 https://developers.weixin.qq…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)

本文把滑坡位移序列拆开、筛优质因子&#xff0c;再用 CNN-BiLSTM-Attention 来动态预测每个子序列&#xff0c;最后重构出总位移&#xff0c;预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵&#xff08;S…...

Docker 本地安装 mysql 数据库

Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker &#xff1b;并安装。 基础操作不再赘述。 打开 macOS 终端&#xff0c;开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

【深度学习新浪潮】什么是credit assignment problem?

Credit Assignment Problem(信用分配问题) 是机器学习,尤其是强化学习(RL)中的核心挑战之一,指的是如何将最终的奖励或惩罚准确地分配给导致该结果的各个中间动作或决策。在序列决策任务中,智能体执行一系列动作后获得一个最终奖励,但每个动作对最终结果的贡献程度往往…...