学习地址:
========正文开始========
DevOps的解释,概念?
图形描述:一般来说DevOps都是用这样的一个正无穷符号来表示的,解释见下图。
可以看到,这个正无穷符号上面包含了许多其他的软件,这些软件就是组成我们DevOps的核心部分。
而上面的图片,又可以用一个问题来提问:软件的开发周期要经历那些过程?
安装软件环节:
使用Docker安装GitLab
推荐最小内存是4个G,因为GitLab启动差不多都要3个G
Linux的图形化界面:MobaXterm
1.先保证有docker以及docker-compose
docker -v
docker -compose -v
2.云服务器的话,就开启端口,本地服务器的话,就关闭防火墙
systemctl stop firwalld
3.先查询有没有这个镜像,然后pull下来
docker search gitlab
docker pull gitlab/gitlab-ce:latest
4.查询是否成功
docker images
5.修改配置文件的内容,需要到指定的目录,内容可在网上复制
vi docker-compose.yml
6.启动过程中访问可能会出现502,这是正常的,因为启动较慢。
7.进入容器内部,gitlab查看初始密码
docker exec -it gitlab bash
cat /etc/gitlab/initial_root_password
8.登录成功后先修改初始密码
至此,GitLab准备完毕。
安装Maven
Jenkins内部要使用Maven
1.安装jdk1.8
2.进入maven.apache.org下载Maven,尾缀是.tar.gz
3.Maven需要注意配置私服地址(阿里云或其他)以及setting文件里面默认使用jdk1.8(百度)
set nu # 给文本添加序号
至此,Maven准备完毕。
安装Docker
简单说一下,为什么要使用docker:
让应用运行在容器中,安装使用yum安装,很方便。安装后需要注意设置镜像云,安装docker,设置开机自启
docker -v测试是否成功
还需要安装docker -compose,这是docker的编排工具。
安装Jenkins
核心组件。可以持续集成和持续部署,需要安装大量插件,安装成本较高。
CI 持续集成,能够自动构建和测试
CD 持续交付、持续部署,可以用K8s自动部署
1.安装Jenkins镜像
docker pull jenkins/jenkins:2.319.1-lts
2.运行该容器,能够提供一个初始化密码
3.在宿主机上面输入该端口,进入Jenkins(如果进入的等待时间过长,可以使用一些国内的镜像 )
4.输入密码之后,会提示你要安装那些插件,你可以选择 自己选择内容安装 然后直接点安装,这个过程可能比较久,如果下载失败了也没关系,可以自己去官网下载
5.下载完成后可能会发现不少插件下载失败了,但是问题不大
6.然后就需要创建一个用户信息,一直下一步就OK了
下载失败的内容如何重新下载?
第一步,
第二步,划到最下面,
第三步,
第四步,搜索你需要用的插件安装即可。
如果还是失败的话,就修改一下 下载这些插件的源。
至此,Jenkins安装完成,其中成本最高的地方,就是安装这些插件。
配置Jenkins:
1.首先就要让Jenkins能从GitLab/Gitee/GieHub上面拉取代码,需要用到插件Git parameter
2.配合上jdk和Maven,就可以用Jenkins构建代码了
这个地方上面的步骤有说如何进入。
点击Add JDK
可以选择自动安装,但是不建议,因为下载速度……
这个地方的地址,是Jenkins容器内部的地址,并不是其他的地址,不要搞错了
还需要指定Maven
至此,我们就可以从git上面拉取代码,并且可以用Maven构建,下一步我们就需要把构建好的jar包或者war包推送到服务器上面。
3.检查是否安装插件,让Jenkins可以连接上某一个目标服务器
4. 如果插件安装成功,则可以进入系统设置查看
5.划到最下面,就可以看到这个插件,点击Add
6.填写配置信息
7.完成后提示不成功,因为还需要给root用户指定密码,点击高级选项
8.这个地方可以指定密码,写好后就不会报错了
9.点击应用,再点击save,就可以了。
至此,我们就实现了git拉取代码,Maven拉取代码,并且部署到远程服务器上面。
正式开始走一遍流程:
1.写一个最最简单的controller接口就可以开始测试了
2.测试无误后,创建一个gieLab仓库,把代码推送上去
3.Jenkins也需要创建新的任务,入门的话,选择第一个即可
4.配置源码
把之前git仓库的地址填入。
如果是公开的仓库,就不需要写用户密码,如果是私有的,则需要写一下。
5. 可以查看代码是否被拉取到Jenkins的本地
先进入容器
docker exec -it jenkins bash
来到用户目录
cd ~
可以看到有一个目录叫workspace,所有的工程都在里面,在这个里面就可以看到源码是否保存在Jenkins本地中了。
6.现在我们希望Jenkins拉取代码之后,通过Maven构建代码
打开设置
里面有很多的选项,我们需要选择使用Maven,这个就是调用顶层Maven构建的意思
在里面输入命令,意思就是先clean 在打包并且跳过测试
然后,应用,保存即可。
最后再次构建,出现成功
至此,我们完成了用Jenkins把代码打包成jar包的操作,现在需要部署到服务器上,需要用docker运行。
7.设置构建后的操作
输入内容:
目前来说,只是为了测试Jenkins,所以不需要填写那么多的内容,写到这里应用,保存即可。
再次点击构建,至此,就可以把jar包推送到服务器上面了。
8.使用dockerfile构建jar包的镜像
我们最终的目的是使用docker运行这个jar包,所以我们需要自己构建镜像,则需要使用到dockerfile
9.在代码里面写一个dockerfile文件
首先,我们需要一个基础镜像,去网上搜一下就可以了
这里指定基础镜像
接下来就需要复制这个jar包,但是这个jar包的名字可能会比较长,所以我们可以给它设置一个名字
然后写入dockerfile文件
这样就写好了一个很简单自定义镜像
10.但是我们现在还需要写一些内容来管理这些自定义镜像:
现在就可以通过dockerfile构建自定义镜像,使用docker-compose.yml 运行这个镜像,处理好端口号这些问题,然后全部推送到git仓库中。
11.我们想要让它自己运行这个yml文件,也就是自己去实现全部的操作,所以我们还需要在Jenkins里面去配置:
再次构建,可能会出现一些问题,例如返回值不是零(零代表成功)
如何解决?
仅需把我们之前写好的那些命令放到目标服务器上面去执行一遍就可以了:
还需要把之前的命令改成绝对路径
再去访问服务器的端口+路径,就看到看到我们最开始所写的内容:hello Jenkins
至此,就实现了一个完整的简单的Jenkins自动化部署。
但是还存在一些问题,例如发布了新的版本,那么之前的镜像就会被覆盖,变成None,如何处理呢?
我们可以使用
docker image prune -f
为了实现自动化,我们可以把这个命令也放在Jenkins的命令中。
至此,就实现了持续集成,也就是CI。