jenkins结合git实现流水线作业

版权声明:转载请著明出处 https://blog.csdn.net/weixin_40543283/article/details/89106882

此篇博客是在结合前几篇博客的基础上,进行的整合应用,大家可以自行查看之前的博客

https://blog.csdn.net/weixin_40543283/article/details/88998466              分布式版本控制系统git

https://blog.csdn.net/weixin_40543283/article/details/89003868              使用gitlab搭建私有仓库

https://blog.csdn.net/weixin_40543283/article/details/89005441               jenkins—CI&CD构建、部署、自动化开源软件

一、创建源码管理的工程

 1.创建新的jobs

点击下图中的圆方框即可

输入项目名称,然后选择自由风格的项目

点击ok之后会进入到下面界面

ps:我们可以通过修改浏览器的语言,使jenkins变为中文

2.配置工程设置

首先设置源码管理设置,git的url是自己搭建的gitlab的project的url地址,点击添加凭证

设置为下图

图中的私钥在

[root@git ~]# cat .ssh/id_rsa

点击添加之后,选择凭证root,ok~

ps:这里我一直报错,显示不能连接到gitlab仓库,后来发现居然是我的jenkins虚拟机没有安装git命令,我怕是睡懵比了。。。

接下来设置构建

点击保存

3.构建工程

我们接下来可以点击立即构建

点击下图查看构建是否成功

如上图,此次构建成功

二、创建触发型工程

1.安装所需要的插件

根据下图找到下载插件所在的位置

如下图,为安装成功的界面

2.添加触发器

对之前的test工程增加触发器功能,点击构建触发器,选择scm轮询

 点击保存之后,我们就可以隔一分钟更新一次gitlab库,这个是自动触发的,因为设置的就是隔一分钟更新一次

3.对gitlab的所有仓库进行设置

然后设置Build when a change is pushed to GitLab. GitLab webhook URL: http://172.25.1.2:8080/project/test,点击生成口令,这个口令十分重要

3.gitlab设置所有仓库

回到gitlab上设置所有仓库,点击下面的小扳手

然后设置添加所有仓库

url是在下面获取到的,口令是之前生成的~

4.开启gitlab的外发功能

开启方法如下图

5.测试

[root@git nelws]# git add test
[root@git nelws]# git commit -m "change v3"
[master c9881d2] change v3
 1 file changed, 1 insertion(+), 1 deletion(-)
[root@git nelws]# git push -u origin master
Counting objects: 5, done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 288 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To [email protected]:root/nelws.git
   88527cc..c9881d2  master -> master
Branch master set up to track remote branch master from origin.
[root@git nelws]# 

点击查看控制台,是由触发器自动创建的

这个是被动触发,只要我更新了gitlab仓库,就会触发这个工程执行~

三、docker镜像编译工程

1.安装所需插件

安装插件的地方在上一部分演示过了,安装插件如下

下图为安装成功截图

2.jenkins安装docker和docker镜像

安装docker,软件包我之前的博客都有百度云链接

[root@jenkins docker]# ls
container-selinux-2.21-1.el7.noarch.rpm
docker-ce-18.06.1.ce-3.el7.x86_64.rpm
libsemanage-2.5-8.el7.x86_64.rpm
libsemanage-python-2.5-8.el7.x86_64.rpm
pigz-2.3.4-1.el7.x86_64.rpm
policycoreutils-2.5-17.1.el7.x86_64.rpm
policycoreutils-python-2.5-17.1.el7.x86_64.rpm
[root@jenkins docker]# yum install * -y 

安装docker镜像

[root@jenkins images]# docker load -i nginx.tar 
014cf8bfcb2d: Loading layer  58.46MB/58.46MB
832a3ae4ac84: Loading layer  53.91MB/53.91MB
e89b70d28795: Loading layer  3.584kB/3.584kB
Loaded image: nginx:latest
[root@jenkins images]# docker load -i registry.tar 
917c0fc99b35: Loading layer  130.9MB/130.9MB
5f70bf18a086: Loading layer  1.024kB/1.024kB
e6107e74315e: Loading layer  20.71MB/20.71MB
5deabacb4c9b: Loading layer  20.66MB/20.66MB
32d89efca72a: Loading layer  3.584kB/3.584kB
Loaded image: registry:2.3.1

