Jenkins-基础(流水线构建、插件管理、权限控制、凭证管理、参数化构建、邮箱服务)

jenkins-基础

关于可持续化集成

什么是可持续化集成?举一个例子

一个开发团队正着手开发一个项目,在需求评审之后由小组长拆成肉感个模块,分给不同的小伙伴去实现。2个星期后各自的模块功能都实现了,大家都很开心。这时是该合在一起提测了把,一提测小组长就傻眼了,写的功能没有一个可以用的,要么公共类冲突,要么配置冲突等,经过上一次教训,小组长变聪明了,在也不等功能开发之后再合并提测了,而是每天集成提测,如果发现冲突当天就要解决,这样子我们一天起码要抽出20%的时间去合并代码解决冲突,可持续化集成就是用来解决这个问题。

可持续集成即 Continuous integration(CI)是一种软件开发实战,即团队开发成员经常集成他们的工作,每次集成都通过自动化构建(包括编译,发布,自动化测试)来验证,从而尽快的发现集成错误,让团队能够更高效的开发软件

在这里插入图片描述

当我们提交代码到git后 CI就会自动 合并 编译 测试这样我们就用人工去检查 合并代码,大大提高了开发效率

持续集成要点:

  • 统一代码库(git)
  • 统一依赖包管理(nexus)
  • 测试自动化
  • 构建全自动化(maven)
  • 部署自动化
  • 可追踪集成记录

jenkins概述

jenkins就是为了满足上述持续集成的要点而设计的一款工具,其主体框架采用java开发,实质内部功能都是由各种插件实现的,由于功能都是插件实现所以极大的提高了系统的扩展性(我们之前学的maven的每一个阶段也是用插件实现的)。其不仅可以满足java系统的集成,也可以实现php等语言的集成发布。通过pipeline插件,用户可以随自己需要定制集成流程。

jenkins安装

依赖安装

jenkins需要jdk环境,若已经按照了jdk可以忽略该步骤

yum install java-1.8.0-openjdk* -y

下载安装包

jenkins支持Docker、yum、msi等安装,在这里推荐大家直接选择下载他对应的WAR包进行安装。 https://get.jenkins.io/war-stable/

启动Jenkins

下载完成之后直接可以通过jar -jar 命令启动

# 前台启动 指定端口8080
java -jar jenkins.war --httpPort=8888
# 后台启动 指定端口8080
nohup java -jar jenkins.war --httpPort=8888 & 

初始化配置

启动完毕后访问http://localhost:8080/可以看到一个登录页面,初始密码就在那个文件夹种

在这里插入图片描述

在插件安装这一步点击选择插件来安装直接跳过,因为Jenkins默认的插件镜像库是很慢的,先跳过后面换成国内镜像源就块

在这里插入图片描述

选择插件后面再安装

在这里插入图片描述

点击下一步后jenkin会让你创建一个管理员账户,jenkin默认是有一个admin的账户的密码就是第一次进入页面的那个密码,当然这里可以自己在新建一个,填好后点击保存并完成

在这里插入图片描述

确认一下jenkins的地址与端口号,没问题点击完成,就进入到jenkins了

在这里插入图片描述

插件管理

修改插件下载地址

jenkins默认的插件下载地址是连接官网的,所以下载速度非常慢而且有时会下载不了,进入到jenkins -> Manage Jenkins -> Manage Plugins点击Advanced

把:http://updates.jenkins-ci.org/update-center.json

换成:http://mirror.esuni.jp/jenkins/updates/update-center.json

镜像源查询:http://mirrors.jenkins-ci.org/status.html

在这里插入图片描述

进入到/root/.jenkins/updates执行如下命令修改default.json中的地址将国外的全部换成国内的

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

浏览器执行http://192.168.100.104:8080/restart重启jenkins

在这里插入图片描述

下载汉化插件

进入到jenkins -> Manage Jenkins -> Manage Plugins点击available搜索chinese安装中文插件并且重启

在这里插入图片描述

