gitlab+jenkins持续集成CICD服务部署详细篇

gitlab安装

GitLab简介
GitLab 是一个用于仓库管理系统的开源项目。使用Git作为代码管理工具,并在此基础上搭建起来的web服务。可通过Web界面进行访问公开的或者私人项目。它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。团队成员可以利用内置的简单聊天程序(Wal1)进行交流。它还提供一个代码片段收集功能可以轻松实现代码复用。常用的网站:
官网:GitLab最新版下载安装_GitLab中文免费版-极狐GitLab中文官方网站
国内镜像:https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/安装环境:
1、Centos 6或者7
2、2G内存(实验)生产(至少4G)
3、 安装包:gitlab-ce-10.2.2-ce 
4 、禁用防火墙,关闭selinuxgitlab+jenkins持续集成CICD服务部署详细篇_第1张图片

1. 安装和配置必须的依赖项

在 CentOS 7上,下面的命令也会在系统防火墙中打开 HTTP、HTTPS 和 SSH 访问。这是一个可选步骤,如果您打算仅从本地网络访问极狐GitLab,则可以跳过它。

sudo yum install -y curl policycoreutils-python openssh-server perl
#上面这个是最重要的
sudo systemctl enable sshd
sudo systemctl start sshd
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo systemctl reload firewalld

2.(可选)下一步,安装 Postfix 以发送电子邮件通知。如果您想使用其他解决方案发送电子邮件,请跳过此步骤并在安装极狐GitLab 后配置外部 SMTP 服务器。

sudo yum install postfix
sudo systemctl enable postfix
sudo systemctl start postfix

在安装 Postfix 的过程中可能会出现一个配置界面,在该界面中选择“Internet Site”并按下回车。把“mail name”设置为您服务器的外部 DNS 域名并按下回车。如果还有其它配置界面出现,继续按下回车以接受默认配置。

3. 下载/安装极狐GitLab

配置极狐GitLab 软件源镜像。

curl -fsSL https://packages.gitlab.cn/repository/raw/scripts/setup.sh | /bin/bash

4.接下来,安装极狐GitLab。确保您已正确设置您的 DNS,并更改 https://gitlab.example.com 为您要访问极狐GitLab 实例的 URL。安装包将在该 URL 上自动配置和启动极狐GitLab。

对于 https 站点,极狐GitLab 将使用 Let's Encrypt 自动请求 SSL 证书,这需要有效的主机名和入站 HTTP 访问。您也可以使用自己的证书或仅使用 http://(不带s)。

如果您想为初始管理员用户(root)指定自定义密码,请查看文档。如果未指定密码,将自动生成随机密码。

执行如下命令开始安装:

sudo EXTERNAL_URL="https://gitlab.example.com" yum install -y gitlab-jh
#可要可不要,我在安装的时候没输出

根据上面操作完后,检查一下依赖包得安装是否成功

rpm -qa|egrep "policycoreutils-python|openssh-server|curl"

 然后在修改一下它得配置文件,这里可以更改一下地址www.wjk.com,我这里使用的是域名,也可以使用IP地址看个人喜欢,但是后面需要去hosts解析一下

vim /etc/gitlab/gitlab.rb

gitlab+jenkins持续集成CICD服务部署详细篇_第2张图片

进入到自己电脑里面的hostsgitlab+jenkins持续集成CICD服务部署详细篇_第3张图片

完成之后我们现在再来安装gitlab-ce,官网gitlab/gitlab-ce - Packages · packages.gitlab.com

点击你要选择得版本,我这里选择的是14.10.5,成功后会得到一个狐狸头这样的

wget --content-disposition https://packages.gitlab.com/gitlab/gitlab-ce/packages/el/7/gitlab-ce-14.10.5-ce.0.el7.x86_64.rpm/download.rpm

在解压

rpm -i gitlab-ce-14.10.5-ce.0.el7.x86_64.rpm

gitlab+jenkins持续集成CICD服务部署详细篇_第4张图片

紧接着在敲,这个就是重新配置的结果图

gitlab-ctl reconfigure ---重新配置得

gitlab-ctl status ---先查看状态

gitlab+jenkins持续集成CICD服务部署详细篇_第5张图片

 然后点开我们刚刚配置的域名:我配置的是www.wjk.com

gitlab+jenkins持续集成CICD服务部署详细篇_第6张图片

 这里账号我是默认root密码可以去cd /etc/gitlab查看文件是init开头的里面会有一个随机密码,不过只会保留24小时我这里已经过期了所以没有显示

 知识点:

