实验环境为局域网内
主机:
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
`出现下面这个狐狸图像表示安装成功
`修改配置文件`
[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`
gitlab启动成功
设置新的管理员密码
3、登录
注意:在 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'] = '2261665821@qq.com' # 邮件账号
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'] = '2261665821@qq.com'
`重置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
5、创建群组
创建一个群组 ,设置为内部群组
6、创建一个账号
设置账户名和邮箱,使用权设置为root,密码需要用户收到邮件后自己设置
7、创建一个新项目
8、配置免密克隆
`生成秘钥`
[root@gitlab ~]# ssh-keygen
`查看秘钥并复制秘钥内容`
[root@gitlab ~]# cat /root/.ssh/id_rsa.pub
验证(克隆过程中不需要输入密码即可)
[root@gitlab ~]# git clone git@192.168.2.50: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启动时卡在启动界面解决方案 把/var/lib/jenkins/hudson.model.UpdateCenter.xml文件里的默认地址改为 http://mirror.xmission.com/jenkins/updates/update-center.json
3、进入jenkins
4、创建用户
这里忘记截图了,从网上找了一张,这一步的截图
进入jenkins
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
7、将私钥上传到jenkins
`查看私钥`
[root@jenkins jenkins]# cat /root/.ssh/id_rsa
8、在jenkins上创建项目
测试构建无问题
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/* root@192.168.2.30:/var/www/html/
`配置免密,使scp的时候免密拷贝`
[root@jenkins ~]# ssh-copy-id 192.168.2.30
#最后运行脚本测试是否能够免密拷贝
测试构建成功
拷贝也成功了
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 进制个数。
构建触发器
11、推送失败解决方案
12、网页测试