重启完毕后可以看到jenkins都进行了汉化了

在这里插入图片描述

用户权限管理

插件下载

在日常的开发者,会有很多用户登录到Jenkins中,用户管理插件这样可以更好的控制用户的操作权限,安装Role-based Authorization Strategy插件

在这里插入图片描述

修改安全策略

进入到jenkins -> Manage Jenkins -> Configure Global Security将安全策略修改为Role-Based Strategy点击保存

在这里插入图片描述

管理角色

修改安全策略后,那么需要做角色创建、分配等工作

进入到jenkins -> Manage Jenkins -> Manage and Assign Roles,进入后看看到有管理角色、分配角色

在这里插入图片描述

管理角色

进入到jenkins -> Manage Jenkins -> Manage and Assign Roles -> Manage Roles

管理角色,点击进入后可以看到有3中角色

  • Global roles:全局角色
  • Item roles:项目角色,控制某些用户可以访问那些项目
  • Node roles:节点角色,在jenkins主从时会用到

全局角色创建

在这里插入图片描述

项目角色

在这里插入图片描述

创建用户

进入到jenkins -> Manage Jenkins -> Manage Users,创建一些用户由于分配角色

在这里插入图片描述

分配角色

进入到jenkins -> Manage Jenkins -> Manage and Assign Roles -> Assign Roles

在这里插入图片描述

凭证管理

jenkins在平时的使用中会经常与第三方进行交互,如mysql、docker、gitlab密码等,jenkins需要保存于第三方交互的凭证,为了让这些信息更加安全、更方便管理,那么需要安装凭证管理插件Credentials Binding Plugin

添加完毕后进入到jenkins -> Manage Jenkins -> ManageCredentials可以看到添加凭证

在这里插入图片描述

使用最多的是账户+密码或SSH方式的凭证

在这里插入图片描述

从Git拉代码(HTTP方式)

环境准备

要让Jenkins能从git仓库上拉取代码,那么首先需要具备2个条件

  1. 安装jenkins的电脑上已安装git工具
  2. jenkins中安装了git插件

Jenkins安装git插件

在这里插入图片描述

liunx安装git

yum install git -y
gi --version

准备一个Gitee仓库

在这里插入图片描述

添加凭证

在这里插入图片描述

配置项目

凭证添加完毕选择在创建项目时,配置项目的源码管理页时,选择git后输入路径并且输入选择相应的凭证即可

在这里插入图片描述

测试构建

点击构建,进入构建日志可以看到项目被成功的拉取下拉了

在这里插入图片描述

从Git拉代码(SSH方式)

要使用SSH方式获取git上的代码,那么首先需要准备公钥与私钥,git服务器上存放公钥,Jenkins服务器上存放私钥

在这里插入图片描述

密钥对生成

注意,密钥对生成是在Jenkins服务器上生成的

#生成密钥对,输入命令后,连续按3次回车
ssh-keygen -t rsa
#密钥对保存的位置,pub结尾的是公钥,例外的是私钥
cd /root/.ssh/
#查看公钥内容
cat id_rsa.pub

把公钥存在Gitee上

在这里插入图片描述

添加凭证

在这里插入图片描述

配置项目

凭证添加完毕选择在创建项目时,配置项目的源码管理页时,选择git后输入路径并且输入选择相应的凭证即可

在这里插入图片描述

测试构建

点击构建,进入构建日志可以看到项目被成功的拉取下拉了

在这里插入图片描述

集成Maven

Jenkins使用Maven自动化构建首先需要Jenkins服务器上携带Maven

Liunx-安装Maven

全局工具配置

要将Maven和jdk添加到Jenkins全局工具配置中,进入到jenkins -> Manage Jenkins -> Global Tool Configuration

jdk配置

install automatically勾去掉,新增jdk配置

在这里插入图片描述

Maven配置

在这里插入图片描述

系统全局变量