下载好的gitlab都放在/opt/gitlab

这里是各个存放数据得点gitlab+jenkins持续集成CICD服务部署详细篇_第7张图片

gitlab+jenkins持续集成CICD服务部署详细篇_第8张图片 

输入刚刚修改得gitlab配置文件得地址www.wjk.com打开后输入一个账号密码

也可以进行汉化gitlab+jenkins持续集成CICD服务部署详细篇_第9张图片

 gitlab使用

进入以后点击这个Admin 

gitlab+jenkins持续集成CICD服务部署详细篇_第10张图片

进去公司如果没有gitlab就要先创建组,组里面有人员,再把项目添加到组里面,那这个组里面的所有人就可以访问这个项目了gitlab+jenkins持续集成CICD服务部署详细篇_第11张图片

gitlab+jenkins持续集成CICD服务部署详细篇_第12张图片 按照要求输入名称和描述,再点击保存即可gitlab+jenkins持续集成CICD服务部署详细篇_第13张图片

 这个时候在点击我们的项目,这里面可以把我们创建的组添加到项目里面,就相当于你在公司要组建一个项目肯定需要小组,组员等,这里我们就直接部署与jenkins的小项目gitlab+jenkins持续集成CICD服务部署详细篇_第14张图片

 点击这里导入

 gitlab+jenkins持续集成CICD服务部署详细篇_第15张图片

 这里我们按照步骤进行项目导入

https://gitee.com/skips/game.git

gitlab+jenkins持续集成CICD服务部署详细篇_第16张图片

然后就开始加载了 

gitlab+jenkins持续集成CICD服务部署详细篇_第17张图片

 如果你放的是test的组那这里就是testgitlab+jenkins持续集成CICD服务部署详细篇_第18张图片

配置jenkins的公钥,进入账号根下gitlab+jenkins持续集成CICD服务部署详细篇_第19张图片

gitlab+jenkins持续集成CICD服务部署详细篇_第20张图片 

在这输入jenkins这台服务器上的公钥,可以先进入cd .ssh然后使用cat id_dsa.pub进行查看

gitlab+jenkins持续集成CICD服务部署详细篇_第21张图片

gitlab+jenkins持续集成CICD服务部署详细篇_第22张图片

 上面在gitlab的部署就已经完成了,下面的是补充一下gitlab的一些知识点

1.秘钥远程登录服务器实现免密登录实战

想要打通的过去的这台主机:

1)dsa建立私钥和公钥(一直回车)

ssh-keygen -t

2)创建ssh目录:

mkdir /ssh 
#在
cd .ssh

3)

ssh-copy-id -i /root/.ssh/id_dsa.pub [email protected]

4)检查一下是否打通ssh 192.168.174.138gitlab+jenkins持续集成CICD服务部署详细篇_第23张图片

需要被打通的主机:

1)需要在第3把打通过去之前新建文件:

mkdir .ssh

2)新建文件:

touch authorized_keys

3)附加权限:

chmod 600 authorized_keys

4)建立私钥公钥:

ssh-keygen -t dsa

 2.然后我们还可以在gitlab里面改一下密码,防止那个系统密码过了24小时就自动消失gitlab+jenkins持续集成CICD服务部署详细篇_第24张图片

 这里输入你的账号密码即可gitlab+jenkins持续集成CICD服务部署详细篇_第25张图片

3.假如你们开发或者其他人想加入到你这个项目里面来,你要怎么给他附赠权限呢gitlab+jenkins持续集成CICD服务部署详细篇_第26张图片

 这里输入三段,创建完成后在进入到组里面给他权限gitlab+jenkins持续集成CICD服务部署详细篇_第27张图片

 gitlab+jenkins持续集成CICD服务部署详细篇_第28张图片

在这里选择权限添加即可gitlab+jenkins持续集成CICD服务部署详细篇_第29张图片 上面就是gitlab的全部内容了,总结一下:

首先在我们本地服务器上搭建gitlab,这个gitlab服务器要想使用,必须要把自己的这台服务器上的管理员root的公钥放在SSH key里面它就可以下载了,如果开发想使用,就单独开用户,比如dev用户,这个属于gitlab的普通用户,当我们写好新的功能,或者代码就要网gitlab上进行推送,那gitlab有两个分支,一个是master一个是dev分支,我们的开发一般都把功能上传到专门的dev分支上,master都是上传我们最新版本的,类环境的,dev自己把有权限的代码拽到本地,再用checkout -b在分支上创建一个新的分支,再到分支上写入新的功能,在提交,在申请一个和并请求,申请到master。

