持续集成Jenkins 搭建 节点管理 权限控制 插件配置 报警机制 Jenkins接口 Jenkins Pipiline 概念 打包maven Tomcat部署持续交付 Docker部署持续交

本文详细介绍了Jenkins的搭建、使用及其与Docker的集成,包括Docker创建实例、设置时区、管理节点以及Jenkins权限控制。还探讨了Jenkins的插件配置、邮件报警机制、Pipeline的使用,以及Tomcat的部署和持续交付实战。此外,文章提到了Maven、MySQL和Tomcat的基础知识,展示了Jenkins Pipeline部署Docker应用的流程。
摘要由CSDN通过智能技术生成

Jenkins的搭建与使用

Jenkins官网:https://www.jenkins.io/
Jenkins使用文档:https://www.jenkins.io/zh/doc/book/managing/

docker部署

创建docker的文件映射卷

docker volume create jenkins_T  创建一个文件卷
docker volume inspect jenkins_T    查看一个问件卷

创建实例

docker run -d --name jenkins -p 8080:8080 -p 50000:50000 -v jenkins_T:/var/jenkins_home jenkins/jenkins:lts

查看运行的日志

docker logs -f fef7b04f3350164daaeeaa30f61a6766cf245fb2774882e00dffeb1007b1e9d3

访问:http://0.0.0.0:8080/
在这里插入图片描述
获得初始管理密码

docker exec jenkins_Test cat /var/jenkins_home/secrets/initialAdminPassword

手工部署
简易部署:java -jar jenkins.war
正式部署:
调参:调增jvm的参数
应用容器:使用tomcat、jetty启动
反向代理:使用nginx设置域名、https

Jenkins管理

修改时区
删除已有实例

docker rm -f jenkins

重新创建实例并设置时区

docker run -d --name jenkins -p 8080:8080 -p 50000:50000 -v jenkins_T:/var/jenkins_home \
-e JAVA_OPTS=-Duser.timezone=Asia/Shanghai jenkins/jenkins:lts

节点管理
Jenkins的任务可以分布在不同的节点上运行
节点上需要配置Java运行时环境,Java_Version > 1.5
节点支持 Windows,Linux,Mac
Jenkins运行的主机在逻辑上时master
在这里插入图片描述
新建节点:在系统管理(manage Jenkins) - Manage Nodes and Clouds - 节点管理功能下新增节点
在这里插入图片描述
slave节点连接方式
8080端口:jenkins服务器的对外UI地址
50000端口:slave节点与jenkins的通讯端口

wget https://docker.testing-studio.com:8080/jnlpJars/agent.jar
java -jar agent.jar -jnlpUrl http://docker.testing-studio.com:8080/computer/demo/slave-agent.jnlp -secret \ fef7b04f3350164daaeeaa30f61a6766cf245fb2774882e00dffeb1007b1e9d3 -workDir "/tmp/jenkins/"

Jenkins权限控制
Jenkins初始化过程中会注册一个管理用户
管理用户再创建后续的一般用户
管理员用户登录进行后续配置
启用用户安全配置,manage Jenkins ->Configure Global Security
在这里插入图片描述

注册用户的操作权限控制
1、必须由管理员来完成
2、用户可以自由注册,启用之后在Jenkins首页可以看到Sign-up入口
3、注册权限配置位置在“Configure Global Security”中
4、团队规模不大(10人左右)建议不要启用自由注册选项,减少用户管理时间成本。
5、配置好权限后,管理员可以从后台直接添加用户
6、从Jenkins管理控制台页面 -> Manage Jenkins ->Manage user
在这里插入图片描述
用户权限控制
在这里插入图片描述

插件配置
manage Jenkins -> Manage Plugins(插件配置)
在这里插入图片描述

Jenkins报警机制

配置email
用户Jenkins构建任务之后发送email通知
需要下载插件 Email Extension、Email Extension Template
配置邮件发送规则
配置邮件模版
在这里插入图片描述
邮箱内容模版配置
Jenkins可以根据你配置的邮箱模版格式发送邮件
通过Jenkins的参数定制自己的Email模版,常用的参数key值如下:
$BUILD_STATUS 构建结果
$PROJECT_NAME 构建脚本名称
$BUILD_NUMBER 构建脚本编号
$JOB_DESCRIPTION 构建项目描述
$CAUSE 脚本启动原因
$BUILD_URL 脚本构建详情URL地址

