Jenkins持续集成入门到精通(一)

什么是持续集成

持续集成(Continuous Integration)简称C I 指的是 频繁(一天多次)将代码集成到骨干。
持续集成的目的,就是让产品可以快速迭代,同时还能保持高质量。。它的核心措施是,代码集成到骨干之前必须通过自动化测试。只要有一个测试用例失败,就不能集成。
通过持续集成,团队可以快速的从一个功能到另一个功能,简而言之,敏捷软件开发 很大一个部分都要归功于持续集成。
持续集成部署到流程在这里插入图片描述

根据持续集成的设计,代码从提交到生产,zeng ti包含以下流程:

  • 提交

第一步,开发者向代码仓库提交代码,所有后续的步骤都始于本地代码的一次提交(commit)。

  • 测试(第一轮)

代码仓库对commit操作设置了钩子(hook),只要提交代码或者合并进主干,就会启动自动化测试。
第一轮至少跑完单元测试。

  • 构建

通过第一轮测试,代码合并进主干,就可以交付了。
交付后,就进行构建(build),再进入第二轮测试,构建指的是将源码转换为可以运行的实际代码,比如安装依赖、配置各种资源(样式表、js脚本、图片等)等。
常用的构建工具有:Jenkins、Travis、Codeship等。

  • 测试(第二轮)

构建完成后,就进行第二轮测试,第二轮是全面测试,包含单元测试、集成测试,以自动化测试为主,新版本的每一个更新点都要测试到。

  • 部署

通过第二轮测试,代码就是可直接部署的版本,将这个版本的所有文件(jar,wer等)打包存档,发到生产服务器,生产服务器将其解包成本地的一个目录,再将运行路径的符号链接指向这个目录,然后重新启动应用。

  • 回滚

一旦之前的版本发生问题,就要回滚到上一个版本的构建结果。最简单的做法是修改符号链接,指向上一个版本的目录。

持续集成到组成

  1. 一个自动构建过程,从检出代码、编译构建、运行测试、结果记录、测试统计等都是自动完成的,无需人工干预。
  2. 一个代码存储器,即需要版本控制软件来保障代码的可维护性,一半使用git或svn
  3. 一个持续集成服务器,Jenkins就是一个配置简单和使用方便的持续集成服务器。

持续集成的好处

  1. 降低风险,减少反复的操作
  2. 减少发布风险带来的问题
  3. 减少重复性工作
  4. 持续部署,可提供可部署的单元包
  5. 持续交付可供使用的版本
  6. 增强团队信息

Jenkins

在这里插入图片描述

作为领先的开源自动化服务器,Jenkins 提供了数百个插件来支持任何项目的构建、部署和自动化。
Jenkins 特点:

  1. 作为可扩展的自动化服务器,Jenkins 可以用作简单的 CI 服务器或变成任何项目的持续交付中心。
  2. Jenkins 是一个独立的基于 Java 的程序,可以开箱即用,带有适用于 Windows、Linux、macOS 和其他类 Unix 操作系统的软件包。
  3. Jenkins 可以通过其 Web 界面轻松设置和配置,其中包括即时错误检查和内置帮助。
  4. 通过更新中心中的数百个插件,Jenkins 几乎可以与持续集成和持续交付工具链中的所有工具集成。
  5. Jenkins 可以通过其插件架构进行扩展,为 Jenkins 的功能提供近乎无限的可能性。
  6. Jenkins 可以轻松地在多台机器上分配工作,帮助更快地推动跨多个平台的构建、测试和部署。
    在这里插入图片描述

Jenkins 安装和持续集成环境配置

持续集成流程说明

  1. 首先 开发人员每天进行代码提交,提交到git仓库
  2. 然后Jenkins作为持续集成工具,私有git工具到git仓库拉去代码到集成服务器,再配合jdk,maven等软件完成代码编译,代码测试与审核,测试,打包等工作,在这个过程每一步出错,都重新再执行一次整个流程。
  3. 最后 Jenkins把7
  4. 生成的jar或war包分发到测试服务器或者生产服务器,测试人员或用户就可以访问应用。

