jenkins使用docker安装保姆级教程(面向小白教程,最新最全,全图文)2022-8-1,不会docker也没关系

  • Post author:
  • Post category:其他

最新jenkins使用docker安装教程

最近在学docker和jenkins,docker网上的教程很多也很全,但是就是这个jenkins,教程要么很老,不实用,要么很乱看不懂,给你个代码喊你跑,但也跑不通,就很气人,这里我总结了很多坑人的地方,连官方文档都坑,希望大家看了我的文章都能很好的入门

安装docker就不讲了,我们直接pull下来使用

先来看看dockerHub下面的jenkins版本信息

# 这里可以看出jenkins被弃用了,虽然下载的人多,但是看下图已经有两三年没有更新了,他也提醒我们使用 jenkins/jenkins:lts ,但是我们这里不要下载这个,我们去dockerhub上面看一下

[root@instance-3806mxkl ~]# docker search jenkins
NAME                               DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
jenkins                            DEPRECATED; use "jenkins/jenkins:lts" instead   5522      [OK]       
jenkins/jenkins                    The leading open source automation server       3087                 
jenkins/jnlp-slave                 a Jenkins agent which can connect to Jenkins…   150                  [OK]
jenkins/inbound-agent                                                              66                   
bitnami/jenkins                    Bitnami Docker Image for Jenkins                53                   [OK]
jenkins/slave                      base image for a Jenkins Agent, which includ…   48                   [OK]
jenkins/agent                                                                      41                   
jenkins/ssh-slave                  A Jenkins slave using SSH to establish conne…   38                   [OK]
jenkins/ssh-agent                  Docker image for Jenkins agents connected ov…   24                   
jenkins/jnlp-agent-docker                                                          8                    
jenkins/jnlp-agent-maven           A JNLP-based agent with Maven 3 built in        7                    
jenkins/pct                        Plugin Compat Tester                            5                    [OK]
jenkins/jnlp-agent-python          A JNLP-based agent with Python built in         3                    
jenkins/jenkins-experimental       Experimental images of Jenkins. These images…   3                    [OK]
jenkins/jnlp-agent-alpine                                                          2                    
jenkins/jnlp-agent-node                                                            1                    
jenkins/jnlp-agent-ruby                                                            1                    
rancher/jenkins-jenkins                                                            1                    
jenkins/remoting-kafka-agent       Remoting Kafka Agent                            1                    [OK]
jenkins/jenkinsfile-runner         Jenkinsfile Runner packages                     1                    
jenkins/core-pr-tester             Docker image for testing pull-requests sent …   1                    
jenkins/ath                        Jenkins Acceptance Test Harness                 1                    [OK]
jenkins/core-changelog-generator   Tool for generating Jenkins core changelogs     1                    
rancher/jenkins-slave              Jenkins Build Slave                             0                    [OK]
rancher/jenkins-jnlp-slave                                                         0                    

在这里插入图片描述

查看dockerhub中jenkins的信息(点击jenkins/jenkins)

在这里插入图片描述

安装命令

这里我就直接说一下下载镜像和跑容器的代码了,不展示具体的细节了

如果是没有学过docker的小伙伴,去网上找一个dockerhub的镜像,虽然如果不是阿里云的镜像还是会很慢,但是还是比平常快的多,不然你会像小编一样玩着王者等安装,一等就是一下午

一般服务器的dockerhub镜像加速

因为阿里的镜像要内网,使用非常的快,但是不开放给他人使用,一般一个实例对应一个地址,如果你是阿里的服务器就看docker配置阿里云镜像加速

# 下载镜像
[root@instance-3806mxkl ~]# docker pull jenkins/jenkins:lts-jdk11

# 跑容器
[root@instance-3806mxkl ~]# docker run -d -v /data/jenkins_home:/var/jenkins_home  -p 8081:8080 -p 50000:50000 --restart=on-failure -u 0 --name jenkins  jenkins/jenkins:lts-jdk11


# 在这里我简单的说一下这些命令的作用
# docker 执行docker命令
# run    运行容器
# -d     后台运行
# -v     挂着容器卷,这里我本地/data/jenkins_home的文件作为容器中的/var/jenkins_home目录下的文件源,就是说容器中的/var/jenkins_home这个目录就是本地的/data/jenkins_home这个目录,简单说就是本地作为源文件,docker容器跑起来,把解压的内容放在本地这个文件,容器中用/var/jenkins_home目录来读取本地的/data/jenkins_home目录                  我嘴笨,实在不理解的话,就这样docker容器是与本地隔离的,你从本地访问不到docker容器的文件,使用 -v 挂着出来后,就可以在本地修改原来只能在docker容器中修改的文件,好处是容器挂掉了,本地还留有文件,也可以理解为持久化+操作方便
# -p     映射端口 左边是本地端口 右边是docker容器 jenkins本身的端口 因为我本地有个tomcat是8080端口,改为了8081 50000是jenkins中JNLP所需的服务端口
# --restart=on-failure 失败重启
# -u 0   给本地/jenkins_home文件权限
# --name 给容器一个名字
# 最后一个跟下载的容器名+版本号 一点要带版本号,你不带的话又要从dockerhub中找最新的下载了