在全局工具配置中设置完毕后,需要在系统全局变量中添加几个参数,进入jenkins -> Manage Jenkins -> Configure System,在这里配置后可以让Jenkins 知道这写环境变量的命令的使用

注意:JAVA_HOME、M2_HOME、PATH+EXTRA 是固定格式不要私自修改

在这里插入图片描述

配置项目

配置项目构建触发器,添加一个shell脚本执行构建命令

在这里插入图片描述

测试构建

在这里插入图片描述

在这里插入图片描述

集成Tomcat

下载好Tomcat的,并且解压到liunx上

在这里插入图片描述

启动Tomcat

进入到tomcat的bin目录,执行./startup.sh

在这里插入图片描述

在这里插入图片描述

配置Tomcat用户信息

Jenkins需要上传打包好的war包,那么就需要使用账号密码连接到tomcat上,才能完成发包

进入到tomcat的conf目录/data/software/apache-tomcat-8.5.75修改用户配置的xmlvim 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"/>

允许远程登录

默认tomcat是不允许远程访问的,需要开启

进入/data/software/apache-tomcat-8.5.75

修改vim webapps/manager/META-INF/context.xml

将如下内容注释掉

在这里插入图片描述

测试登录

连接上tomcat使用配置好的用户名与密码登录,能够登录成功表示ok

在这里插入图片描述

插件安装

jenkins要实现远程发布需要安装一个Deploy to container插件

在这里插入图片描述

jenkins项目构建

构建类型

jenkins项目构建类型常用的有三种

  • 自由风格软件项目(FreeStyle Project)
  • Maven项目(Maven Project)
  • 流水线项目(Pipeline Project)

每种类型的构建最终的构建结果都是一致的,只是构建的过程、操作方式、灵活度有所区别,推荐流水线类型灵活度最高

自由风格构建

自由风格构建,就是可以提供给用户编写小部分脚本构建任意项目

例子:拉取代码->编译->打包->部署

创建项目

新增一个项目,风格选择自由风格

在这里插入图片描述

拉取代码方式

修改源码管理中,选择使用git拉取源码

在这里插入图片描述

编译打包方式

自由风格构建的项目,在编译打包方式上用户可以自定义脚本,打包不同的项目,这里编写shell脚本使用maven构建项目

在这里插入图片描述

远程发布

这个选项必须安装Deploy to container插件

在这里插入图片描述

在这里插入图片描述

测试

构建完成后可以在tomcat上看到最新发布的包

在这里插入图片描述

Maven项目构建

Maven项目构建,看名称就不多说了,该项目只能构建maven搭建的项目

插件安装

在jenkins中构建一个maven风格的项目,首先需要安装一个插件Maven Integration

在这里插入图片描述

创建项目

在Jenkins中选择创建一个maven项目

在这里插入图片描述

拉取代码方式

修改源码管理中,选择使用git拉取源码

在这里插入图片描述

构建方式

maven的构建方式,可以直接在build中选择pom文件,输入构建命令即可,不用写脚本

在这里插入图片描述

远程发布

选择远程发布的tomcat地址

在这里插入图片描述

测试

构建完成后可以在tomcat上看到最新发布的包

在这里插入图片描述

流水线构建(重要)

流水线构建也叫Pipeline,是一套运行在jenkins上的工作流框架,可将多个独立的任务连接起来,实现一个复杂任务的编排和构建

在前面的自由风格/Maven风格构建的项目可以看到每一个步骤都是分开的并且自定义不高,在Pipeline中可利用一种代码的方式实现整个构建流程

插件安装

在jenkins中构建一个Pipeline风格的项目,首先需要安装一个插件Pipeline

在这里插入图片描述

Pipeline语法

Pipeline脚本是由Grovvy语言实现的,但是没必要单独去学习Grovvy

Pipeline支持2种语法,Declarative(声明式)和Scripted Pipeline(脚本式)语法

Pipeline也有2种创建方法,直接在Jenkins的Web UI界面种输入脚本;也可以通过创建一个JenkinsFile脚本文件放入项目源码库种,然后获取源码时直接载入JenkinsFile构建项目(推荐)

