jenkins入门

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

CI 、CD入门
在这里插入图片描述

一:jenkins实现CI操作

1.在jenkins环境安装jdk 、maven ,同事修改maven里的settings.xml中的两个配置:添加jdk插件版本并开启和私服镜像(也可以在jenkins页面的全局配置选择自动安装,但是自动安装速度很慢,所以这里选择手动安装,后面直接在全局配置指定目录)
2.上面两个装好后,后续通过共享数据卷的方式共享给jenkins容器,就可以在后面的jenkins容器内部使用到了
3.使用容器镜像启动jenkins,同时安装git parameterpublish over ssh 插件
4.安装好ssh插件后,在系统配置的最下面可以添加目标服务器,用于后续的服务部署等,需要添加好账号密码或者密钥,指定工作目录
5.在jenkins里面创建工程—添加代码仓库—在“build”中添加调用顶层maven去构建(此处就能选择之前的maven环境,填写打包命令了)
此处对应上图中的pull拉去代码和build打包两步
6.继续在工程的config中配置“post-build actions”—send build artifacts over ssh连接目标服务器—选择服务器-在transfer下面填写需要上传的包,exec command可以填写执行命令

代码添加dockerfile:
代码添加dockerfile
代码添加dockercompose:
代码添加dockercompose
jenkins添加一个自由风格的软件项目,工程config页面添加构建后操作:
在这里插入图片描述
此处cd注意后面加绝对路径
在这里插入图片描述
此时,业务服务器每次打包的镜像版本相同,前面的老旧镜像会变成none,使用如下命令,对none镜像进行清理:
docker image prune -f 命令用于清理系统中未被使用的 Docker 镜像。具体来说,它会删除那些未被任何容器使用的悬空镜像(dangling images),从而释放磁盘空间。

此时,整个CI流程完成。

二:jenkins实现CD操作

工程中选择添加一个git parameter(对应上面的git parameter参数化构建),指定tag
在这里插入图片描述
打包前添加一个execute shell,拖拽到maven前面,要先切换到对应的版本或者提交点,再打包
在这里插入图片描述
引用前面的tag,后面在构建前,在代码仓库中的代码打上tag标签后,在进行构建
在这里插入图片描述
在代码仓库中的代码打上tag标签,重新回到jenkins,发现此时构建变成了build with parameters,可以看到旁边打的标签,选择对应的标签进行构建。
此时在构建日志里面可以看到, 在打包前 有一个git checkout $tag的操作
在这里插入图片描述

三、在jenkins容器内部制作容器镜像

上面两步是在部署服务的客户端制作镜像并启动。
1.前置条件:
jenkins容器内部需要有docker的执行权限:
1.在jenkins容器内部安装docker-------安装麻烦
2.直接让jenkins使用宿主机的docker----推荐,方法如下:
cd /var/run 该目录下有个docker.sock文件
在这里插入图片描述
修改docker.sock权限 :
chown root:root docker.sock
chmod o+rw docker.sock
再将宿主机上的/var/run/docker.sock映射到jenkins容器; 同时将docker命令和daemon.json映射进容器
在这里插入图片描述
修改docker-compose.yml文件,添加三行,如上图
docker-compose up -d -------重启jenkins
此时即可进jenkins容器内部,检查docker是否可用

  1. 此时代码处,可以不用dockercompose文件了,只用留下dockerfile
    在这里插入图片描述
    3.添加新tag后,修改jenkins工程,去掉前面传包到业务服务器并打包的配置,添加jenkins的shell模块,打包(因为此时jenkins是用的宿主机的docker,所以可以直接从宿主机docker images看到打的包),打包后继续添加上传镜像的命令
    在这里插入图片描述

四:jenkins通知目标服务器,让目标服务器拉取harbor镜像

基本流程:
1.让jenkins告知目标服务器要拉取哪个镜像
2.判断当前容器是否正在运行这个容器,如果正在运行就要删除stop& remove,停止 并删除
3.如果目标服务器存在当前镜像,需要删除---可能就名字一样,内容不同
4.目标服务器拉取harbor镜像
5.将拉取下来的镜像运行成容器

(目标服务器需要知道如下内容:1.harbor地址/harbor仓库/镜像名:镜像版本 2.端口号)

	计划在目标服务器使用脚本,完成上述逻辑
	在目标服务器编写脚本,并逐步测试:

在这里插入图片描述

五:基于harbor的最终部署

将上述脚本文件加入环境变量,以便在任何时候都能执行
在这里插入图片描述
jenkins参数化构建,添加两个字符参数,定义容器port和宿主机port(和脚本对应)
在这里插入图片描述

构建后操作,添加ssh模块
在这里插入图片描述

六:jenkins流水线(区别于上述的自有风格软件项目)

此时jenkins工程里面已经没有构建和构建后的操作了,大体流程都是通过流水线脚本进行实现。

//所有的脚本命令都放在pipeline中
pipelline{
// 指定任务在哪个集群节点执行,如果有多个jenkins 就随机挑选一个
agent any

// 声明全局变量,方便后续使用
environment {
	key = 'value'
}

stages {
	stage(xxx) {
	steps {
			xxxx
		}
	}
	stage(xxx) {
	steps {
			xxxx
		}
	}
}

}
在这里插入图片描述
实际使用的时候将steps里面的内容换成需要操作的内容,可以点击流水线语法,进去后选择需要的步骤,通过jenkins进行自动生成
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

七:通过jenkinsfile 维护流水线脚本

上述方式通过在流水线中直接写脚本,这里可以选择SCM,通过git的方式来维护脚本,脚本放在一个叫jenkinsfile的文件中,放在git仓库中
在这里插入图片描述
在这里插入图片描述

7.1 拉取git代码操作

推荐还是通过tag来拉取, 添加参数化构建:
在这里插入图片描述
同时使用jenkins中生成的脚本,替换掉jenkinsfile对应的位置,注意分支使用**${tag}**替换
在这里插入图片描述

在这里插入图片描述

7.2 maven构建项目

jenkins流水线语法这里选择脚本,输入maven构建语法后点击生成流水线脚本
在这里插入图片描述
替换掉jenkinsfile中的对应位置并保存
在这里插入图片描述

7.3 sonarqube检测代码质量

在这里插入图片描述
在这里插入图片描述

7.4 通过docker制作自定义镜像

在这里插入图片描述
在这里插入图片描述

7.5 推送镜像到harbor

jenkinsfile中可以添加变量,供后续使用方便,比如这里推送harbor镜像中的几个参数:
在这里插入图片描述
将生成的脚本剪切到jenkinsfile后,使用变量进行替换:
在这里插入图片描述
在这里插入图片描述

7.6 通过publish over ssh通知目标服务器部署

可以提前再jenkins中声明上面的容器端口的参数
在这里插入图片描述
在这里插入图片描述

流水线语法这里选择sshpublisher模块:
在这里插入图片描述
在这里插入图片描述
生成的脚本放到jenkinsfile中,注意要把这里的单引号改成双引号:
在这里插入图片描述
注意:Jenkins中添加参数化构建时的参数会在构建时显示出来,并可修改!!!
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值