配置邮件模版
manage Jenkins - 系统配置 - Extended E-mail Notification
在这里插入图片描述
简单的模版
Subject

Jenkins运行提示:$BUILD_STATUS |脚本名称:$PROJECT_NAME|运行编号:$BUILD_NUMBER

Content

<hr/>测试自动发送,请勿回复<hr/><br/>
项目名称:$PROJECT_NAME<br/>
项目描述:$JOB_DESCRIPTION<br/>
运行编号:$BUILD_NUMBER<br/>
运行结果:$BUILD_STATUS<br/>
触发原因:${CASE}<br/>
构建日志地址:<a href="${BUILD_URL }console">${BUILD_URL }console</a><br/>
构建地址:<a href="$BUILD_URL ">$BUILD_URL </a><br/>
详情:${JELLY_SCRIPT,template="html"}<br/><hr/>

Job父子多任务运行
任务启动的触发条件:其他任务的运行结果
前驱任务成功的条件下被触发
前驱任务失败的条件下被触发
前驱任务不稳定的条件不被触发
适用场景:有先后次序关系的任务,比如 部署环境任务 -> 验收测试任务
在这里插入图片描述

持续集成转载:https://liumiaocn.blog.csdn.net/article/details/90762768?utm_medium=distribute.pc_relevant.none-task-blog-OPENSEARCH-4.baidujs&dist_request_id=1328689.20816.16166535411322093&depth_1-utm_source=distribute.pc_relevant.none-task-blog-OPENSEARCH-4.baidujs
持续集成:https://blog.csdn.net/niuniu0186/article/details/80828941?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-0&spm=1001.2101.3001.4242

Jenkins接口

Jenkins API简介
1、Jenkins 对外暴露的动作交互入口
2、为外部程序提供入口,可以控制Jnekins
3、支持协议 - Http
4、API接口支持用户名、密码
5、Jenkins API支持的典型功能:运行Job,查看任务状态,返回任务编码等

Jenkins API环境准备
1、创建一个有任务运行和状态查询权限的额用户
2、准备一个打算通过API远程控制的任务
3、较老版本的Jenkins关闭跨站脚本伪造请求保护,新的采取Crumb

远程调用Jenkins API启动任务
1、任务名:XXX_job
2、远程API服务地址:http://xxxxxxxxxx:8080/job/XXX_job/build
3、请求方法:POST
4、用户名、密码添加方法:username:password@host name:port xxxxx

整个请求的URL:http://username:password@xxxxxxxxxx:8080/job/XXX_job/build

5、运行期望结果:
任务启动
服务返回http status:201

import requests

url = 'http://username:password@xxxxxxxxxx:8080/job/XXX_job/build'
req = requests.post(url=url)
print(req.text)

远程调用Jenkins API查询任务状态
任务名:XXX_job
远程API服务地址:http://username:password@xxxxxxxxxx:8080/job/XXX_job/build number/api/json
请求方法:GET
用户名、密码添加方法:username:password@host name:port xxxxx
运行期望结果:
任务详情JSON
服务返回http status:200

import requests

url = 'http://username:password@xxxxxxxxxx:8080/job/XXX_job/27/api/json'
req = requests.get(url=url)
print(req.json())

Jenkins API库
1、pip install jenkinsapi
2、from jenkinsapi.jenkins import Jenkins
3、Jenkins(url,username,password,useCrumb=True)

Jenkins Pipiline 概念

1、借用Unix 中的Pipeline思路,一种高内聚低耦合的工具
2、Jenkins 2.0以上才会有
3、一系列Jenkins插件将整个持续集成用解释性代码Jenkinsfile来描述
4、Jenkinsfile使用方法:
Jenkins任务页面输入
源代码工程中编辑
5、Jenkinsfile语法:
Declarative pipline
Scripts pipline

Jenkins Pipline 入门
1、Jenkins 中创建一个pipline任务
在这里插入图片描述
2、Definition 中选择Pipline Script
3、在Pipline模块添加操作代码
在这里插入图片描述
4、Pipline Script from SCM
Pipline的代码也可以放入git源码库进行管理
在Jenkins Pipline任务中选择Pipline script from SCM,然后添加git源码地址,在Script Path中填写徐阿哟运行的Jenkinsfile文件所在的地址
在这里插入图片描述

