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仓库,就会触发这个工程执行~
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~