基于Docker容器的,Jenkins、GitLab构建持续集成CI

  • 时间:
  • 浏览:0
  • 来源:UU直播快三官方_大发UU直播快3

执行命令打包镜像

这里会在docker创建有4个新的网桥,gitlab所可不可不上能的gitlab容器和redis容器及postgresql容器可不可不上能你什儿 网桥指定的网段内,可不可不上能 通过docker network ls查看.

Jenkins容器安装Jenkins的rpm包,Jenkins依赖 JDK,全都可不可不上能在Jenkins的容器中安装配置jdk,有些人使用jdk1.8,同时可不可不上能Jenkins的容器调用maven的打包命令,全都也可不可不上能配置安装maven,有些人使用maven 3.3.9。

4.构建持续集成环境

万事具备,下面亲戚亲戚我就们时候结速利用gitlab,jenkins,来构建持续集成环境。

最初亲戚亲戚我就们在run jenkins容器的时候,将宿主机的docker文件挂载进了容器结构,你什儿 操作特别要,但我也很迷糊,但可不可不上能 肯定的是,jenkins容器所运行的docker及操作是针对宿主机的docker的

3.构建私有的Docker 镜像仓库

拉取有4个docker 的镜像仓库镜像,并运行该容器,容器运行后会绑定宿主机100000端口,我有些人用的是daocloud.io提供的镜像,你什儿 镜像仓库可不可不上能注册。

e.提交完成后,亲戚亲戚我就们时候结速配置jenkins,以jenkins用户登录jenkins,新建,选取 --构建有4个自由风格的软件项目否则选取

网桥的名称通常为你yml文件所在目录名称的小写加带下划线default,类式mygitlab_default。你什儿 很有用,否则怎样才能我就你可不可不上能容器结构互联,就可不可不上能指定所要连接的容器在有4个网段内,类式jenkins容器否则想结构连接gitlab容器,就得可不可不上能mygitlab_default你什儿 网桥提供的网段内,Docker默认会为容器指定在docker0你什儿 网段内的有4个ip,通常会是172.17.. 我的gitlab默认在172.18,全都可不可不上能在接下来创建jenkins容器并启动时,指定到18你什儿 网段内,当然你想通过宿主机的ip和端口也是可不可不上能 的

b.进入jenkins容器,否则通过git客户端,拉取项目。在拉取时候,可不可不上能用使用ssh-keygen来生成当前jenkins用户在jenkins容器的公钥密钥,ssh-keygen可不可不上能安装openssh。

** 开发者将代码提交(push)到GitLab后,GitLab通过Hook通知jenkins,jenkins自动从GitLab中获取项目最新的源码进行集成和发布。

后续的持续集成,要基于kubernetes,kubernetes会自动的找其节点自动拉取刚push的镜像,并自动部署。未完待续

e.容器启动后,10001000端口被绑定到了宿主机的8888端口,访问localhost:8888来访问jenkins

首次登录jenkins会可不可不上能输入jenkins的超级管理员密码,你什儿 密码在jenkins第一次启动的日志中,可不可不上能 进入jenkins容器,查看运行日志,也可不可不上能 根据页面提示,直接去jenkins的家目录下有4个.jenkins/secrets/init…..的文件内查看密码。登录后注册有4个用户,并在系统管理-管理插件下,安装GitLab的插件。第一次运行jenkins会我就选取安装插件,选取第有4个推荐的安装后,在管理插件的可选插件tab下搜索Gitlab Plugin 和Gitlab Hook Plugin插件进行安装,否则重启jenkins

d.现在拉取到当前目录的eurka是个空项目,亲戚亲戚我就们把亲戚亲戚我就们要上传的项目源码和Dockerfile(用来jenkins调用docker打包镜像用的)加带至你什儿 目录,否则git add ,git commit ,git push 命令将本地文件加带提交并推送整合至gitlab你什儿 项目的某个分支下,默认是master

h.回到jenkins的设置,在构建中下Execute shell下,编写shell脚本,这里要是gitlab被push后,通过webhook的方式让jenkins自动从gitlab下拉取项目时候,要执行的代码

