最近在学docker和jenkins,docker网上的教程很多也很全,但是就是这个jenkins,教程要么很老,不实用,要么很乱看不懂,给你个代码喊你跑,但也跑不通,就很气人,这里我总结了很多坑人的地方,连官方文档都坑,希望大家看了我的文章都能很好的入门
安装docker就不讲了,我们直接pull下来使用
# 这里可以看出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
这里我就直接说一下下载镜像和跑容器的代码了,不展示具体的细节了
如果是没有学过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中的config.xml文件
[root@instance-3806mxkl jenkins_home]# vim /data/jenkins_home/config.xml
# 把false 中的false改为true
<crumbIssuer class="hudson.security.csrf.DefaultCrumbIssuer">
<excludeClientIPFromCrumb>true</excludeClientIPFromCrumb>
</crumbIssuer>
# 重启docker的jenkins容器
[root@instance-3806mxkl jenkins_home]# docker restart jenkins
[root@instance-3806mxkl jenkins_home]# docker logs jenkins
忘了也没关系,我们查看一下密码就行
cat /data/jenkins_home/secretes/initialAdminPassword
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所有的插件及说明