Linux企业运维篇——git+gitlab+jenkins+docker构成持续集成环境
一.GitLab与jenkins
Gitlab是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。
Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。
两者结合起来,就可以实现开发者提交代码到GitLab,Jenkins以一定频率自动运行测试、构建和部署的任务,帮助开发团队更高效的集成和发布代码。
二.server1安装git,部署gitlab实现代码提交
[root@server1 ~]# yum install -y git
下载好gitlab软件并安装
[root@server1 ~]# ls
gitlab-ce-11.2.0-ce.0.el7.x86_64.rpm
[root@server1 ~]# yum install -y gitlab-ce-11.2.0-ce.0.el7.x86_64.rpm
[root@server1 ~]# cd /etc/gitlab/
[root@server1 gitlab]# ls
gitlab.rb
[root@server1 gitlab]# vim gitlab.rb
13 external_url 'http://172.25.70.1'
[root@server1 gitlab]# gitlab-ctl reconfigure
浏览器访问http://172.25.70.1可以看见gitlab的登陆界面
填写新密码后重新登陆
创建一个新项目gitlabtest,勾选initialize repository with a README
第一次创建需要添加密钥,同时看见生成一个README文件
[root@server1 gitlab]# ssh-keygen
添加公钥到gitlab
[root@server1 gitlab]# cat /root/.ssh/id_rsa.pub
进入到新建的项目中,复制上面的SSH地址
[root@server1 ~]# git clone git@172.25.70.1:root/gitlabtest.git #仓库克隆,查看可以发现git中已经有了新建的项目
Cloning into 'gitlabtest'...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (3/3), done.
[root@server1 ~]# cd gitlabtest/
[root@server1 gitlabtest]# ls
README.md
[root@server1 gitlabtest]# cat README.md
# gitlabtest
新建文件text.txt测试git和gitlab是否可以上传成功
[root@server1 gitlabtest]# echo redhat > test.txt
[root@server1 gitlabtest]# git add test.txt
[root@server1 gitlabtest]# git config --global user.email "111111111@qq.com"
[root@server1 gitlabtest]# git config --global user.name "rong"
[root@server1 gitlabtest]# git commit -m "add test"
[master b8fe06f] add test1 file changed, 1 insertion(+)create mode 100644 test.txt
[root@server1 gitlabtest]# git push -u origin master
Counting objects: 4, done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 267 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@172.25.70.1:root/gitlabtest.git44f4677..b8fe06f master -> master
Branch master set up to track remote branch master from origin.
F5刷新页面可以看到新添加的文件test.txt,内容为redhat
二.server2部署jenkins
下载jdk和jenkins并安装
[root@server2 ~]# ls
jdk-8u171-linux-x64.rpm jenkins-2.121.3-1.1.noarch.rpm
[root@server2 ~]# yum install -y jdk-8u171-linux-x64.rpm jenkins-2.121.3-1.1.noarch.rpm
[root@server2 ~]# systemctl start jenkins
[root@server2 ~]# netstat -anltp | grep 8080
tcp6 0 0 :::8080 :::* LISTEN 1258/java
虚拟机需要能够联网
访问 172.25.70.2:8080
将浏览器切换成中文的
点击choose,此时没有中文,点击选择一个语言添加
添加中文
点击add
点击ok后刷新jenkins界面
[root@server2 ~]# cat /var/lib/jenkins/secrets/initialAdminPassword
84d3392dce0f42a1b31f212e8ba0e27a
安装官方推荐插件
选择使用admin账户继续
点击保存完成
点击开始使用
点击创建一个新任务hello,选择自由风格
点击配置,复制gitlab中的地址
没有添加密钥,所以需要添加,点击Add
选择Jenkins
类型选择SSH Username with private key,填写Username为root,Private key选择Enter directly
[root@server2 ~]# yum install -y git ##一定要安装
回到server1复制私有密钥
[root@server1 gitlabtest]# cat /root/.ssh/id_rsa
-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEAufuCA1w2IyF72wtuU79CACTUFAw3dZ9kLNlKcQ31Pv9htDSu
iZtcuiOphQmhvtB4YwLT8op8YTW7rbmjNHVV8X0cE28dqemEI2f1Q2rpaTuzOj3n
LUNMWzfTxkohMSdlMvx8YYQ5ILisojKeA9vmRYmKlibNLtzOIs5L6oar/FstlnnE
cA0fsWUAIAVBtYmUbKFloKiavmV+Z2U+CYxWzvjtc+1wEi4Fj4X2ce2Jp2vCDULZ
F2aIDoHZeUNMdRXvIWWzlddFdz7j+rYaw8JEiNHrAAd1WJBGczXm+T7FdBlkYOSI
zqR5ZfgzydjwwE+bAhNrXXis0QHKgWD9epSipwIDAQABAoIBAQCOEel0Ral5Vqe1
YVsLEGwLjhaPpfFrobG1bNun1yDD2fQ545B8v7iq3HkvjncHO1rrT4q2mUGARLq0
b72TYhqf2ZFr6xK+7Aorvcsmj/HzmE5GLGl/MwyOFexpadFHKi/tLeCZ4ZZ+P3Ro
hsAcdIvIDNRX9RYCOVwiTHLDmdKhd3uKKaWeDM/OmdyTLoNtZ8vIcKUJXvhYtSgL
TsO3TMxdQaTIWuFNBRR7qrSxcsQAc8y29LqXDYMbBiMCOSc5hKMdeEa9kf5yg7uK
xbZ3uzmFkOY8M2UIaB1LBhKY2J0FXY8VF9SjkoWSddDfcAMyaz8dvqQQqu/RrY5m
N8UZQU3ZAoGBAONgoME4o+PmEEWDFsIJMSlO/rgCwcXY0ly2N5Gl874qU5/NmNL2
U1KFdVKv/JJF/4zrwI8iIc3oTECa+Ti9IrZUNikXjxm3SF3l6d8Vq9LviRh8gOFo
eAnGkvvs1WlfAF2F8zrL7DX8bbBLme2LtVGavdEC5agV0PqzT5/guVDbAoGBANFk
5tXsD4RWkyeEJqCLKEIK3yNxfDxhqGE0iVQjklwEO7/DjRWgKRe97FTiopAfE0bd
r4Fatz6T0TUm8SPG3KcLTE8MiY2AzKYHNbLyRK8xUD+LZbjaiQCxDskUXLBhJ2Ij
ne33OpJEve8SJBoLp/pk5X6KIq5ugs6mg3u28MklAoGBANcvkJOsjfZVudp/WF9k
IaGNgCUXftlF/Lf/PxHZM5cqKaAYDGTC+FIlucX6hZbNJi/wwXj0fXeIO/n8cJZQ
8PQLOIKlKCnXOmaa+z3EHavwRBfnZHVu0AO4aUyAc+xYG1lnNqzTZwYkko6Azflw
+bV0M+YFzuDHXNKWNmoBXIB3AoGAdSMTFxzlWUztKS/+Q9VVAgz+4t77dvPSs/4l
zNHRcHRV0GLeq/haxJNUf/AArMsVh5FAOwa6d+FNKYTNZQw8J55kY9xJnsUstrxV
x/NLhQ37LHEYyJ5IAgEKmmYvq+PNmlL+aD7jnyuhbPojBAb9Q0/qKi2wVRAxUNVJ
vI2MiZkCgYEAwLBB/pwdaahvpqZyQ5E5UReZ9KP21JSaa4JzxdBbBcerEZlagRz0
4XmJOb9N0GYFq7wZQIkCWNcMSb+cPuZ1zKQpS49LOYjHxg5cVllXlcZF3+ZUSggJ
hxTt9b7PSsyvdVNLC9/59Z896ZMUFTxbd3eJOkmafl6ZJXK8S0zSf/0=
-----END RSA PRIVATE KEY-----
点击Add添加密钥
构建触发器,选择定时构建,写上定时策略* * * * *
构建–>增加构建步骤—>执行shell
写完之后保存
编辑index.html文件,选择push之后,每一分钟它会刷新,会在构建名称之后选择控制台输出
[root@server1 gitlabtest]# pwd
/root/gitlabtest
[root@server1 gitlabtest]# echo hello.org > index.html
[root@server1 gitlabtest]# git add index.html
[root@server1 gitlabtest]# git commit -m "add index"
[master 44fa44d] add index1 file changed, 1 insertion(+)create mode 100644 index.html
[root@server1 gitlabtest]# git push -u origin master
Counting objects: 4, done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 307 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@172.25.70.1:root/gitlabtest.gitb8fe06f..44fa44d master -> master
Branch master set up to track remote branch master from origin.
三.关联gitlab和jenkins
jenkins下载插件
系统管理->管理插件
可选插件->找到Gitlab和Gitlab Hook直接下载
配置->构建触发器->选择Build when a change is pushed to GitLab. GitLab webhook URL: http://172.25.70.2:8080/project/hello (记住这个URL)->高级
点击Generate生成token
去掉轮询
配置gitlab
点击最上面一行的小起子->选择设置
Outbound requests :外发请求
进去自己的工程下:设置——>导入所有仓库
填写URL和Secret Token,Trigger全选,最后点击Add Webnook
测试,push events
可以在Jenkins上看到触发的事件和相应的控制台输出
自己修改文件上传也会有相应的触发
[root@server1 ~]# cd gitlabtest/
[root@server1 gitlabtest]# ls
index.html README.md test.txt
[root@server1 gitlabtest]# echo redhat > index.html
[root@server1 gitlabtest]# git add index.html
[root@server1 gitlabtest]# git commit -m "add index"
1 file changed, 1 insertion(+), 1 deletion(-)
[root@server1 gitlabtest]# git push -u origin master
Counting objects: 3, done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 267 bytes | 0 bytes/s, done.
Total 2 (delta 0), reused 0 (delta 0)
To git@172.25.70.1:root/gitlabtest.git44fa44d..342fef2 master -> master
Branch master set up to track remote branch master from origin.
三、安装docker
[root@server2 docker]# ls
compose
containerd.io-1.2.5-3.1.el7.x86_64.rpm
container-selinux-2.21-1.el7.noarch.rpm
docker-ce-18.03.1.ce-1.el7.centos.x86_64.rpm
docker-ce-18.06.1.ce-3.el7.x86_64.rpm
docker-ce-18.09.5-3.el7.x86_64.rpm
docker-ce-cli-18.09.5-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@server2 docker]# rm -f docker-ce-18.03.1.ce-1.el7.centos.x86_64.rpm docker-ce-18.09.5-3.el7.x86_64.rpm containerd.io-1.2.5-3.1.el7.x86_64.rpm docker-ce-cli-18.09.5-3.el7.x86_64.rpm
[root@server2 docker]# ls
compose
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@server2 docker]# yum install -y *.rpm
[root@server2 docker]# systemctl start docker
[root@server2 ~]# ls
docker jdk-8u171-linux-x64.rpm jenkins-2.121.3-1.1.noarch.rpm nginx.tar registry2.tar
[root@server2 ~]# docker load -i registry2.tar
d9ff549177a9: Loading layer 4.671MB/4.671MB
f641ef7a37ad: Loading layer 1.587MB/1.587MB
d5974ddb5a45: Loading layer 20.08MB/20.08MB
5bbc5831d696: Loading layer 3.584kB/3.584kB
73d61bf022fd: Loading layer 2.048kB/2.048kB
Loaded image: registry:2
[root@server2 ~]# 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@server2 ~]# docker run -d --name registry -p 5000:5000 -v /opt/registry:/var/lib/registry registry:2
34b317046620db249ce9b33d66e8c482b7d37841e5faac3ec469a92625a7cba8
[root@server2 ~]# ll /var/run/docker.sock
srw-rw---- 1 root docker 0 Jun 15 02:53 /var/run/docker.sock
[root@server2 ~]# chmod 777 /var/run/docker.sock
[root@server2 ~]# su - jenkins
[root@server2 ~]# vim /etc/sudoers
93 jenkins ALL=(ALL) NOPASSWD: ALL
在插件管理中安装三个docker插件
安装好后点击hello中的配置——>构建,删除执行shell,重新添加构建(注意勾选do not build the image)
新建一个任务docker,构建自由风格
构建触发器
构建环境
配置后保存
[root@server1 ~]# cd gitlabtest/
[root@server1 gitlabtest]# vim Dockerfile
FROM nginx
COPY index.html /usr/share/nginx/html
[root@server1 gitlabtest]# git add Dockerfile
[root@server1 gitlabtest]# git commit -m "add Dockerfile"
[master d25b041] add Dockerfile1 file changed, 2 insertions(+)create mode 100644 Dockerfile
[root@server1 gitlabtest]# git push -u origin master
Counting objects: 4, done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 359 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@172.25.70.1:root/gitlabtest.git342fef2..d25b041 master -> master
Branch master set up to track remote branch master from origin.
在server2中查看镜像
[root@server2 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
localhost:5000/nginx latest 23dec48ca5fa About a minute ago 10
registry 2 f32a97de94e1 3 months ago 25.8MB
nginx latest e548f1a579cf 15 months ago 109MB
[root@server1 gitlabtest]# vim index.html
www.redhat.com
[root@server1 gitlabtest]# git add index.html
[root@server1 gitlabtest]# git commit -m "v3"
[master 97f3be1] v31 file changed, 1 insertion(+), 1 deletion(-)
[root@server1 gitlabtest]# git push -u origin master
Counting objects: 5, done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 254 bytes | 0 bytes/s, done.
Total 3 (delta 1), reused 0 (delta 0)
To git@172.25.70.1:root/gitlabtest.gitd25b041..97f3be1 master -> master
Branch master set up to track remote branch master from origin.
在网页上查看172.25.70.2
Linux企业运维篇——git+gitlab+jenkins+docker构成持续集成环境相关推荐
- Linux企业运维——Kubernetes(十四)PSP安全策略
Linux企业运维--Kubernetes(十四)PSP安全策略 文章目录 Linux企业运维--Kubernetes(十四)PSP安全策略 一.PSP安全策略简介 二.PSP安全策略配置 一.PSP ...
- Linux企业运维——LVS负载均衡
Linux企业运维--LVS负载均衡 文章目录 Linux企业运维--LVS负载均衡 一.LVS简介 二.DR模式 三.使用DR模式实现负载均衡 四.问题解决 五.LVS的10个调度算法简介 一.LV ...
- Linux企业运维——Kubernetes(三)Pod资源清单
Linux企业运维--Kubernetes(三)Pod资源清单 文章目录 Linux企业运维--Kubernetes(三)Pod资源清单 一.资源 1.1.资源分类 1.2.资源清单 二.实践操作 2 ...
- 【DevOps】Jenkins+Git+Gitlab+Sonar+Nexus实现持续集成
文章目录 什么是持续集成?CI/CD指的是什么? 如何实现持续集成 一.筹备工作,CentOS 7.6系统 1.安装JDK,配置环境变量 2.Maven下载 3.Git安装 4.GitLab安装 5. ...
- GitLab + Jenkins + Sonar Qube 持续集成
GitLab + Jenkins + Sonar Qube 持续集成 一. 持续集成 二. 持续交付 三. 持续部署 四. 持续集成的实施流程 五. gitlab 5.1 gitlab安装配置 5.1 ...
- Jenkins——Jenkins介绍+基于云平台的Jenkins安装和持续集成环境配置(插件+用户权限+凭据+Maven打包)
Jenkins--Jenkins介绍+基于云平台的Jenkins安装和持续集成环境配置(插件+用户权限+凭据+Maven打包) 持续集成及Jenkins介绍 软件开发生命周期 什么是持续集成? 持续集 ...
- 基于Jenkins 快速搭建持续集成环境
2019独角兽企业重金招聘Python工程师标准>>> 持续集成概述 什么是持续集成 随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开 ...
- 构建基于Jenkins + Github的持续集成环境
登录 | 注册 John_cdy的专栏 学无止境 目录视图 摘要视图 订阅 有奖征资源,博文分享有内涵 6月推荐文章汇总 CSDN博文大赛初赛晋级名单公布 关注CSDN社区微信,福利多多 构建基于Je ...
- Jenkins安装和持续集成环境配置
Jenkins安装和持续集成环境配置 持续集成说明 Jenkins安装 Jenkins插件管理 下载中文汉化插件 Jenkins用户权限管理 安装Role-based Authorization St ...
最新文章
- python链接mysql 判断是否成功_【初学python】使用python连接mysql数据查询结果并显示...
- [原创]java WEB学习笔记86:Hibernate学习之路-- -映射 n-n 关系,单向n-n,双向n-n
- 互联网协议入门(二)
- DevExpress的TreeList怎样给树节点设置图标
- 【GIF动画+完整可运行源代码】C++实现 插入排序——十大经典排序算法之三
- oracle 减少回表,減少oracle sql回表次數 提高SQL查詢性能 | 學步園
- 带下划线的二级域名IE无法读取session
- 山大计算机学院副院长屠长河,留学交流系列——山东大学计算机学院访问澳门大学...
- 圣思园Java视频 学习笔记
- win10桌面背景为什么突然变黑了 win10桌面背景不显示解决方法
- MarkDownPad 2实用教程
- 类似京东商城客户端应用源码
- 有AI就不搬砖?超乎你的想象!道翰天琼认知智能机器人平台API接口大脑为您揭秘-1。
- SpringBoot整合极光推送
- 深度解读:阿里云视频直播功能升级
- pandas学习之pandas基础
- Kbuild语法解析
- CentOS 7的安装配置图形界面
- Sentinel 限流使用案例
- 第三十二章 XML基础知识概念