Cento7部署基于Jenkins和Gitlab的持续集成与部署架构

CI/CD

持续集成(Continuous Integration,CI)是一种软件开发实践。在持续集成环节中,开发人员每人每天至少集成一次他们的开发成果。每次集成后会经过自动构建(包括静态扫描、安全扫描、自动测试等过程)的检验,以发现开发中的错误。这样做可以加快开发软件的速度和提升开发软件的效率
持续交付(Continuous Delivery)是指持续将开发好的软件新版本交付给质量团队或者用户进行评审,若评审通过了,代码即可进入生产阶段
持续部署(Continuous Deployment)是完成持续交付后的下一步,指的是开发的软件新版本通过评审以后,可以实现自动部署到生产环境中

前期准备

准备三台Centos7虚拟机,设置IP地址和hostname,关闭防火墙和selinux,同步时间,修改IP地址和hostname的映射关系

hostname ip
master 192.168.29.132
bak 192.168.29.138
gitlab 192.168.29.140

在master中部署jenkins,gitlab机器中部署GitLab,而bak机器作为部署机器
安装openjdk

[root@master ~]# yum install java -y
[root@bak ~]# yum install java -y
[root@gitlab ~]# yum install java -y

SSH免密登陆

[root@master ~]# ssh-keygen
[root@bak ~]# ssh-keygen
[root@gitlab ~]# ssh-keygen
[root@master ~]# ssh-copy-id [email protected]
[root@master ~]# ssh-copy-id [email protected]
[root@bak ~]# ssh-copy-id [email protected]
[root@bak ~]# ssh-copy-id [email protected]
[root@gitlab ~]# ssh-copy-id [email protected]
[root@gitlab ~]# ssh-copy-id [email protected]

部署Jenkins

下载yum源

[root@master ~]# wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo
[root@master ~]# rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key
[root@master ~]# yum install jenkins -y
#启动jenkis
[root@master ~]# systemctl start jenkins
#jenkins默认监听8080端口,若有冲突需要修改端口号或者停止其他服务
[root@master ~]# netstat -tnlp |grep 8080
tcp6       0      0 :::8080                :::*                    LISTEN      8597/java
#查看日志找初始化密码
[root@master ~]# cat /var/log/jenkins/jenkins.log |grep  -A2 Please
Please use the following password to proceed to installation:

653fde4a04864f5589949d61f2b82415 #初始化密码

测试验证
访问ip:8080,按照引导流程安装推荐的插件和设置管理员等信息后可进入主页
若插件安装不成功,可自行下载相应插件并手动配置
Manage Jenkins->Manage Plugins->Advanced->Upload Plugin->Upload
在这里插入图片描述
Cento7部署基于Jenkins和Gitlab的持续集成与部署架构_第1张图片
在这里插入图片描述
Cento7部署基于Jenkins和Gitlab的持续集成与部署架构_第2张图片
自此Jenkins部署成功

部署GitLab

安装GitLab

#安装依赖
[root@gitlab ~]# yum install -y curl openssh-server openssh-clients postfix policycoreutils
#下载GitLab的yum源
[root@gitlab ~]# curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
#安装
[root@gitlab ~]# yum install -y gitlab-ce
#配置(时间较长)
[root@gitlab ~]# gitlab-ctl reconfigure

测试验证
访问http://ip,修改密码,通过root/password进行登录,自此GitLab部署完成

部署项目

配置GitLab

创建项目project1
在这里插入图片描述Cento7部署基于Jenkins和Gitlab的持续集成与部署架构_第3张图片
在项目中添加文件和文件夹等内容
Cento7部署基于Jenkins和Gitlab的持续集成与部署架构_第4张图片
Cento7部署基于Jenkins和Gitlab的持续集成与部署架构_第5张图片
配置访问权限
设置settings中的SSH KEY
Cento7部署基于Jenkins和Gitlab的持续集成与部署架构_第6张图片
在这里插入图片描述
把master结点中的公钥拷贝到Key中,公钥结尾处需改为[email protected]
Cento7部署基于Jenkins和Gitlab的持续集成与部署架构_第7张图片
自此GitLab配置完成

配置Jenkins

