😌DevOps(Git+Jenkins)

实验环境为局域网内

主机

主机名/ip

jenkins

192.168.2.40

gitlab

192.168.2.50

Git

一、gitlab部署

可以从清华源下载相应版本

`rpm包下载地址
# https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/	
`我这里选择的是12.0版本的,这是下载地址
#https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-12.0.0-ce.0.el7.x86_64.rpm

1、下载gitlab安装包.rpm

`安装依赖
[root@gitlab ~]# yum install -y curl policycoreutils openssh-server openssh-clients postfix policycoreutils-python
`安装命令   要保证centos主机有网,并且有配置yum源
[root@gitlab ~]# ls /usr/bin/wget || yum -y install wget && wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-12.0.0-ce.0.el7.x86_64.rpm --no-check-certificate

2、安装gitlab

`rpm包安装命令比较简单
[root@gitlab ~]# rpm -ivh gitlab-ce-12.0.0-ce.0.el7.x86_64.rpm
`出现下面这个狐狸图像表示安装成功
image-20220708234033720
`修改配置文件`
[root@gitlab ~]# sed -i "/^external_url/cexternal_url 'http://192.168.1.1'" /etc/gitlab/gitlab.rb
`重置gitlab,过程比较慢`
[root@gitlab gitlab]# gitlab-ctl reconfigure
`重置完之后会默认启动几个服务,这些都是gitlab必须的服务,包里面自带,如果重置没有成功的话,查看一下自己端口有没有被占用,尽量还是在新环境下部署gitlab`
image-20220708234727848

gitlab启动成功

image-20220708234929951

设置新的管理员密码

image-20220708235058678

3、登录

image-20220708235211682
在这里插入图片描述

注意:在 GitLab 中配置的中文并不是全部都是中文,你们可以安装中文插件,我这边使用的是谷歌浏览器转换。

4、配置邮箱报警

[root@gitlab ~]# vim /etc/gitlab/gitlab.rb								# 在第 57 行后添加以下内容
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = 'smtp.qq.com'							# SMTP 服务器
gitlab_rails['smtp_port'] = 465											# SMTP 服务器端口号
gitlab_rails['smtp_user_name'] = '[email protected]'					# 邮件账号
gitlab_rails['smtp_password'] = '保密'				 						# 邮件授权码
gitlab_rails['smtp_authentication'] = 'login'
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab_rails['gitlab_email_from'] = '[email protected]'
`重置gitlab`
[root@gitlab ~]# gitlab-ctl reconfigure

登录控制台发送测试邮件

[root@gitlab ~]# gitlab-rails console
irb(main):001:0> Notify.test_email('接收人的邮箱@qq.com','Test','Hello ZhangYan').deliver_now
image-20220709000417884
image-20220709000430532
image-20220709000606366

5、创建群组

image-20220709000643354

创建一个群组 ,设置为内部群组

image-20220709000915087

6、创建一个账号

image-20220709001030436

设置账户名和邮箱,使用权设置为root,密码需要用户收到邮件后自己设置

image-20220709001135955

点进去设置密码 image-20220709001319596

设置新密码 image-20220709001405473

将两个用户都添加到刚刚创建的test_grup群组中 image-20220709001828092

7、创建一个新项目

创建一个新项目,使用的是刚刚创建的zhangyan用户 image-20220709001944691

需要选择的只有下面这两项 image-20220709002131776

创建成功了之后,创建一个新文件 image-20220709002252134

写上文件名,写一些内容,点击完成 image-20220709002425302

8、配置免密克隆

`生成秘钥`
[root@gitlab ~]# ssh-keygen
`查看秘钥并复制秘钥内容`
[root@gitlab ~]# cat /root/.ssh/id_rsa.pub
image-20220709002953896

验证(克隆过程中不需要输入密码即可)

[root@gitlab ~]# git clone [email protected]:zhangyan/web-zhangyan
[root@gitlab ~]# ls
anaconda-ks.cfg  web-zhangyan
[root@gitlab ~]# 

`如果输入命令显示git命令找不到,直接yum -y install git就可以安装`

9、gitlab部署完成

二、jenkins部署

教程

1、安装JDK