服务器列表

名称ip安装到软件
代码托管服务器Gitlab-12.4.2
持续集成服务器Jenkins-2.190.3,jdk1.8,Maven3.6.2,git,SonarQube
应用测试服务器jdk1.8,tomcat8。5

Gitlab代码托管服务器安装

GitLab

GitLab是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的Git项目仓库,部署在自己的服务器,可通过Web界面进行访问公开的或者私人项目。

它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找。

GitLab 普通 安装
  1. 安装相关依赖包
sudo yum install -y curl policycoreutils-python openssh-server perl
  1. 启动ssh服务并设置为开启启动
sudo systemctl enable sshd
sudo systemctl start sshd
  1. 下载postfix,并设置postfix开启自启动,postfix支持gitlab发信功能
sudo yum install postfix
sudo systemctl enable postfix
sudo systemctl start postfix
  1. 开放ssh以及http服务,然后重新加载防火墙列表
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo systemctl reload firewalld
  1. 下载gitlab包,并安装
    下载地址:https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-12.4.2-ce.0.el7.x86_64.rpm
    安装:rpm -ivh gitlab-ce-12.4.2-ce.0.el7.x86_64.rpm

  2. 修改gitlab配置

vi	/etc/gitlab/gitlab.rb
## 修改gitlab访问地址和端口,默认为80 ,我们修改为82
external_url 'http://192.168.66.100:82'
nginx['listen_port'] = 82
  1. 重载配置以及启动gitlab
gitlab-ctl reconfigure
gitlab-ctl restart
  1. 把端口添加到防火墙(关闭防火墙就不用)
firewall-cmd --zone=public --add-port=82/tcp --permanent
firewall-cmd --reload

启动成功后,看到修改管理员root密码的页面,修改密码后,然后登陆即可!
在这里插入图片描述

GitLab Docker 安装
Gitlab添加组、创建用户、创建项目

1) 创建组
使用管理员root创建组,一个组里面可以有多个项目分支,可以将开发添加到组里面进行设置权限,不同的组就是公司不同的开发项目或者服务模块,不同的组添加不同到开发即可实现对开发设置权限的管理。

  1. 创建组
    在这里插入图片描述
  2. 创建项目

在这里插入图片描述
2)创建用户

  1. 创建普通用户填写信息
    在这里插入图片描述
    在这里插入图片描述

Regular:普通用户可以访问他们的组和项目
Admin:管理员可以访问所有组、项目和用户,并可以管理此安装中的所有功能
2. 设置用户密码
在这里插入图片描述
在这里插入图片描述
3)给用户设置项目组权限
在这里插入图片描述
在这里插入图片描述

Guest: 可以创建issue、发布评论、不能读写版本库
Reporter: 可以克隆代码、不能提交,QA,PM可以赋予这个权限
Developer: 可以克隆代码、开发、提交、push,普通开发可以赋予这个q权限
Maintainer: 可以创建项目、添加tag、保护分支、添加项目成员、编辑项目、核心开发可以授予这个权限
Owner: 可以设置项目访问权限-Visbility Level、删除项目、迁移项目、管理项目组成员、开发组组长可以赋予这个权限。

使用普通用户登陆
可以直接看到我们的组
在这里插入图片描述
4)在用户组中创建项目
刚才登陆的用户可以进行创建项目
在这里插入图片描述

Idea代码上传到gitlab

首先在idea 创建项目,并启动测试成功
在这里插入图片描述
然后给项目添加git
在这里插入图片描述
在这里插入图片描述
将项目添加到本地git仓库并提交
在这里插入图片描述
在这里插入图片描述
最后push到远程gitlab仓库

在这里插入图片描述
这里使用的地址使用ssh,之后会输入正好密码
在这里插入图片描述
然后进行push
在这里插入图片描述
上传成功!!!