容器跑起来后,需要我们先把新版本中Jenkins的CSRF安全校验关掉,这里后面登录也会提

# 修改本地挂载出来的jenkins中的config.xml文件
[root@instance-3806mxkl jenkins_home]# vim /data/jenkins_home/config.xml

# 把<excludeClientIPFromCrumb>false</excludeClientIPFromCrumb>  中的false改为true
  <crumbIssuer class="hudson.security.csrf.DefaultCrumbIssuer">
    <excludeClientIPFromCrumb>true</excludeClientIPFromCrumb>
  </crumbIssuer>
  
# 重启docker的jenkins容器
[root@instance-3806mxkl jenkins_home]# docker restart jenkins

重新跑起来后,我们打开ip:8081查看一下登录情况

[root@instance-3806mxkl jenkins_home]# docker logs jenkins

在这里插入图片描述

把这串复制一下等下有用,然后我们等一下,这里构建文件,有点慢,你感觉等得有点久了,可以刷新一下页面,虽然他说等加载好了,他自动刷新,但小编等了很久,最后不耐烦了手动刷新一下,才显示的登录页面

在这里插入图片描述

这里填写刚才我们在日志中看见的密码

忘了也没关系,我们查看一下密码就行

cat /data/jenkins_home/secretes/initialAdminPassword

在这里插入图片描述

按着步骤来

在这里插入图片描述

等待

在这里插入图片描述

接下来需要我们自定义账号密码(这里没有关闭CSRF安全校验并且重启,是登录不了的,只能使用管理员登录),也可以使用管理员登录(账号是admin,密码是initialAdminPassword文件中的密码,我没记错的话好像就行日志中输出的随机密码)

在这里插入图片描述

这里默认就行

在这里插入图片描述

这样就进去jenkins页面了

在这里插入图片描述

在这里插入图片描述

这里我介绍一下有几个必下插件(带图片的)

gitee(后面我会按照gitee的来讲一篇文件)

在这里插入图片描述

gitleb

在这里插入图片描述

github(我暂时没用到,这应该是自带的吧)

在这里插入图片描述

Publish Over SSH

在这里插入图片描述

Jersey 2 API(这个有些人连接gitee时需要,我就卡在这卡了半天,真服了)

在这里插入图片描述

Docker

在这里插入图片描述

Chinese(推荐安装完是自带的)

在这里插入图片描述

插件归纳总结

jenkins常用插件汇总:
Build-timeout Plugin:任务构建超时插件
Naginator Plugin:任务重试插件
Build User Vars Plugin:用户变量获取插件
Build Pipeline Plugin View :Pipeline 管道流图表展示插件

Build Flow Plugin:工作流插件,支持DSL脚本定义工作流
Build Graph View Plugin:build Flow插件视图(安装后需要重新才能生效)
Multijob Plugin:多任务插件
Build-timeout Plugin:job构建超时插件
Build Timestamp Plugin :任务log时间戳插件,使得job log的每次输出前面都增加当时的时间
Parameterized Trigger Plugin:这是一个扩展型的插件,使各个job连接的时候可以传递一些job相关的信息
Join Plugin:这也是一个触发job的插件,亮点在于它触发job的条件是等待所有当前job的下游的job都完成才会发生。
Files Found Trigger:检测指定的目录,如果发现指定模式的文件则启动build。
BuildResultTrigger Plugin:根据其他的job的成功或失败来启动此build。
Publish Over SSH Plugin:通过ssh发布文件
Rebuild Plugin:重新执行插件
ws-cleanup Plugin :workspace清理插件
Cron Column Plugin: 通过定时任务例行的运行一些job
Job Configuration History Plugin:使用心得:使job具备版本管理的能力,diff和rollback功能更是非常赞
HTTP Request Plugin:使用心得:在构建前后可以通过该插件以http形式调用各种api接口实现和内部系统的联动
Periodic Backup:使用心得:备份是运维一个系统必须要保障的事情,该插件的恢复功能可能不可用,需要手工进行,好处在于可以定时备份
Job Import Plugin:使用心得:可以快速导入其他jenkins集群的已有job,需要认证的jenkins系统导入需要提供凭证才可以
Status Monitor Plugin:构建状态插件
Build Monitor View :使用心得:基于该插件可以实现dashboard功能
Build Environment Plugin:构建环境插件,可以进行构建环境比较。
FTP插件:
Monitoring:Monitoring of Jenkins

基础依赖插件:
jQuery Plugin:jQuery插件

