jenkins学习总结

持续集成

频繁的将代码提交到主干(重复的进行集成工作),代码提交到主干前先进行自动化测试。
在这里插入图片描述

持续集成的优点

1、快速发现错误;2.节省人力成本;3.加快软件开发速度;4.实时交付;5.防止分支大幅偏离主干

持续集成的目的

产品快速迭代,还能保证产品质量。
简化工作流程

持续交付

持续交付是在持续集成环境的基础上,将代码手动部署到预生产环境。
持续交付:代码开发-》单元测试-》合并代码-》测试-》手动部署到生产

持续部署

持续部署:在持续交付的基础上 自动将代码部署到生产环境
持续部署:代码开发-》单元测试-》合并代码-》测试-》自动部署到生产

持续集成实施流程

提交代码-》代码托管-》获取代码-》代码测试-》构建-》黑盒测试-》部署-》回退

jenkins

开源的持续集成工具,由java开发而成。
调度平台,本身不处理任何事情,调用插件完成所有的工作。
主要功能:提供软件开发的持续集成服务
主要特点:配合实现 软件配置管理、持续集成功能、拥有成千上万的插件

jenkins官网

https://www.jenkins.io/zh/doc/

win10安装jenkins

使用docker安装jenkins,前提 已安装好docker
1、拉取jenkins并运行
docker run -u root --rm -d -p 8080:8080 -p 50000:50000 -v jenkins-data:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock jenkinsci/blueocean
2、浏览到 http://localhost:8080(或安装时为Jenkins配置的任何端口),并等待 解锁 Jenkins 页面出现。
3、从jenkins日志中获取秘密
docker logs 容器_id
4、解锁jenkins并选择安装推荐插件
遇到问题:提示插件不存在 No such plugin: cloudbees-folder
解决:重启容器 docker restart 容器_id,没有安装任何插件

配置admin密码

新启动的jenkins没有配置账号密码
打开admin->configure 设置密码和确认密码,点击提交

jenkins相关插件下载地址

https://mirror.tuna.tsinghua.edu.cn/jenkins/

加速插件配置

使用国内的网站下载插件,加快下载速度
1、打开 清华大学yum https://mirror.tuna.tsinghua.edu.cn/,找到jenkins->updates->update-center.json
2、jenkins->manage jenkins-> manage plugins->advanced->Update Site 填写https://mirror.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

安装插件

方法一:
1、打开jenkins->manage jenkins-> manage plugins->Available
2、搜索要用的插件,选择并安装
一般不使用这种方法,因为下载安装太慢
方法二:
1、从https://mirror.tuna.tsinghua.edu.cn/jenkins/下载相关插件
2、jenkins->manage jenkins-> manage plugins->advanced->Upload Plugin 选择下载的插件并开始安装
方法三:
将下载的插件放到/var/lib/jenkins/plugins下
给插件设置可读权限
要注意版本问题

创建自由风格的软件项目

Description 描述
Discard old builds 丢弃旧的构建
Days to keep builds 多少天后丢弃
Max # of builds to keep 最多保留多少次构建
This project is parameterized 参数化构建

Build 构建
Execute shell 执行shell命令

点击【Build Now】 立即构建

jenkins集成gitlib

1、将gitlib上的项目获取到本地,为后续网站的代码发布发布工作做准备。jenkins只是一个调度平台,需安装gitlib相关的插件来帮忙将项目获取到本地。

2、安装与gitlib相关的插件
在这里插入图片描述

jenkins配置git源码管理,拉取最新代码

前置条件:下载安装jenkins的git插件:Git plugin
1、新建一个jenkins项目-》选择构建一个自由风格的软件项目-》源码管理选择git
2、填写git选项
(1)repositories 仓库 设置
Repository URL :用ssh格式的仓库地址
Credentials:资格设置,git插件下载gitlib代码时免密钥。
有两种方式,一种是配置以git用户名和密码,另外一种是使用密钥对的方式

a.以git用户名和密码
用户是拥有git仓库Master或者Owner权限的用户