jenkins安装

 

官网Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。

1.安装准备

装备两台服务器 关闭selinux和防火墙内存2G 50G+硬盘,这里面jenkins和gitlab不要放在同一台服务器上,同时它的内存是2G以上哈

jenkins 10.0.0.201

nexus 10.0.0.202

开始安装

1.安装 epel-release

 yum  -y install epel-release

2.安装 daemonize

yum -y install daemonize

3.清华源直接下载rpm包安装即可,下载地址如下:

https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/

这里是链接:https://pan.baidu.com/s/1E1cY3Ptkl-4IB5m3d3DJBA 
提取码:fs7m 
然后安装好以后拖进来可以在root下,如果脱不进来可以使用安装lrzsz

yum install -y lrzsz

然后在解压

rpm -ivh jenkins-2.315-1.1.noarch.rpm

安装jdk

yum install java-11-openjdk

配置使用root账号运行

vim /etc/sysconfig/jenkins
JENKINS_USER="root"

启动:

systemctl start jenkins

这个文件是jenkins的war包所以以后升级直接把文件丢在这里就好了

[root@138 ~]# ll /usr/lib/jenkins/
total 70460
-rw-r--r--. 1 root root 72148539 Oct  7  2021 jenkins.war

2.jenkins主要的目录

/usr/lib/jenkins/:jenkins安装目录,WAR包会放在这里

/etc/sysconfig/ienkins:jenkins配置文件“端口”“JENKINS HOME”等都可以在这里配置

/var/lib/jerkins/:默认的JENKINS HOME

/var/log/jenkins/jenkins.log:Jenkins日志文件

jenkins使用

第1章 解锁Jenkins

gitlab+jenkins持续集成CICD服务部署详细篇_第30张图片

把上面那段代码复制下来 

修改admin密码gitlab+jenkins持续集成CICD服务部署详细篇_第31张图片

使用清华源作为插件地址

清华源地址:

https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

 配置步骤:gitlab+jenkins持续集成CICD服务部署详细篇_第32张图片

gitlab+jenkins持续集成CICD服务部署详细篇_第33张图片 

使用离线安装插件

我们可以将插件提前下好,然后只需要解压到jenkins对应的目录即可

链接:https://pan.baidu.com/s/1ELWPbZleTTSmQRlR3u4e6A 
提取码:nila 

tar zxf jenkins_plugins.tar.gz -C /var/lib/jenkins/
ll /var/lib/jenkins/plugins/

重启jenkins:

systemctl restart jenkins

第2章 在jenkins中关联gitlab的h5game项目

 创建新项目gitlab+jenkins持续集成CICD服务部署详细篇_第34张图片

 gitlab+jenkins持续集成CICD服务部署详细篇_第35张图片

 

填写仓库地址

选择源码管理,然后填写gitlab仓库信息gitlab+jenkins持续集成CICD服务部署详细篇_第36张图片

 但是如果我们发现报错了,因为jenkins没有拉取gitlab项目的权限。如果没有就不用管直接创建就好gitlab+jenkins持续集成CICD服务部署详细篇_第37张图片

3.配置jenkins访问gitlab的权限

1 部署公钥解释和步骤

 解释

1.如果我们想让jenkins从gitlab上拉取代码,那么需要将jenkins的公钥信息放在gitlab上。
2.gitlab针对这种情况有一个专门的功能,叫做部署部署公钥。
3.部署公钥的作用是不需要创建虚拟用户和组,直接在需要拉取的项目里关联部署公钥即可。

步骤

1.获取jenkins公钥信息
2.将jenkins公钥信息填写到gitlab的部署公钥里
3.由项目管理员操作,在需要jenkins拉取的项目里关联部署公钥
4.jenkins配置私钥凭证,部署项目时关联凭证

获取jenkins服务器的SSH公钥信息