运行容器

[root@jenkins images]# docker run -d --name registry -p 5000:5000 -v /opt/registry:/var/lib/registry registry:2.3.1
944e6900f0fc5b17557e998641cdc058b975cd8aa4660ccd325c9f018fb6283d

3.配置test工程设置

点击高级,去掉force pull

同时,我们需要对docker.sock进行授权

[root@jenkins images]# ll /var/run/docker.sock 
srw-rw---- 1 root docker 0 Apr  8 22:44 /var/run/docker.sock        ##权限不够,jenkins无法对其进行操作
[root@jenkins images]# chmod 777 /var/run/docker.sock
[root@jenkins images]# ll /var/run/docker.sock 
srwxrwxrwx 1 root docker 0 Apr  8 22:44 /var/run/docker.sock

4.新建docker容器编译工程

设置触发器

选择构建

因为jenkins所作的操作都是以jenkins用户的身份进行操作的,所以要设置sudo

[root@jenkins images]# id jenkins
uid=996(jenkins) gid=994(jenkins) groups=994(jenkins)
[root@jenkins images]# vim /etc/sudoers
92 jenkins ALL=(ALL)       NOPASSWD: ALL

接下来,我们首先在仓库里面添加一个版本的nginx

[root@jenkins test]# ls
Dockerfile  index.html
[root@jenkins test]# cat Dockerfile 
FROM nginx
COPY index.html /usr/share/nginx/html
[root@jenkins test]# cat index.html 
www.nelws.com
www.nelws.com
[root@jenkins test]# docker build -t nginx:v1 .
Sending build context to Docker daemon  3.072kB
Step 1/2 : FROM nginx
 ---> e548f1a579cf
Step 2/2 : COPY index.html /usr/share/nginx/html
 ---> 1518c85d17ec
Successfully built 1518c85d17ec
Successfully tagged nginx:v1

接下来,我们在git进行触发测试

[root@git nelws]# git commit -m "add Dockerfile"
[master 36b5bc1] add Dockerfile
 1 file changed, 2 insertions(+)
 create mode 100644 Dockerfile
[root@git nelws]# git push -u origin master
Counting objects: 4, done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 351 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To [email protected]:root/nelws.git
   c9881d2..36b5bc1  master -> master
Branch master set up to track remote branch master from origin.
[root@git nelws]# git add index.html 
[root@git nelws]# git commit -m "add index.html"
[master cffe843] add index.html
 1 file changed, 1 insertion(+)
 create mode 100644 index.html
[root@git nelws]# git push -u origin master
Counting objects: 4, done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 362 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To [email protected]:root/nelws.git
   36b5bc1..cffe843  master -> master
Branch master set up to track remote branch master from origin.

在jenkins上查看

我们还可以改进这个docker个工程,因为我们多次构建docker容器的话,名字每次都一样,就会报错,我们修改一下构建来进一步完善

然后在git端触发测试

[root@git nelws]# vim index.html 
[root@git nelws]# git add index.html 
[root@git nelws]# git commit -m "v3" 
[master 5749dc6] v3
 1 file changed, 1 insertion(+), 1 deletion(-)
[root@git nelws]# git push -u origin master
Counting objects: 5, done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 260 bytes | 0 bytes/s, done.
Total 3 (delta 1), reused 0 (delta 0)
To [email protected]:root/nelws.git
   5c02c89..5749dc6  master -> master
Branch master set up to track remote branch master from origin.

查看jenkins端控制台日志

curl测试

ok~

猜你喜欢

转载自blog.csdn.net/weixin_40543283/article/details/89106882