b.使用密钥对的方式
需输入 Username 和 Private Key
配置过程:
aa. jenkins管理员用户登录jenkins服务器 生成SSH Key
ssh-keygen -t rsa -f ~/.ssh/jenkins
-t rsa是指定秘钥的类型
生成密钥对为key (私钥) 和 key.pub(公钥)
bb. gitlib管理员登录gitlib,将公钥放到http://git.ssas.com/profile/keys的Add an SSH key 中(登录gitlib的账号必须有Master或者Owner权限)
在这里插入图片描述
dd. 私钥配置在jenkins上。点击add
在这里插入图片描述
说明:实际使用时,运营OP已经配置好了密钥,我们只需要在jenkins 中选择Credentials,在gitlib http://git.bbb.com/gsx-qa/demo/deploy_keys 中使用master权限的账户 enable下已添加的密钥。
在这里插入图片描述

(2)Branches to build 设置要下载的分支

3、提交项目并执行,在控制台日志输出(Console Output)中会打印拉代码的过程
4、在jenkins项目的Workspace中可以看到已拉取的代码;代码保存在jenkins所在服务的/var/jenkins_home/workspace/下。

jenkins拉取指定tag的代码

前提:1、rd提交代码打了tag;2、jenkins脚本支持传参;3、安装git paramter插件
1、编辑项目,选择参数化构建->选择git paramter->名称:变量git_tag->描述->参数类型:选择tag->默认值origin/master
2、源码管理->git ->指定分支:修改为变量,${git_tag}

jenkins实现集群架构代码自动上线

1、手动搭建nginx集群架构
2、开发将代码提交至gitlib,git插件将代码拉取到jenkins的workspace目录下
3、编写shell脚本,并由jenkins调取推送至web服务器组。
执行脚本 sh -x /http.sh

http.sh脚本内容:

