Jenkins基础介绍以及docker安装Jenkins
什么是Jenkins?
Jenkins是一个可扩展的持续集成引擎
持续集成就是通常说的CI(Continues Integration)
每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误。许多团队发现这个过程可以大大减少集成的问题,让团队能够更快的开发内聚的软件。
白话:大家在公司做测试时,很多时候可能是一个项目有几十个服务功能,每个服务或者几个服务可能被不同的开发人员维护和编写代码,我们测试对应的也可能只验证和测试其中的某几个模块功能,这个时候总不能每次改一个bug,就同时将整个项目重启,所以我们需要持续的根据不同服务来对服务进行发包和集成,其中Jenkins的服务集成以及测试环境的代码合并都是由测试人员进行代码合并以及服务的发送。
Jenkins用处
- 持续、自动地构建、测试软件项目。
- 监控一些定时执行的任务。
Jenkins特性
- 易于安装。只要把jenkins.war包部署到servlet容器即可,不需要数据库的支持,也可以通过docker容器化技术进行安装部署。
- 易于配置。所有的配置都是通过其提供的 web 界面实现得。
- 集成 RSS/E-mail 通过 RSS 发布构建结果或当构建完成时通过 E-mail 通知相关人员以及负责人。
- 插件支持。支持扩展插件,你可以开发适合自己团队使用的工具。
部署:
当自动化检查和测试成功完成,软件构建的周期中可能也需要一些额外的任务,诸如生成文档、打包软件、部署构件到一个运行环境或者软件仓库。这样,构件才能更迅速地提供给用户使用。
部署一个CI系统需要的最低要求是,一个可获取的源代码的仓库(gitee、github等),一个包含构建脚本的项目。
下图概括了CI系统的基本结构:
简单的来看
该系统的各个组成部分是按如下顺序来发挥作用的:
- 开发提交代码到源码仓库中(一般会指定一个测试环境的分支)
- CI系统会为每一个项目创建了一个单独的工作区。当预设或请求一次新的构建时,它将把源代码仓库的源码存放到对应的工作区。
- CI系统会在对应的工作区内执行构建过程。
- 构建完成后,CI系统会在一个新的构件中执行定义的一套测试。完成后触发通知(Email,RSS等)给相关的当事人。(看配置可以不进行发送)
- 如果构建成功,这个构件会被打包并转移到一个部署目标(如应用服务器)或存储为软件仓库中的一个新版本。软件仓库可以是CI系统的一部分,也可以是一个外部的仓库,诸如一个文件服务器或者像 Java.net 、 SourceForge 之类的网站。
- CI系统通常会根据请求发起相应的操作,诸如即时构建、生成报告,或者检索一些构建好的构件。(简单来说就是查询构建过程中可能产生的数据信息,比如启动日志或者服务等)
Jenkins的优点
1、是所有CI产品中在安装和配置上最简单的。
2、基于 Web 访问,用户界面非常友好、直观和灵活,在许多情况下,还提供了AJAX的即时反馈。
3、 Jenkins 是基于 Java 开发的,但它不仅限于构建基于 Java 的软件。
4、Jenkins 拥有大量的插件。这些插件极大的扩展了 Jenkins 的功能;它们都是开源的,而且它们可以直接通过 web 界面来进行安装与管理。
5、Jenkins 一切配置都可以在 web 界面上完成。有些配置如MAVEN_HOME和Email,只需要配置一次,所有的项目就都能用。当然也可以通过修改XML进行配置。
6、每次 build 的结果构件都被很好的自动管理,无需任何配置就可以方便的浏览下载。(即查看历史构建信息)
原文链接:https://blog.csdn.net/kami_ochin_akane/article/details/109779152
Jenkins安装
不采用容器化安装方式
大家看大佬的博客
https://blog.csdn.net/ZHANGLIZENG/article/details/123653860
采用容器化安装方式
假设你还未安装docker,或者对docker还不熟悉可以看洒家关于docker专栏的文章,传送门☚
一、下载Jenkins
docker pull jenkins/jenkins
[root@sulong ~]# docker pull jenkins/jenkins
Using default tag: latest
latest: Pulling from jenkins/jenkins
93c2d578e421: Pull complete
77b97c2ff987: Pull complete
1536c617ae13: Pull complete
24565670b535: Pull complete
3a5e4d5386c8: Pull complete
7fdd59a5bf10: Pull complete
a410f8c85e5b: Pull complete
422a17265fab: Pull complete
d64be9b34ff6: Pull complete
6f269ecf918f: Pull complete
7442d1d88c7b: Pull complete
295549a93c31: Pull complete
d29ce47fca97: Pull complete
Digest: sha256:c9a1bba477d3b9f29c27337d7d537c0926168ab8073b07067a42dda1a35b07f4
Status: Downloaded newer image for jenkins/jenkins:latest
docker.io/jenkins/jenkins:latest
[root@sulong ~]#
二、创建jenkins挂载目录并授予权限
//创建目录
mkdir -p /var/jenkins_home
//授权权限
chmod 777 /var/jenkins_home
[root@sulong ~]# mkdir -p /var/jenkins_home
[root@sulong ~]# chmod 777 /var/jenkins_home
[root@sulong ~]#
三、启动Jenkins容器
-d 后台运行镜像
-p 10240:8080 将镜像的8080端口映射到服务器的10240端口。
-p 10241:50000 将镜像的50000端口映射到服务器的10241端口
-v /var/jenkins_mount:/var/jenkins_home /var/jenkins_home目录为容器jenkins工作目录,我们将硬盘上的一个目录挂载到这个位置,方便后续更新镜像后继续使用原来的工作目录。这里我们设置的就是上面我们创建的 /var/jenkins_home目录
-v /etc/localtime:/etc/localtime让容器使用和服务器同样的时间设置。
–name myjenkins 给容器起一个别名
docker run -d -p 10240:8080 -p 10241:50000 -v /var/jenkins_home:/var/jenkins_home -v /etc/localtime:/etc/localtime --name myjenkins jenkins/jenkins
[root@sulong ~]# docker run -d -p 10240:8080 -p 10241:50000 -v /var/jenkins_home:/var/jenkins_home -v /etc/localtime:/etc/localtime --name myjenkins jenkins/jenkins
a9a348bfdb43ad68639312035880e66bbb878d6bd189c252c20334c207fefe5f
如果下面出现一串说明是可以了
四、验证容器是否启动
docker ps | grep jenkins
[root@sulong ~]# docker ps | grep jenkins
a9a348bfdb43 jenkins/jenkins "/usr/bin/tini -- /u…" 2 minutes ago Up 2 minutes 0.0.0.0:10240->8080/tcp, :::10240->8080/tcp, 0.0.0.0:10241->50000/tcp, :::10241->50000/tcp myjenkins
[root@sulong ~]#
五、浏览器验证,访问Jenkins页面
这里需要分两种情况,
一、如果你使用的是本地虚拟机的方式则:
输入http://192.168.XX.XX:10240
IP是服务器IP地址,端口号是我们刚刚设置的端口号
二、如果你和一样使用的属于自己的服务器
则输入对应的ip加端口进行访问,并将10240端口配置为开放端口
六、获取管理员密码
vim /var/jenkins_home/secrets/initialAdminPassword
[root@sulong ~]# cat /var/jenkins_home/secrets/initialAdminPassword
cfea63003d9a417784769135dd0d67fa
[root@sulong ~]#
获得密码后复制粘贴到浏览器
我直接来一手推荐,后面需要其他奇巧淫技的插件再寻找安装
插件地址:https://plugins.jenkins.io/