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的工作目录,映射到宿主机的一个目录中
第三个:将本地的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镜像并运行

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

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

相关文章

无需租用云服务器:使用Linux本地搭建web服务并实现内网穿透发布公网访问的详细教程

文章目录 前言1. 本地搭建web站点2. 测试局域网访问3. 公开本地web网站3.1 安装cpolar内网穿透3.2 创建http隧道,指向本地80端口3.3 配置后台服务 4. 配置固定二级子域名5. 测试使用固定二级子域名访问本地web站点 前言 在web项目中,部署的web站点需要被外部访问,则…

无锡布里渊——厘米级分布式光纤-锅炉安全监测解决方案

无锡布里渊——厘米级分布式光纤-锅炉安全监测解决方案 厘米级分布式光纤-锅炉安全监测解决方案 1、方案背景与产品简介: 1.1:背景简介: 锅炉作为一种把煤、石油或天燃气等化石燃料所储藏的化学能转换成水或水蒸气的热能的重要设备&#xff…

解决微信小程序recycle-view使用百分比单位控制宽高时出现的内容溢出问题

recycle-view是微信小程序官方推出的一个经过优化的长列表组件,但是在使用百分比单位控制高宽时有个内容溢出问题,虽然它提供了height和width的参数可以设置宽高,但每次写列表都需要去js里获取宽高并设置是较为麻烦的,所以现在来着…

Flink---1、概述、快速上手

1、Flink概述 1.1 Flink是什么 Flink的官网主页地址:https://flink.apache.org/ Flink的核心目标是“数据流上有状态的计算”(Stateful Computations over Data Streams)。 具体说明:Apache Flink是一个“框架和分布式处理引擎”,用于对无界…

css网格布局

css网格布局 常用属性 display: grid; //开启网格grid-template-columns: 2fr 1fr 1fr 1fr 1fr; //设置多少列每列宽度grid-gap: 10px; // 设置表格之间间距grid-template-rows: 50px 50px 50px 50px; // 设置多少行 每行的高度grid-column : 1 //占据位置 占据1格grid-colu…

NPM 常用命令(三)

目录 1、npm compltion 1.1 描述 2、npm config 2.1 常用命令 2.2 描述 set get list delete edit fix 2.3 配置 json global editor location long 3、npm dedupe 3.1 描述 3.2 配置 4、npm deprecate 4.1 命令使用 4.2 描述 4.3 配置 registry ot…

redis 5.0.x 部署

PS:对于使用者来说,Redis5.0和4.0都是一样的,但是redis 4.0的集群部署需要额外安装ruby的东西,5.0中则集成到了redis-cli,部署起来更方便 1.1 安装Redis 本章基于CentOS 7.9.2009编写而成,由于Linux发行版…

电商平台api对接货源

如今,电商平台已经成为了人们购物的主要途径之一。 然而,对于电商平台来说,货源对接一直是一个比较棘手的问题。为了解决这个问题,越来越多的电商平台开始使用API来对接货源。 API,即应用程序接口,是一种允…

ToBeWritten之基于ATTCK的模拟攻击:闭环的防御与安全运营

也许每个人出生的时候都以为这世界都是为他一个人而存在的,当他发现自己错的时候,他便开始长大 少走了弯路,也就错过了风景,无论如何,感谢经历 转移发布平台通知:将不再在CSDN博客发布新文章,敬…

IDEA中使用Git

参考文章 1. IDEA中配置Git 2 IDEA 中使用Git 2.1 拉取项目 选择File→New→Project from Version Control。 从码云,github中也都可以拉取,实际工作中可能存在于公司搭建的GitLab中。 复制此项目的git地址,填入URL,Director…

Oracle数据库尚硅谷学习笔记

文章目录 Oracle数据库体系结构简介补充SQL初步导入sql文件别名连接符distinct去重的坑 过滤和排序数据日期格式比较运算其它比较运算符逻辑运算优先级排序 单行函数SQL中不同类型的函数单行函数字符数值日期转换通用 使用条件表达式嵌套查询 多表查询等值连接非等值连接左外连…

大模型综述论文笔记6-15

这里写自定义目录标题 KeywordsBackgroud for LLMsTechnical Evolution of GPT-series ModelsResearch of OpenAI on LLMs can be roughly divided into the following stagesEarly ExplorationsCapacity LeapCapacity EnhancementThe Milestones of Language Models Resources…