查看是否存在Publish over SSH和Git插件,若没有需要安装,本机部署时安装的插件有
在这里插入图片描述
配置SSH设置
在这里插入图片描述
Cento7部署基于Jenkins和Gitlab的持续集成与部署架构_第8张图片
可以配置密码,也可以配置bak机器的SSH公钥,Test查看是否成功连接,能成功连接就保存SSH设置
Cento7部署基于Jenkins和Gitlab的持续集成与部署架构_第9张图片
配置连接GitLab的凭证
选择系统凭证中的全局凭证
在这里插入图片描述
添加凭证
在这里插入图片描述
选择SSH,填写Username,在Key中添加本机的私钥,点击ok
Cento7部署基于Jenkins和Gitlab的持续集成与部署架构_第10张图片
创建项目
在这里插入图片描述
Cento7部署基于Jenkins和Gitlab的持续集成与部署架构_第11张图片
进行项目的配置,选择Git源,填写GitLab机器的URL,选择刚配置的GitLab凭证
Cento7部署基于Jenkins和Gitlab的持续集成与部署架构_第12张图片
设置部署机器的信息
Cento7部署基于Jenkins和Gitlab的持续集成与部署架构_第13张图片
配置完成后点击Save进行保存

测试验证

部署测试
在这里插入图片描述
终端输出可看见部署成功
Cento7部署基于Jenkins和Gitlab的持续集成与部署架构_第14张图片
观察部署机器的目标目录中是否产生GitLab项目中已存在的文件和文件夹

[root@bak ~]# ls /tmp/project1/
test  test1  test2.txt  test.sh  test.txt

项目部署成功
持续集成与部署测试
在master中拉取GitLab项目进行开发,开发完成后进行上传

#下载文件
[root@master ~]# git config --global user.name "git"
[root@master ~]# git config --global user.email "[email protected]"
[root@master ~]# git clone [email protected]:root/project1.git
正克隆到 'project1'...
remote: Enumerating objects: 15, done.
remote: Counting objects: 100% (15/15), done.
remote: Compressing objects: 100% (9/9), done.
remote: Total 15 (delta 2), reused 0 (delta 0), pack-reused 0
接收对象中: 100% (15/15), 完成.
处理 delta 中: 100% (2/2), 完成.
[root@master ~]# ls project1/
test  test1  test2.txt  test.sh  test.txt

#模拟开发
[root@master ~]# echo hello > project1/hello.txt
[root@master ~]# ls project1/
hello.txt  test  test1  test2.txt  test.sh  test.txt
[root@master ~]# cat project1/hello.txt 
hello

#上传开发后的项目
#定位到project1目录中
[root@master project1]# git init
重新初始化已存在的 Git 仓库于 /tmp/project1/.git/
[root@master project1]# git remote add origin [email protected]:root/project1.git
fatal: 远程 origin 已经存在。
[root@master project1]# git add .
[root@master project1]# git commit -m "first commit"
[master 58860da] first commit
 1 file changed, 1 insertion(+)
 create mode 100644 hello.txt
[root@master project1]# git push -u origin master
枚举对象: 3, 完成.
对象计数中: 100% (3/3), 完成.
压缩对象中: 100% (2/2), 完成.
写入对象中: 100% (2/2), 251 bytes | 251.00 KiB/s, 完成.
Total 2 (delta 1), reused 0 (delta 0)
To 192.168.29.140:root/project1.git
   7a7a1a4..58860da  master -> master
分支 'master' 设置为跟踪来自 'origin' 的远程分支 'master'

查看GitLab中的项目情况,hello.txt已存在
在这里插入图片描述
执行Jenkins项目查看是否成功以及部署机器中是否出现hello.txt
在这里插入图片描述
Cento7部署基于Jenkins和Gitlab的持续集成与部署架构_第15张图片

[root@bak ~]# ls /tmp/project1/
hello.txt  test  test1  test2.txt  test.sh  test.txt
[root@bak ~]# cat /tmp/project1/hello.txt 
hello

自此基于Jenkins和GitLab的持续集成和部署环境搭建成功

你可能感兴趣的:(运维,持续集成系统,gitlab,linux)