[root@jenkins-201 ~]# cat .ssh/id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCg8+DQFOjR+gl1Xw83CIyGJ50vI4DBeTaMRFdu5+5pT/IMnYq1iS7/lRS6JxXLYvVeNMDUfDxA1sOL70okyA3npjASXgJPGE1FsbpqzWjsN0TAGoZkR1VWuP9Yn0CrH7dA4lhZQfUUVjvqzFBZK8N9iZMzIu6KOiSY/aD4Ol59vbDS4kO0rTG1DYQNnjZzMPNlIiJ+0EVkfuYRwABRFA8fmL+6btqZqhjGY29EHuIfzIMTDTysrtCTGxQn2ql1zwjReGiNXzmFncwvyy92DAuMbnOQiE1YNn72wThy2oWSHsCwKdIvcNHqY2xBvFnkZ9Ltga7PgR33kbJ7Gl8tjiZF root@jenkins-201

gitlab添加部署公钥(前面做了这里可以不要)gitlab+jenkins持续集成CICD服务部署详细篇_第38张图片

gitlab+jenkins持续集成CICD服务部署详细篇_第39张图片 

gitlab+jenkins持续集成CICD服务部署详细篇_第40张图片 

gitlab项目关联部署公钥 

gitlab+jenkins持续集成CICD服务部署详细篇_第41张图片

 

gitlab+jenkins持续集成CICD服务部署详细篇_第42张图片

 gitlab+jenkins持续集成CICD服务部署详细篇_第43张图片

jenkins配置私钥凭证

gitlab+jenkins持续集成CICD服务部署详细篇_第44张图片

通过cat id_rsa查看私钥

 gitlab+jenkins持续集成CICD服务部署详细篇_第45张图片

gitlab+jenkins持续集成CICD服务部署详细篇_第46张图片

gitlab+jenkins持续集成CICD服务部署详细篇_第47张图片

测试获取代码

gitlab+jenkins持续集成CICD服务部署详细篇_第48张图片

gitlab+jenkins持续集成CICD服务部署详细篇_第49张图片 

gitlab+jenkins持续集成CICD服务部署详细篇_第50张图片 

查看拉取的代码:

[root@jenkins-201 ~]# ll /var/lib/jenkins/workspace/h5game
总用量 16
drwxr-xr-x 4 jenkins jenkins   47 8月   6 09:37 game
-rw-r--r-- 1 jenkins jenkins 9349 8月   6 09:37 LICENSE
-rw-r--r-- 1 jenkins jenkins  937 8月   6 09:37 README.md

编写部署脚本

其中这里面的IP地址是你要拉取的目标

#创建目录
mkdir -p /scripts/jenkins/

#编写脚本
cat > /scripts/jenkins/deploy.sh << 'EOF'
#!/bin/bash

PATH_CODE=/var/lib/jenkins/workspace/h5game/
PATH_WEB=/usr/share/nginx
TIME=$(date +%Y%m%d-%H%M)
IP=10.0.0.7

#打包代码
cd ${PATH_CODE} 
tar zcf /opt/${TIME}-web.tar.gz ./*

#拷贝打包好的代码发送到web服务器代码目录
ssh ${IP} "mkdir ${PATH_WEB}/${TIME}-web -p"
scp /opt/${TIME}-web.tar.gz ${IP}:${PATH_WEB}/${TIME}-web

#web服务器解压代码
ssh ${IP} "cd ${PATH_WEB}/${TIME}-web && tar xf ${TIME}-web.tar.gz && rm -rf ${TIME}-web.tar.gz"
ssh ${IP} "cd ${PATH_WEB} && rm -rf html && ln -s ${TIME}-web html"
EOF

#添加可执行权限
chmod +x /scripts/jenkins/deploy.sh

jenkins调用构建脚本

在构建的位置填写执行shell脚本的命令gitlab+jenkins持续集成CICD服务部署详细篇_第51张图片

然后立即构建,发现报错了,提示权限不足:gitlab+jenkins持续集成CICD服务部署详细篇_第52张图片 报错原因是因为jenkins是以jenkins用户运行的,所以提示权限不足,我们可以修改jenkins为root用户运行。

[root@jenkins-201 ~]# vim /etc/sysconfig/jenkins 
[root@jenkins-201 ~]# grep "USER" /etc/sysconfig/jenkins 
JENKINS_USER="root"
[root@jenkins-201 ~]# systemctl restart jenkins

 重启好之后我们重新构建一下:gitlab+jenkins持续集成CICD服务部署详细篇_第53张图片

查看一下web服务器的代码目录 

[root@web-7 ~]# ll /usr/share/nginx/
总用量 0
drwxr-xr-x 3 root root 50 8月   6 10:13 20200806-1013-web
lrwxrwxrwx 1 root root 17 8月   6 10:13 html -> 20200806-1013-web

你可能感兴趣的:(jenkins,ci,运维)