Jenkins 软件安装 Docker的方式

  1. docker 拉取镜像
docker pull jenkins/jenkins
  1. 创建目录并赋予权限
    mkdir -p /var/jenkins_mount
    chmod 777 /var/jenkins_mount
  2. docker 创建并启动容器
docker run -d -p 10240:8080 -p 10241:50000 /
-v /var/jenkins_mount:/var/jenkins_home	/
-v /etc/localtime:/etc/localtime /
--name myjenkins jenkins/jenkins
端口 映射
-p 10240:8080 -p 10241:50000

挂载目录为容器jenkins工作目录,我们将硬盘上的一个目录挂载到这个位置:
-v /var/jenkins_mount:/var/jenkins_home

让容器使用和服务器同样的时间设置。
-v /etc/localtime:/etc/localtime

4.配置镜像加速
默认的Jenkins是使用国外的地址所以非常慢。

cd /var/jenkins_mount/updates

然后执行

sudo sed -i 's#http://updates.jenkins-ci.org/download#https://mirrors.tuna.tsinghua.edu.cn/jenkins#g' default.json && sed -i 's#http://www.google.com#https://www.baidu.com#g' default.json

这个博客写的非常详细
5. 重启容器
docker restart myjenkins

启动成功
在这里插入图片描述
6. 查看管理员密码

[root@localhost jenkins_mount]# cat /var/jenkins_mount/secrets/initialAdminPassword 
46f87f2955484e489f82262aaf58ed83

登陆成功!!
在这里插入图片描述
这里我们点击选择插件安装,然后选择无。 这里我们不进行插件安装,后续再安装
在这里插入图片描述

在这里插入图片描述
后续一直确定就完成了安装!

Jenkins 插件管理
安装中文包

首先进入我们插件管理
在这里插入图片描述
搜索 chinese ,然后选择中文包 下载
在这里插入图片描述
点击Go back to the。。。
在这里插入图片描述
重新打开后
在这里插入图片描述

Jenkins用户权限管理

我们利用Role-based Authorization Strategy 插件管理Jenkins用户权限
安装Role-based Authorization Strategy插件
在这里插入图片描述
然后进行全局安全权限配置
在这里插入图片描述

在这里插入图片描述

  1. 创建我们的角色权限管理
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  2. 添加两个用户,分别给这两个用户进行 角色授权
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  3. 测试我们的角色权限
    新建几个项目
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/7f92b4429c5e42d1b980914db052ff61.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L29ubHlvbmVtaW5nbWluZw==,siz
    然后登陆xiaoming1用户发现。只能查看到xiaoming开头的项目任务
    t在这里插入图片描述
Jenkins 凭证管理

凭据可以用来存储需要密文保护的数据库密码、Gitlab密码信息、Docker 私有仓库密码等,以便于Jenkins可以和这些第三方等应用进行交互。

安装Credentials Binding 插件

要在Jenkins使用凭证管理功能,需要安装Credentials Binding插件
在这里插入图片描述
下一步
在这里插入图片描述
下一步
在这里插入图片描述
选取凭证类型

在这里插入图片描述
一共有5种凭证
在这里插入图片描述

安装git插件和git工具

为了让Jenkins支持从gitlab拉取源码,需要安装git插件以及在CentOS上安装Git工具
git插件安装:在这里插入图片描述
CentOS上安装GIT工具
yum install git -y 安装
git --version 安装后查看版本

用户密码类型

添加凭证,使用gitlab的账号密码
在这里插入图片描述
在这里插入图片描述
创建项目给项目添加git 用户密码凭证
在这里插入图片描述
构建项目
在这里插入图片描述

SSH密钥类型

在这里插入图片描述
1)使用root用户生成公钥和私钥

ssh-keygen -t rsa
在/root/.ssh/ 目录保存了公钥和私钥
在这里插入图片描述
id_rsa : 私钥
id_rsa.pub :公钥
2)把生成的公钥放在gitlab中

  1. 在Jenkins机器上面查看公钥