简单认识

pipeline声明式语法,新版的Jenkins推荐使用声明式语法,大致分为如下几块

pipelint{}:所有内容都写在这里面

agent any:定义环境变量如Docker、Mavne、jdk等

stages{}:一个大的构建阶段,里面包含着多个stage(’’){}

stage(’’){}:每一个小阶段,里面包含着该阶段执行的脚本

steps{}:每个任务中的步骤,具体的脚本编写在里面

pipeline {
    //这里定义环境/工具 Docker Maven Jdk
    agent any
    //一个大的构建阶段
    stages {
        //拉取代码阶段
        stage('pull code') {
        	//拉取代码的脚本
            steps {
                echo 'pull code'
            }
        }
        //构建项目阶段
        stage('build project') {
        	//构建项目的脚本
            steps {
                echo 'build project'
            }
        }
        //发布项目阶段
        stage('pulish project') {
        	//发布项目的脚本
            steps {
                echo 'pulish project'
            }
        }
    }
}

pipeline脚本式语法,脚本式是一种比较旧的编写方式,大致分为如下几块

node{}:节点,里面包含pipeline执行过程

def:定义环境变量如Docker、Mavne、jdk等

stage(’’){}:每小阶段,里面包含着该阶段执行的脚本

node {
 	//这里定义环境/工具 Docker Maven Jdk 
    def mvnHome
    //拉取代码阶段
    stage('pull code') { 
        echo 'pull code'
    }
    //构建项目阶段
    stage('build project') {
        echo 'build project'
    }
    //发布项目阶段
    stage('pulish project') {
       echo 'pulish project'
    }
}
创建项目

在Jenkins中选择创建一个Pipeline项目

在这里插入图片描述

编写脚本

编写一个测试脚本

在这里插入图片描述

阶段视图

创建完毕后点击构建可以看到一个阶段视图,里面显示了每一个阶段的耗时,执行过程的日志

在这里插入图片描述

Pipeline语法生成

Jenkins提供了语法生成工具可以帮助我们生成流水线语法

在这里插入图片描述

拉取代码

选择checkou操作,配置好需要拉取的仓库地址,和认证信息

在这里插入图片描述

编译打包

在这里插入图片描述

远程发布

在这里插入图片描述

组合

将所有脚本组合到一起,形成拉取-构建-发布流水线

在这里插入图片描述

jenkinsFile

在前面的流水线构建方式脚本都是保存在jenkins服务器的项目构建中的,这样显然不太方便有时我们的构建文件需要进行变更那么就需要登录到jenkins变更,利用JenkinsFile的方式将pipeline语法保存到项目源码下,这样可以跟着源码一起发布并且也有版本控制

添加后将该文件提交到git仓库上

在这里插入图片描述

执行Jenkinsfile

在Jenkins中流水线设置时,选择使用SCM方式,配置好从哪里获取这个脚本,Jenkins就会重你指定的地方获取该文件,然后执行里面的脚本内容

在这里插入图片描述

测试

可以看到在构建项目前多了一个步骤checkout scm就是从远程仓库获取pipeline文件

在这里插入图片描述

jenkins构建触发器

在前面的使用过程中,所有的构建项目都是需要手动点击构建才能进行构建发布,在jenkins如果要实现自动构建,那么需要使用到触发器,触发器作用就是告诉Jenkins在何时构建项目

内置触发器

jenkins内置4种构建触发器

  1. 触发远程构建
  2. 其他项目构建后触发(Build after other projects are build)
  3. 定时构建(Build periodically)
  4. 轮询SCM(poll SCM)
触发远程构建

触发远程构建,即通过http方式远程触发项目构建,在构建触发器中选择触发远程构建需要填写一个令牌字符串(一般是由生成的加密字符串),当用户需要构建时发生http请求地址JENKINS_URL/job/dem_pipeline/build?token=TOKEN_NAME

例:http://192.168.100.104:8888/job/dem_pipeline/build?token=abc