Jenkinsfile语法

Jenkinsfile支持两种语法形式:
Declaration pipline V2.5之后引入,结构化方式
Scripts pipline 基于groovy的语法

Declaration pipline语法
1、必须包含在一个pipline块内,具体来说是:pipline{}
2、基本的部分是“step”,step告诉Jenkins要做什么
3、语句分类具体包含Sections ,Directives,Steps,赋值等几大类
Declarative语句树
在这里插入图片描述
4、agent:定义pipline 执行节点
参数:
必须出现的指令
any:可以在任意agent上执行pipline
none:pipline将部分配全局agent,每个stage分配自己的agent
label:指定运行节点的Label
node:自定义运行节点配置
指定label
指定custWorkspace
docker:控制目标节点上的docker运行相关的内容

pipline{
	agent{
		node{
			label "myslave"
			customWorkspace "myWorkspace"
		}
	}
}

5、stages:包含一个或多个stage的序列,Pipline的大部分工作在此执行;
必须出现的指令
无参数
每个pipline代码区间中必须只有一个stages
6、stage:包含在stage中,pipline完成的所有实际工作都需要包含到stage中
必须出现的指令
无参数
需要定义stage的名字
7、steps
必须出现的指令
无参数
具体执行步骤,包含在stage代码区间中

stages{
	stage('git pull souce code'){
		steps{
			echo "迭代V1.02"
		}
	}
}

8、post:定义Pipline或者stages运行结束时的操作
参数:
不是必须出现的指令
always:无论PIpline运行的完成状态如何都会运行
changed:只有当前Pipline运行的状态与先前完成的Pipline的状态不同时,才能运行
failure:仅当前Pipline处于“失败”状态时才运行。
success:仅当前Pipline具有“成功”状态时才运行
unstable:只有当前Pipline具有“不稳定”状态才能运行
aborted:只有当前Pipline处于“中止”状态时才能运行

post{
	success{
		echo '这是成功的时候执行'
		sleep 3
	}
	always{
		echo '这个任何状态都执行'
	}
}

9、environment:定义Pipline或stage运行时的环境变量
参数:
不是必须出现的指令
无参数

enviroment{
	params = 'hello world'
}
stages{
	stage('输出环境变量'){
		steps{
			echo parms
		}
	}
}

10、options:定义pipline的专有属性
参数:
不是必须出现的指令
buildDiscarder:保持构建的最大个数
disableConcurrentBuilds:不允许并行执行pipline任务
timeout:pipline超时时间
retry:失败后,重试整个Pipline的次数
timestamps:预定义由Pipline生成的所有控制台输出时间
skipStagesAfterUnstable:一旦构建状态进入来“Unstable”状态,就跳过stage

options{
	timeout(time:30,unit:'SECONDS')
	buildDiscarder(logRotator(numToKeepStr:'5'))
	restry(5)
}

11、parameters:定义pipline的专有参数列表
参数:
不是必须出现的指令
支持数据类型:booleanParam,choice,credentials,file,text,password,run,string
类似参数化构建的选项

parameters{
	string(name:'PERSON',defaultValue:'Jenkins',description:'输入的文本参数')
	stages{
		stage(‘Test Paramenters’){
			steps{
				echo "Hello ${params.PERSON}"
			}
		}
	}
}

12、triggers:定义Pipline自动化触发的方式
参数:
不是必须出现的指令
cron:接受一个cron风格的字符串来定义Pipline触发的常规间隔
pollSCM:接受一个cron风格的字符串来定义Jenkins,检查SCM源,更改的常规间隔;如果存在新的更改,则Pipline将被重新触发

triggers{
	pollSCM('H*/4**1-5')
}
Scripts pipline语法

基于groovy语法定制的一种DSL语言
灵活性更改
可扩展性更好
Scripts pipline 与 Declarative pipline 程序构成方式有雷同之处,基本语句也有相似之处
语句树
在这里插入图片描述
1、流程控制 if/else

node{
	stage('Example'){
		if(env.BRANCH_NAME == 'master'){
			echo '这是一个分支'
		}else{
			echo '期望的分支'
		}
	}
}