#!/usr/bin/bash
DATE=$(date+%Y-%m-%d-%H-%M-%S)
web_server = "10.0.0.7 10.0.0.8"
#进入项目目录,将内容进行打包
get_code(){
cd /var/lib/jenkins-home/workspace/demo
tar czf /opt/web-${DATE}.tar.gz ./*
}
#将内容通过scp拷贝到web集群组
scp_web_service(){
for i in $web_server
do
scp  /opt/web-${DATE}.tar.gz  root@${i}:/opt
ssh root@${i} "mkdir -p /code/web-${DATE}   \
&& tar xf /opt/web-${DATE}.tar.gz -C /code/web-${DATE} \
&& rm -rf /code/web 
&& ln -s /code/web-${DATE}  /code/web"
done
}
deploy(){
get_code
scp_web_service
}
deploy

jenkins实现git版本回退

在webserver集群主机上进行软链接建立 和重新建立软链接

1、编辑项目,选择参数化构建->选择选项参数->名称:deploy_env->选项:deploy rollback ->描述:选择部署还是回退
2、修改shell脚本使支持回退

#!/usr/bin/bash
DATE=$(date+%Y-%m-%d-%H-%M-%S)
web_server = "10.0.0.7 10.0.0.8"

#进入项目目录,将内容进行打包
get_code(){
	cd /var/lib/jenkins-home/workspace/demo
	tar czf /opt/web-${DATE}.tar.gz ./*
}

#将内容通过scp拷贝到web集群组
scp_web_service(){
	for i in $web_server
	do
		scp  /opt/web-${DATE}.tar.gz  root@${i}:/opt
		ssh root@${i} "mkdir -p /code/web-${DATE}   \
			&& tar xf /opt/web-${DATE}.tar.gz -C /	code/web-${DATE} \
			&& rm -rf /code/web 
			&& ln -s /code/web-${DATE}  /code/web"
	done
}

#回退执行
roolback(){
	back_file = $(ssh root@10.0.0.7 “find /code/ -maxdepth 1 -type d -name “web-*-${git_tag}””)
	for i in $web_server
	do
		ssh root@${i} "
 		rm -rf /code/web \
		&& ln -s /code/${back_file} /code/web"
	done
}
# 部署指定版本
deploy(){
	get_code
	scp_web_service
}

If [$deploy_env=“rollback”]; then 
	roolback
elif [$deploy_env=“deploy”];then
	deploy
fi

jenkins实现集群架构代码自动上线重复构建问题

jenkins自带可用的环境变量GIT_COMMIT 记录版本的commit_id;GIT_PREVIOUS_SUCCESSFUL_COMMIT记录上次构建成功的commit_id
如果GIT_COMMIT = GIT_PREVIOUS_SUCCESSFUL_COMMIT,说明已经构建过了,不可再重新构建。

If [$deploy_env=“rollback”]; then 
	roolback
elif [$deploy_env=“deploy”];then
	if [$(GIT_COMMIT)==$(GIT_PREVIOUS_SUCCESSFUL_COMMIT)]; then 
		echo “已部署过该版本”
		exit 1
	else
		deploy
fi

jenkins集成Maven

1、安装Maven Integration plugin,才能使用jenkins构建Maven项目
2、在jenkins上指定maven的位置
jenkins -> 全局配置 -> JDK 配置 名字和JAVA_HOME-> MAVEN配置 名字和MAVEN_HOME
3、新建项目,选择构建一个maven项目
4、填写描述->丢弃旧的构建 :最多保持10次构建-> 源码管理git配置 -> build 构建参数package -Dmaven.test.skip=true(由RD提供) ->
5、jenkins将代码拉取到本地后通过Maven构建代码生成war包。

jenkins集成SonarQube并集成项目自动检测

一、jenkins安装SonarQube Scanner for Jenkins插件

二、配置SonarQube服务端地址
系统管理-》系统配置-》sonarqube->name->service url :填写sonarqube service地址->token->类型:secret text->secret->描述

三、配置SonarQube Scanner工具路径
系统管理-》全局工具配置-》SonarQube Scanner-》name->home:scanner安装路径

四、修改项目
扫描代码配置有很多方法:
A. 发布版本前执行sonarqube操作
构建->增加构建操作->execute sonarqube scanner -》analysis properties:参数(其他不需要填写)

sonar.projectName=${JOB_NAME} #项目再sonar平台上显示的名称
sonar.projectKey=java # 项目类型
sonar.sources=.  # 项目目录

B.写shell脚本

# 进入项目目录下
cd /var/lib/jenkins/workspace/gsxpt_test_demo1 
# 扫描代码
sonar-scanner -Dsonar.projectKey=gsxpt_test_demo1 -Dsonar.sources=. 

jenkins maven项目实现代码质检

方法一:使用SonarQube Scanner
方法二:使用maven质检
pre steps(构建前操作)->

clean
verify
vonnar:sonnar

jenkins集成钉钉

1、安装钉钉Plugin
2、编辑项目,选择构建后的操作->钉钉通知->输入钉钉token-》选择通知时间

构建触发器 Build when a change is pushed to GitLab

只要有代码提交到当前分支上就触发构建过程
操作:1、源码管理配置
2、勾选Build when a change is pushed to GitLab,并记住GitLab webhook URL
3、打开高级设置,生成Secret token ,
4、登录gitlib ,打开Webhooks http://git.aaa.com/gsx-qa/demo/hooks,配置webhook URL 和Secret token,保存
5、本地修改代码也并提交,出发构建。

jenkins 配置GitLab插件

参考地址:https://yq.aliyun.com/articles/618062
1、打开GitLab网站->个人设置->setting->Account->复制Private token
2、登录Jenkins Web UI-》点击系统管理->再点击系统设置->点击左上角导航配置下拉框->点击Gitlab选项
a, Connection Name随便填;
b, Git Host URL填GitLab的域名地址,例如http://gitlab.yourdomain.com/;
c, Credentials配置;
点击Add下拉框,点击jenkins;弹出框里,kind选择GitLab API Token,将之前复制备用的Private token粘贴到API token输入框中,然后点击添加:
3、选择刚刚新建的Credentials,测试一下能否连接成功,点击Test connection,正常应该返回Success
4、完成后点击页面底部的应用,再点击保存。
注意:如果测试连接不成功,通常是当前节点不能解析gitlab.yourdomain.com域名导致的,设置正确的DNS或者hosts即可。

jenkins分布式构建

pipeline流水线

1、pipeline将开发部署环境生态链的每一步通过流水线串联起来,并代码化,使得一键将本地代码发布到测试环境进行测试发布,最终实现持续集成持续部署。

配置流水线

方法一:直接写pipeline脚本
方法二:写jenkinsfile,并将文件放到git仓库 项目的根目录下

pipeline语法

pipeline {
	agent:any
	enviroments{}
	// 任务集合
	stages{
		stage(‘获取代码'){
			steps{
				echo "第一步”
				echo”第二步"
			}
		}
		stage(‘代码测试'){
			steps{
				withSonarQubeEnv(’SonarQube’){ //SonarQube这个要和在jenkins中配置的服务器名称保持一致。
					echo "第一步”
					echo”第二步”
				}
				script{
					timeout(1){
						def qg=waitForQualityGate()
						if(qg.status!=‘ok’){
							error “未通过代码检查,请及时修改代码"
						}
					}
				}
			}
		}
	}
	post {
	// 通知
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值