在这里插入图片描述

其他项目构建后触发

其他项目构建后触发,即当某一个项目构建完毕后,触发构建这个项目

准备前置工程

在这里插入图片描述

修改dem_pipeline

当before执行构建完毕后,dem_pipeline就会被触发构建

在这里插入图片描述

定时构建

定时构建,即设定规则让Jenkins定时构建该项目

定时表达式:***** => 分 时 日 月 周

表达式例子说明
H/30 * * * *每30分钟构建一次
H H/2 * * *每2小时构建一次
0 8,12,22 * * *每天8点、12点、22点构建,一天构建3次
H 12 * * *每天中午12点定时构建一次
H 18 * * 4每个周四下午18点定时构建一次

在这里插入图片描述

轮询SCM

轮询SCM,与定时构建差不多,即Jenkins每隔一段时间会去扫描代码仓库,如果代码仓库代码发生变更了就构建

不推荐使用轮询SCM,因为会定时扫描项目源码,如果项目较大会增加Jenkins的开销

在这里插入图片描述

Git hook自动触发构建

Git hook,即当git收到有提交新代码后那么会触发一个钩子,通知jenkins需要拉取代码进行构建,这样发起方是git告诉Jenkins有新的项目可以构建,这样Jenkins就不用一直轮询代码仓库判断是否有新版

Gitee
插件安装

如果远程仓库是Gitee,Jenkins需要安装如下插件Gitee

在这里插入图片描述

Jenkins项目设置

在构建触发器中选择gitee webhook触发

在这里插入图片描述

Gitee设置

在gitee仓库中的管理,添加webhook将Jenkins中的urlJenkins的访问地址/gitee-project/dem_pipeline和密码拷贝过来

在这里插入图片描述

测试

每当向gitee推送更新时,Jenkins就会收到消息,然后去gitee上拉取最新代码构建

在这里插入图片描述

jenkins参数化构建

在前面编写的Pipeline脚本内容都是写死的修改需要修改源文件,jenkins提供了参数化构建,Pipeline脚本可以接收有个用户提供的参数执行不一样的构建流程

添加参数

在项目构建时,选择This project is parameterized选项可以添加参数

在这里插入图片描述

添加完毕后发现原来的Build变为Build with Parameters,点击后可以看到显示可配置的参数

在这里插入图片描述

脚本中读取参数

参数添加完毕后,要读取该参数只需在脚本中写入${参数名}即可

在这里插入图片描述

jenkins邮箱服务

jenkins提供邮件服务,可以在项目构建完毕只会通过邮件方式通知

插件安装

要使用邮箱服务那么需要安装Email Extension插件

在这里插入图片描述

邮箱配置

这里演示QQ邮箱,其他邮箱也是差不多的操作步骤,登录到QQ邮箱找到设置,开启SMTP服务,然后生成授权码

在这里插入图片描述

jenkins配置

进入到jenkins -> Manage Jenkins -> Configure System,找到Extended E-mail Notification配置

在这里插入图片描述

在这里插入图片描述

测试邮件发送

测试邮箱能够正常收到邮件表示成功

在这里插入图片描述

定制邮件模板

邮箱服务配置完毕后,就可以定制一个邮件发送的内容了因为前面勾选的是html页面所有我们就一个html内容模板(百度一下),一般这个邮件模板都会方在项目的根目录上,在模板里面有很多的${变量},这些都是Jenkins中的全局变量(在邮箱配置选项中的Content Token Reference旁边问号点开可以看到jenkins中的所有变量与介绍)

添加完毕后,把模板推送到远程仓库上

在这里插入图片描述

脚本编写

因为邮件发送不属于构建范围内容,是构建完毕后再根据情况执行的,所有这里就需要使用到一个post

post说明

在这里插入图片描述

使用脚本生成工具生成邮箱发送脚本

在这里插入图片描述

在这里插入图片描述

测试

在这里插入图片描述

在这里插入图片描述

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JolyouLu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值