2、try/catch

node{
	echo ‘这是一个测试分支’
	try{
		echo '这是try模块'
	}catch(exc){
		echo '这是catch模块'
	}finally{
		echo '这是finally模块'
	}
}

3、groocy语句控制环境变量与运行命令
定义maven工具变量的名称与位置
定义java工具变量的名称与位置
工具设置位置:“Manage Jenkins” -> “Global Tool Configuration”
4、groovy语句控制环境变量与运行命令
script 代码中引用、配置环境变量
script代码中引用maven工具与java工具

Blue ocean应用

1、重新定义用户使用Jenkins的习惯
2、代码图形化、直观化
3、流程可视化
4、需要安装Blue Ocean插件(插件名称:Blue Ocean)
5、适合作为发布界面给用户使用
安装成功后控制栏会出现Blue Ocean
在这里插入图片描述

打包maven

MySQL客户端工具
MySQL Workbench
新建ServerConnection,输入Host,Port,Username,Password
尝试连接,能成功就说明输入参数无误 在这里插入图片描述

Maven安装
下载地址:http://maven.apache.org/download.cgi
下载文件:zip或者tar格式压缩包,带bin字样的表明是可以直接运行的二进制文件
在这里插入图片描述
Maven环境安装方法
1、将安装包解压到本地路径,然后配置环境变量
export M2_HOME=
export PATH= P A T H : PATH: PATH:M2_HOME/bin
2、验证Maven安装成功的方法:mvn -version
在这里插入图片描述
3、加速依赖包下载方法,在setting.xml中添加阿里云镜像
在这里插入图片描述
在这里插入图片描述

<mirror>
    <id>alimaven</id>
    <name>aliyun maven</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    <mirrorOf>central</mirrorOf>
</mirror> 

打包

mvn clean install 
Tomcat部署持续交付实战

介绍:Tomcat 是由 Apache 开发的一个 Servlet 容器,实现了对Servlet 和 JSP 的支持,并提供了作为Web服务器的一些特有功能,如Tomcat管理和控制平台、安全域管理和Tomcat阀等。

Tomcat部署Web项目的四种方式
一、把项目到webapps目录中
首先把要发布的web项目打包成war包,然后copy到webapps目录下,然后启动tomcat,即可。访问路径:http://localhost:8080/项目名
二、在tomcat目录下新建一个和web项目名称一致的文件,然后把解压的war包内容放在此文件下,然后启动tomcat,即可。访问路径:http://localhost:8080/项目名
三、在tomcat目录conf\Catalina\localhost目录下新建一个xml文件,
xml文件内容为 <Context path="/xml文件名" docBase="war包解压后war包内容的路径" debug="0" privileged="true"></Context>
然后启动tomcat,即可。访问路径:http://localhost:8080/xml文件名
四、在tomcat安装目录中有一个conf文件夹,打开此文件夹,其中包含配置文件server.xml,打开配置文件,并在和之间插入如下语句。

Tomcat基础知识
1、运行与配置入门
启动:bin ./startup.sh
停止:bin ./shutdown.sh
配置文件:conf ./server.xml
日志:logs ./catalina.sh --> 持续输出日志:tail -f catalina.sh
2、下载位置:https://tomcat.apache.org/
3、安装方法:直接解压
4、环境要求:Java开发和运行环境
5、默认端口 8080
下载 在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Jenkins中使用PIpline形式部署

部署过程
在这里插入图片描述
pipline.groovy
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

配置Pipline,file中的变量
Manage Jenkins ->Configure System -> Global properties
在这里插入图片描述

Docker部署持续交付实战

自由风格任务部署Docker应用流程图
在这里插入图片描述
部署代码
1、shell
2、配置文件更新
3、项目构建、打包
4、Docker环境清理
5、生成新的Docker镜像
6、运行Docker实例
在这里插入图片描述
Dockerfile分析
1、起点alpine-java:jdk8-slim镜像
2、加载应用web.war
3、解压缩web.war
4、配置java启动参数
5、添加yml配置文件
6、配置应用启动命令
7、添加暴露端口
在这里插入图片描述
Pipline任务部署Docker应用
流程
在这里插入图片描述
部署代码
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

小结
在这里插入图片描述

生成与测试环境分离的持续交付演练
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值