[root@cn-mbp-c02v221ahv2f .ssh]# cat id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDjVAyIBpy1kpFZGJgQ7bZS+PVS6ypKlCFuXDrosTCr8lD2/k5mKdlWS7llf4S+buQgB3l3h0jDxGRw3c+fBG/txbFzNiN0vAYX8Wx0N+12NccqhIdrrp0lGavLuEZqkdlL6Jz4o2jpJjyoRliPLY41ZhJ6eYS6kDuGvJcsN1PsOs7Dq3F2b43qfxTIjvJ3T6I5tLdtyr5qGosMEDCg0fJ/9DOE3pJscKCwWkf5+C07A4+NOmJQbh6+h1WplAbLdQOtn6e0eFcJOOyhaLRF++HPcLVMcdlI4KAB0OvU4rLyq5BGeyAF9nmGdpJm1Enz22cS0ic/rxh4J71n8lcbGg/D root@cn-mbp-c02v221ahv2f
  1. 到我们gitlab 上 添加公共ssh密钥
    在这里插入图片描述
    在这里插入图片描述
    3)把生成的私钥添加到Jenkins凭证中
    在这里插入图片描述
    在这里插入图片描述
    最后测试

创建一个项目并使用ssh方式
在这里插入图片描述
在这里插入图片描述
完成ssh类型拉去代码!!

安装Maven和配置
安装maven以及java

首先maven依赖java环境

 tar -zvxf jdk-8u301-linux-i586.tar.gz 
 tar -zvxf apache-maven-3.8.1-bin.tar.gz 

配置jdk和maven的环境

# java
export JAVA_HOME=/home/java/jdk1.8.0_301
export JRE_HOME=/home/java/jdk1.8.0_301/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$JAVA_HOME:$PATH

# maven
export MAVEN_HOME=/home/maven/apache-maven-3.8.1
export PATH=$MAVEN_HOME/bin:$PATH

执行 source /etc/profile 进行刷新文件

## 查看版本
java -- version
mvn -v

修改maven的配置文件下载使用阿里的

 <!-- 从阿里云镜像下载jar包 -->
  <mirrors>
	<mirror>
      <id>alimaven</id>
      <name>aliyun maven</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
      <mirrorOf>central</mirrorOf>        
    </mirror>
  </mirrors>
启动Jenkins 挂载java 以及 maven

之前的容器删除。

docker run -d -p 10240:8080 -p 10241:50000 \
-v /var/jenkins_mount:/var/jenkins_home \
-v /home/maven/apache-maven-3.8.1:/usr/local/maven \
-v /home/java/jdk1.8.0_301:/usr/local/java \
--name myjenkins jenkins/jenkins
全局工具配置jenkins关联JDK和Maven

然后配置Jenkins环境
在这里插入图片描述
修改jdk和maven配置
这里的JAVA_HOME 和MAVE
在这里插入图片描述
安装 maven 插件
Maven Integration plugin
在这里插入图片描述
创建项目并构建打包
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
打包成功!!

使用Docker 安装tomcat 并打包部署
安装

启动一个基础tomcat

docker run -d -p 8081:8080 mysql:8.5

cp tomcat文件到本地

 docker cp b5c948b981ec:/usr/local/tomcat/webapps.dist /home/tomcat/webapps/
 docker cp b5c948b981ec:/usr/local/tomcat/conf /home/tomcat/conf/
  docker cp b5c948b981ec:/usr/local/tomcat/logs /home/tomcat/logs/

停止并删除基础tomcat镜像

docker stop tomcat
docker rm tomcat

启动tomcat 容器并进行挂载

docker run -d -p 8088:8080 --name tomcat1 \
-v /home/tomcat/conf:/usr/local/tomcat/conf \
-v /home/tomcat/logs:/usr/local/tomcat/logs \
-v /home/tomcat/webapps:/usr/local/tomcat/webapps tomcat:8.5