默认拉取时候,会在你什儿 项目的路径下,否则不选取有些人当前的工作目录,可不可不上能 通过echo $WORKDIR来查看当前位置,类式我的项目叫eurka,你什儿 项目下我上传了有4个maven项目,全都我否则你可不可不上能对你什儿 maven项目打包,我得进入你什儿 项目目录,否则对你什儿 项目下的pom文件进行操作,贴出我的shell:

这有4个配置完成后,亲戚亲戚我就们可不可不上能 就可不可不上能 拉取项目到本地了,以我有些人demo为例

d.运行jenkins容器,这里可不可不上能将container的网络设置跟GtiLab同网络的环境下,同时亲戚亲戚我就们希望jenkins容器在用maven打包时候,在调用docker惊醒封装镜像,否则推送镜像至私有的镜像仓库,全都亲戚亲戚我就们把宿主机的/usr/bin/docker 和/run/docker.sock 和所依赖的共享库文件,在启动容器时同时挂载至容器结构。

a.在gitlab中创建有4个项目,项目类为public,创建后会有如下提示,有有哪些提示用来告诉你怎样才能通过客户端下载项目,并提交项目

运行成功后,可不可不上能 访问http://localhost:100000/v2/_catalog 来查看本地仓库信息

a.通过Dockerfile构建有4个jenkins容器,基于centos7的镜像。

通过docker-compose的方式安装gitlab,docker-compose你什儿 命令可不可不上能单独安装,docker-compose会对指定目录下的docker-compose.yml文件进行执行,你什儿 文件会一次性启动所编辑的镜像,及所要用到的参数,官方提供的yml文件内容如下:

f.否则进入到你什儿 项目的配置下,在源码管理选取Git,否则在Repository URL下,填入项目的ssh地址,注意这里不可一世用localhost,我就填写主机的ip加带100022端口,也可不可不上能 配置gitlab容器的ip地址加带22端口,我这里配置的是我的容器地址,类式ssh://git@172.18.0.4:22/jenkins/eurka.git,这里过多写100022端口!!!!否则是public项目,全都不可不可不上能加带认证

g.在构建触发器下,选取Build wher a chage is pushed to GitLab……….将上端的地址基因重组,否则在gitlab你什儿 项目的Setting下的Integrations下,勾选Push Event,找到Add webhook,并填写刚才基因重组的路径,我这里写的依然是容器ip,http://172.18.0.5:10001000/project/eurka,没办法 使用localhost:8888你什儿 url,保存

在配置好key时候,亲戚亲戚我就们回到jenkins容器,当前用户为jenkins。亲戚亲戚我就们想通过git客户端拉取项目的第4个准备工作,可不可不上能配置git的全局配置。

c.登录gitlab,右上角下拉列表下选取setting,否则在主页面有4个SSH Keys的tab页,将你刚才基因重组的公钥内容加带至Key你什儿 文本框,否则点击Add key。你什儿 步骤的意思是,怎样才能我就想让jenkins通过ssh协议从gitlab拉取项目,可不可不上能认证,配置的公钥要是允许jenkins容器的jenkins用户所运行的jenkins从gitlab通过ssh协议拉取项目(特别别扭,否则可不可不上能注意的是jenkins你什儿 容器主机和jenkins用户,jenkins系统程序运行运行是jenkins用户启动的)。

(这里有4个没办法 避免的间题,要是关于拉取private类型的项目,可不可不上能做的ssh认证,可不可不上能公钥密钥匹配,否则没办法 实现,全都暂时项目可不可不上能public。否则public的项目的话,可不可不上能 通过http协议进行拉取,否则需不可不可不上能配置ssh的公钥,我也没试过,因该是不可不可不上能把。)

b.构建基础镜像,整合jdk及mvn。配置PATH ,安装所可不可不上能的工具,Dockerfile如下:

c.通过基础镜像安装jenkins,也是通过Dockerfile

可不可不上能 一路回车,默认生成在jenkins用户的家目录下的有4个.ssh的文件夹,将.ssh/id_rsa.pub的内容完正基因重组

在docker-compose.yml文件所在目录下,执行docker-compose up命令(docker-compose命令可不可不上能安装),否则时候没办法 下载过GitLab的镜像会自动下载,否则下载过就直接启动已有的容器。

https://about.gitlab.com/installation/#centos-7,直接安装gitlab,不借助docker