`因为jenkins是需要在java上运行的,所以要安装java
[root@jenkins ~]# ls
anaconda-ks.cfg  jdk-8u171-linux-x64.tar.gz
`解压缩`
[root@jenkins ~]# tar -xf jdk-8u171-linux-x64.tar.gz -C /usr/local/

[root@jenkins ~]# ls /usr/local/
bin  etc  games  include  jdk1.8.0_171  lib  lib64  libexec  sbin  share  src
`编写环境变量`
[root@jenkins ~]# cat /etc/profile.d/java.sh 
JAVA_HOME=/usr/local/jdk1.8.0_171/
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar
export PATH JAVA_HOME CLASSPATH
`生效环境变量`
[root@jenkins ~]# source /etc/profile.d/java.sh 
`查看版本,无问题`
[root@jenkins ~]# java -version
java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)

2、安装jenkins

`我这里下载的jenkins也是从清华源网站下载的`
[root@jenkins ~]# ls /usr/bin/wget || yum -y install wget && wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/jenkins-2.331-1.1.noarch.rpm --no-check-certificate
`安装包下载好了`
[root@jenkins ~]# ls
anaconda-ks.cfg  jdk-8u171-linux-x64.tar.gz  jenkins-2.332.3-1.1.noarch.rpm

`安装依赖`
[root@jenkins ~]# yum install java-1.8.0-openjdk* -y
[root@jenkins ~]# yum -y install jenkins-2.332.3-1.1.noarch.rpm
`安装完成`
`修改配置文件`
[root@Jenkins ~]# sed -i '/^JENKINS_USER/cJENKINS_USER="root"' /etc/sysconfig/jenkins

jenkins启动报错解决方案

jenkins启动时卡在启动界面解决方案 把/var/lib/jenkins/hudson.model.UpdateCenter.xml文件里的默认地址改为 http://mirror.xmission.com/jenkins/updates/update-center.json

3、进入jenkins

image-20220709013520196
image-20220709013649482

4、创建用户

这里忘记截图了,从网上找了一张,这一步的截图

在这里插入图片描述

进入jenkins

image-20220709155000841

5、安装相关插件

Credentials						# 签名证书管理插件
Gitlab							# 安装后从 GitLab 获取代码
Git	和 Git Client               # 用于 Jenkins 在 GitLab 中拉取源码
GitLab Hook						# GitLab 触发 Jenkins 构建项目
Gitlab Authentication			# GitLab 和 Jenkins 认证插件
SSH Plugin						# 进程执行 Shell 脚本
Publish Over SSH				# 用于通过 SSH 部署应用

6、配置jenkins免密拉取gitlab

`生成秘钥`
[root@jenkins jenkins]# ssh-keygen
`查看`
[root@jenkins jenkins]# cat /root/.ssh/id_rsa.pub
image-20220709160429747

7、将私钥上传到jenkins

image-20220709160651547
`查看私钥`
[root@jenkins jenkins]# cat /root/.ssh/id_rsa
image-20220709160912934

8、在jenkins上创建项目

image-20220709161040575
image-20220709161617828
image-20220709161642251

测试构建无问题

image-20220709162101784

9、测试发布到web

**大概意思就是在gitlab上修改内容,通过jenkins重新构建到web的工作目录 **

`安装httpd服务`
[root@jenkins ~]# yum -y install httpd

`写个脚本`
[root@jenkins ~]# cat web.sh 
#!/bin/bash
scp /var/lib/jenkins/workspace/web/* [email protected]:/var/www/html/

`配置免密,使scp的时候免密拷贝`
[root@jenkins ~]# ssh-copy-id 192.168.2.30

#最后运行脚本测试是否能够免密拷贝
image-20220709163405285
image-20220709163509962

测试构建成功

image-20220709163551593

拷贝也成功了

image-20220709163623476

10、配置jenkins自动部署

`安装插件
Gitlab Hook Plugin
Build Authorization Token Root
Build Token Trigger
`配置身份令牌
[root@jenkins ~]# openssl rand -hex 12
44ede7a7f0d497cf6521b2ff
# -hex 输出结果为 16 进制数据,数字 12 是指定生成的随机字符为 12 字节,即 24 个 16 进制个数。

构建触发器

image-20220709163950103
image-20220709164422726
image-20220709164901367
image-20220709171412895

推送测试 image-20220709171438775

image-20220709171451098

11、推送失败解决方案

测试推送失败的话,可以到jenkins端配置下面这些 image-20220709171207801

点进去往下拉找到 Enable authentication for '/project' end-point image-20220709171306036

如果再不行的话 就把匿名用户可读权限勾选上 image-20220709171601152

12、网页测试

现在是这样的网页 image-20220709171851099

我在gitlab上进行修改 image-20220709171924747

这时候jenkins会出现一个正在构建的队列 image-20220709171959604

再次刷新网页 网页已经变化了 image-20220709172031418

这有帮助吗?