配置tomcat用户
进入conf目录下,找到tomcat-users.xml文件,然后配置一些用户名即权限

<role rolename="tomcat"/> 
<role rolename="role1"/> 
<role rolename="manager-script"/> 
<role rolename="manager-gui"/> 
<role rolename="manager-status"/> 
<role rolename="admin-gui"/> 
<role rolename="admin-script"/> 
<user username="tomcat" password="tomcat" roles="manager-gui,manager-script,tomcat,admin-gui,admin-script"/>

在这里插入图片描述
下面再取到webapp目录下修改一个context文件,默认情况下,web的ui界面是看不到的,需要注释掉下面的这段配置即可

cd /home/tomcat/webapps/manager/META-INF

vi context.xml

在这里插入图片描述
再次启动tomcat之后,我们再次点击manage webapp,弹出需要验证用户名的界面
在这里插入图片描述

jenkins安装Deploy to container插件

可以想象一下,jenkins怎么才能将打好的jar包或者war包推送到指定的tomcat容器中启动运行呢?肯定需要在某个地方配置远程的tomcat容器地址,比如war包是放在webapp目录的地址,这样才可以吧?下面看具体的操作

搜索Deploy to container并安装
安装好之后配置项目

在这里插入图片描述
添加密钥
账号是tomcat 密码是tomcat

配置完保存

点击构建

在这里插入图片描述
最后就可以访问到我们的web项目了!

### 回答1: "Jenkins持续集成入门精通PDF"这本书是本涵盖了Jenkins持续集成全方位内容的工具书,适合想要从入门精通Jenkins自动化构建工具的人士,是Jenkins学习的绝佳指南。 该书首先介绍了Jenkins的概念、架构和安装方法,然后深入讲解了Jenkins的管道和插件的使用,以及如何将Jenkins与其他工具集成。书中还详细介绍了如何构建、测试和部署Web项目,并提供了许多实际案例,帮助读者更好地了解如何使用Jenkins。 此外,该书还深入讲解了Jenkins的扩展和自动化的最佳实践,以及如何优化Jenkins的性能和安全性。该书包含大量的示例代码和实用建议,让读者更快地掌握Jenkins的使用技巧。 总之,"Jenkins持续集成入门精通PDF"是本全面详细的Jenkins学习指南,涵盖了Jenkins的方方面面,可以帮助读者快速掌握Jenkins的基本概念和使用技巧,进而精通Jenkins。建议想深入学习Jenkins的人可以阅读此书,可以为您的职业发展打好基础。 ### 回答2: Jenkins个开源的持续集成工具,它可以帮助我们实现自动化的构建和测试,以及自动部署到测试环境和生产环境。而《Jenkins持续集成入门精通》这本书则是针对Jenkins的全面介绍和指南。 该书首先介绍了Jenkins的基本概念和架构,包括如何安装、配置和使用Jenkins,如何创建和管理作业,以及各种插件和扩展的使用方法。随后,该书详细讲解了如何使用Jenkins实现持续集成和持续交付,包括如何自动化构建、测试和部署代码,以及如何管理和监控持续集成过程。 《Jenkins持续集成入门精通》还专门介绍了些常用的应用场景和最佳实践,如如何使用Jenkins进行Java项目的持续集成、如何结合Docker实现自动化部署等等。此外,该书还介绍了Jenkins与其他工具的集成,如如何与Git和SVN进行代码管理、如何与Selenium进行自动化测试等等。 总之,《Jenkins持续集成入门精通》这本书对于想要深入了解Jenkins及其应用的开发者和运维人员来说,是个非常实用的指南。通过该书的学习,读者可以了解Jenkins的基本概念和使用方法,掌握Jenkins实现持续集成和持续交付的方法,以及将Jenkins与其他工具集成的技巧。同时,《Jenkins持续集成入门精通》还强调了些实践经验和最佳实践,能够帮助读者在实际工作中更加高效地使用Jenkins
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值