最新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的镜像,虽然如果不是阿里云的镜像还是会很慢,但是还是比平常快的多,不然你会像小编一样玩着王者等安装,一等就是一下午
因为阿里的镜像要内网,使用非常的快,但是不开放给他人使用,一般一个实例对应一个地址,如果你是阿里的服务器就看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.sockKubernetes
这个插件可以将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、virtualenvPython
这个插件支持在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/8fb776f83243Email 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上的配置与JobThinBackup轻量备份Jenkins
SCM Sync ConfigurationSCM 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
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/74743.html