Git Parameter
这是一个参数构建扩展,可以在构建的时候选择git的某一个分支来构建服务。

Docker
利用Docker容器动态创建Jenkins Slave。如果有了Kubernetes/Openshift集群,就不需要这个插件了。直接使用下面的Kubernetes插件。
jenkins非root启动的话,为了运行docker需要执行sudo chmod 777 /var/run/docker.sock

Kubernetes
这个插件可以将Jenkins Slave Node动态配置为Kubernetes集群上的pod。

Openshift
这个插件支持调度Openshift的对象,包括触发 BuildConfig、Deployment、Scale up a Deployment,给ImageStream打新的Tag,以及创建新的对象、删除已有对象等。

GitLab
配置Gitlab的相关认证,同时也支持GitLab的Webhook触发。

GitLab Hook
支持GitLab更好的触发。

Gogs WebHook
支持Gogs代码仓库的触发。

Maven
这个插件为Maven 2 / 3项目提供了高级集成功能。

Pyenv Pipeline
方便对python进行项目级别的环境隔离。
jenkins机器上需要安装python、pip、virtualenv

Python
这个插件支持在Jenkins的构建过程中执行Python脚本。

SonarQube Scanner
支持SonarQube的代码扫描。

Ansible
在构建任务中可以执行Ansible任务。

Publish Over SSH
通过SSH拷贝文件到目标机器,同时可以在目标机器上执行脚本

Publish Over SSH
事先要在设置中添加目标机器的访问方式。

Job Generator
定义一个参数化的模板,通过这个模板快速的在 Jenkins 上创建出任务。

Job Generator
Pipeline:Job
添加一个新的Job类型:Pipeline。

Pipeline:Job
Multijob
把多个Job组织起来。

Parameterized Trigger
这是一个扩展型的插件,使各个job连接的时候可以传递一些job相关的信息。

Join
这也是一个触发job的插件,亮点在于它触发job的条件是等待所有当前job的下游的job都完成才会发生。

Build Pipeline
这个插件提供一个构建流水线的视图。同时它提供了一个任务的手动触发器。

Build Pipeline
Build Monitor View
将Jenkins项目以一块看板的形式呈现。

Build Monitor View
JUnit
展示JUnit单元测试报告。

TestNG Results
导出TestNG的测试报告。

JaCoCo
生成测试覆盖率的报告。

Performance
生成性能测试报告
需要在Jenkins机器上安装Taurus(开源负载测试工具和功能测试工具自动化框架)

Performance
Html Publisher
生成报告文档。参考资料:https://www.jianshu.com/p/8fb776f83243

Email Extension
扩展了发送告警邮件的控制力度。可以定义邮件触发器、邮件内容、收件人。

Mailer
每次不稳定的构建都发送邮件通知。
单独发送邮件给对构建造成不良影响的责任人,会从SCM提交者人的信息中,拼出邮箱。

Sounds
这个插件能让Jenkins通过播放声音来发出通知。

Workspace Cleanup
每次build之前删除workspace目录下指定的文件

Workspace Cleanup
Role-based Authorization Strategy 用户角色
给Jenkins用户权限管理添加了角色组。

Matrix Authorization Strategy Plugin
为每个项目设置用户权限

Disk Usage
对Jenkins节点服务器磁盘的监控。

Disk Usage
Monitoring监控
监控Jenkins节点的CPU、系统负载、平均响应时间和内存使用。

Monitoring监控
Backup备份Jenkins
自定义备份Jenkins Home目录。

Backup备份Jenkins
ThinBackup轻量备份Jenkins
轻量备份Jenkins上的配置与Job

ThinBackup轻量备份Jenkins
SCM Sync Configuration

SCM Sync Configuration
预先要在全局配置中设置代码版本控制库的配置,每次创建或更新job配置时都会提示是否同步配置

作为CI/CD的调度中心,Jenkins具有十八般武艺,目前已有1700多个插件,功能强大到似乎有点过分了。本文主要列出平时我们常用的插件。

以下这两个网站是Jenkins所有的插件及说明

Jenkins Plugins https://plugins.jenkins.io

Jinkins Plugins Wiki https://wiki.jenkins.io

关于安装的讲解我已经讲完了,我感觉应该挺详细了吧,还不懂的朋友评论私信我,我都会回的,我也是才学,把学会的知识分析给大家,希望大家不要像我一样踩坑,欢迎大神评论点评,后面我也会继续介绍jenkins集成springboot和Vue相关的知识点和文章,但也要等我学了来,点赞越多更新越快哦

2022-08-03最新更新:使用jenkins+gitee创建docker镜像并运行

2022-08-11最新更新:jenkins流水线(jenkinsfile)详解,保姆式教程

2022-08-11最新更新:CICD与DevOps


版权声明:本文为qq_57581439原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。