阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

搭建Gitlab+Maven+Jenkins持续集成环境

463次阅读
没有评论

共计 5644 个字符,预计需要花费 15 分钟才能阅读完成。

有什么用?

为什么需要持续集成呢?

1. 因为在开发的过程中,用于阶段性地构建出产品。
这样可以更加清楚地 审视产品的不足之处
2. 由于在某些情况下,例如有紧急 bug 的时候,研发的版本更新可能很频繁,
部署持续集成环境,可以 减少每次部署所花费的时间

化整为零:

1. 这套组合可以分成 源码管理 编译构建 远程部署
2. 源码管理 常见的有 gitlabSVN
3. 编译构建 是针对 编译型语言 的。
此处 针对 Java 语言使用 Maven针对 IOS 则是使用其他编译工具。
4.远程部署 由 jenkins 提供。

实验拓扑

主机名 主机地址 角色
node1 192.168.31.201 Gitlab-8.17.3
node2 192.168.31.202 Maven-3.3.9、Jenkins-2.49、Git-2.12.0、JDK1.8
node4 192.168.31.204 tomcat9

安装 Gitlab

Gitlab 的作用:作为 源码管理 的角色。
Gitlab 实际上是整合了 nginx、git 等多种软件提供了一个可视化的界面。
包含 git 命令的基本功能,但相比于 git 命令更加简单易用。

1. 信任 GitLab 的 GPG 公钥:
[root@bc ~]# curl https://packages.gitlab.com/gpg.key 2> /dev/null | sudo apt-key add - &>/dev/null
2. 配置一个清华大学的 yum 源
[root@bc ~]# vim /etc/yum.repos.d/gitlab-ce.repo
  [gitlab-ce]
  name=gitlab-ce
  baseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7
  repo_gpgcheck=0
  gpgcheck=0
  enabled=1
  gpgkey=https://packages.gitlab.com/gpg.key

不得不说,清华大学的源速度很快,感觉节约了好多生命。

3. 安装 gitlab 和必要的依赖
[root@bc ~]# yum makecache
[root@bc ~]# yum install gitlab-ce
[root@bc ~]# yum install curl policycoreutils openssh-server openssh-clients
[root@bc ~]# systemctl enable sshd
[root@bc ~]# systemctl start sshd
[root@bc ~]# yum install postfix
[root@bc ~]# systemctl enable postfix
[root@bc ~]# systemctl start postfix
4. 初始化 gitlab
[root@bc ~]# gitlab-ctl reconfigure
5. 找到应该访问的地址
[root@bc .ssh]# vim /etc/gitlab/gitlab.rb
  external_url 'http://node1.bc.com'

注意:
如果直接访问 192.168.31.201,只能访问到一个空的 nginx 访问页面。
所以,最好能够使用 域名解析 来访问本地的 gitlab 网站。

或者修改 host 文件:
C:\Windows\System32\drivers\etc\hosts
  192.168.31.201 node1 node1.bc.com bc.com
正常访问页面:

使用域名访问
错误访问的页面:

直接访问 ip 地址会这样!

安装 maven

Maven 的作用:Maven 负责 java 语言的 编译和打包
换个角度来说,Maven 相当于 Java 中的 make 命令。
同类型的工具有 Ant,但是 Ant 不提供解决依赖关系的功能

官方地址:
http://maven.apache.org/
1. 获取安装包:还是清华的镜像。
[root@node2 ~]# wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
2. 解压 tar 包
[root@node2 ~]# tar apache-maven-3.3.9-bin.tar.gz -C /bin/apache-maven-3.3.9/ 
[root@node2 ~]# ln -sv /bin/apache-maven-3.3.9/ /bin/maven
3. 定义变量,输出执行路径
[root@node2 ~]# vim /etc/profile.d/maven.sh
  export M2_HOME=/bin/maven
  export MAVEN_HOME=/bin/maven
  PATH=$M2_HOME/bin:$PATH
[root@node2 ~]# source /etc/profile.d/maven.sh
4. 测试能否正常运行
[root@node2 ~]# mvn -v
  Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00)
  Maven home: /bin/maven
  Java version: 1.8.0_111, vendor: Oracle Corporation
  Java home: /usr/java/jdk1.8.0_111/jre
  Default locale: en_US, platform encoding: UTF-8
  OS name: "linux", version: "3.10.0-229.el7.x86_64", arch: "amd64", family: "unix"

安装 jenkins

JENKINS 的功能:
1. 通过 git 命令从 Gitlab 中拉取源码
2. 让 maven 进行编译并打包
3. 把打好的包发送到目标主机
4. 执行部署脚本。

1. 获取安装包
# 安装方式有多种,包括 rpm、war 包启动、dockerfile。此处为 war 包。[root@node2 ~]# wget http://mirrors.jenkins.io/war/latest/jenkins.war
2. 启动方式
# 方法 1:直接使用 jvm 启动
[root@node2 ~]# java -jar jenkins.war

#方法 2:把 war 包放置到 tomcat 的应用目录并启动,让其自动解压
[root@node2 ~]# cp jenkins.war /usr/local/tomcat/webapps/
[root@node2 ~]# startup.sh

如果下载 lts 版提示找不到 cloudbees-folder,下载 weekly 版的
stackOverFlow 说初始化 jenkins 的时候提示找不到 cloudbees-folder 是 bug

编译安装新版的 git

提示:Maven、Git、JDK 都是安装到 jenkins 服务器
在往后的设置中,需要在 jenkins 中指定他们的路径。

1. 获取源码包
[root@node2 ~]# wget https://www.kernel.org/pub/software/scm/git/git-2.12.0.tar.gz
` 注意:为了能让 jenkins 能正常从 gitlab 中拉取源码,需要编译 1.9 以上的版本。`
2.git 构建时,需要的环境
[root@node2 ~]# yum groupinstall "Development Tool"
[root@node2 ~]# yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker openssh-clients
` 除了正常的编译环境之外,编译 git 的时候还要额外安装各种 devel 包。否则会构建失败。`
3. 编译并安装,同时输出执行路径到环境变量中:
[root@node2 ~]# make prefix=/usr/local/git all 
[root@node2 ~]# make prefix=/usr/local/git install 
[root@node2 ~]# echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/bashrc
[root@node2 ~]# source /etc/bashrc
4. 验证能否正常运行:
[root@node2 ~]# git --version

五、在 jenkins 上完成配置

1. 指定 Maven、Git、JDK 的安装路径

整合工具

指定 JDK 和 Git 路径

指定 Maven 路径
2. 为 Jenkins 安装配件:

jenkins- 安装插件

需要安装的插件:

Gitlab Plugin
#安装之后才可以在系统配置中指定 gitlab 的 IP 地址
Git Plugin 
Git Client Plugin 
#用于 jenkins 在 gitlab 中拉取源码
Publish Over SSH 
#用于通过 ssh 部署应用
Maven Integration plugin
#用于新建 maven 项目

注意 : 安装了插件之后,在全局配置才能详细配置。

3. 为刚才安装的插件,配置选项(留意图片下的注释)

Jenkins 全局设定

配置 Gitlab 的地址,红字表示需要 Gitlab 的账号密码,但是这个可以在新建项目的时候指定。

Publish_over_SSH 插件,可以使用 Path to key 指定 jenkins 主机的私钥路径,也可以如上。
注意:部署应用的主机需要 jenkins 主机的公钥,可以 ssh-copy-id 命令复制过去。

配置部署应用的主机的 IP 地址

在 jenkins 上新建项目

注意:安装了 Maven Integration plugin 才可以创建 maven 项目

刚才红字提示 Gitlab 的账号密码在这里可以配置

这一步很重要!!!
它包括了两个步骤:
1. 发送编译好的 war 包到目标主机,此处为 tomcat。
2. 在发送 war 包之后,执行自己写的脚本,部署新的应用到服务器上。

上传代码到 gitlab

1. 配置主机 SSH_KEY 公钥到 gitlab 上

用于无密码直接把代码 git push 到 gitlab 上
2. 初始化本地 git 目录、并添加远程仓库
[root@node2 javaCode]# git init
[root@node2 javaCode]# git remote add origin git@bc.com:root/HelloWorld-public.git
3. 上传代码
[root@node2 javaCode]# git add .
[root@node2 javaCode]# git commit -m "2nd Commit"
[root@node2 javaCode]# git push origin master
4. 本地的目录结构
# 注意 pom.xml 文件要放在根目录下,maven 编译的时候会自动读取。[root@node2 javaCode]# tree 
.
├── pom.xml
└── src
    ├── Greeter.java
    └── HelloWorld.java

构建项目

进入新建的项目中
注意事项:

1. 进入之前创建的项目中,点 立即构建 可以通过 maven 进行编译。
2. 编译结束后在 工作区 中,可以找到 编译好的 jar 包
3. 左下角形如 #8 的链接是构建过程中的输出,可以协助排错。

查看输出的最后:
SSH: Disconnecting configuration [tomcat] ...
ERROR: Exception when publishing, exception message [Exec timed out or was interrupted after 120,002 ms]
Build step 'Send files or execute commands over SSH' changed build result to UNSTABLE
Finished: UNSTABLE

结合图例并查看输出,可以知道:1. 黄色为编译成功。2. 部署脚本出了点意外,所以是黄色不稳定。

构建成功,部署成功之后,图例是蓝色的。
云朵是用来统计构建成功和构建失败的比例。
 

更多 GitLab 相关教程见以下内容

Ubuntu 14.04 下安装 GitLab 指南  http://www.linuxidc.com/Linux/2015-12/126876.htm

如何在 Ubuntu Server 14.04 下安装 Gitlab 中文版  http://www.linuxidc.com/Linux/2015-12/126875.htm

CentOS 源码安装 GitLab 汉化版  http://www.linuxidc.com/Linux/2015-10/124648.htm

在 Ubuntu 12.04 上安装 GitLab http://www.linuxidc.com/Linux/2012-12/75249.htm

GitLab 5.3 升级注意事项 http://www.linuxidc.com/Linux/2013-06/86473.htm

CentOS 7 安装部署 GitLab 服务器  http://www.linuxidc.com/Linux/2017-06/144990.htm

在 RHEL6/CentOS6/ScientificLinux6 上安装 GitLab 6.0.2 http://www.linuxidc.com/Linux/2014-03/97831.htm

CentOS 6.5 安装 GitLab 教程及相关问题解决 http://www.linuxidc.com/Linux/2014-05/101526.htm

升级 GitLab 到 8.2.0  http://www.linuxidc.com/Linux/2015-12/126220.htm

GitLab 的详细介绍:请点这里
GitLab 的下载地址:请点这里 

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-10/147593.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计5644字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7984964
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

  开源 MoneyPrinterTurbo 利用 AI 大模型,一键生成高清短视频! 在短视频内容...
每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年 0.99 刀,拿下你的第一个顶级域名,详细注册使用 前言 作为长期折腾云服务、域名建站的老玩家,星哥一直...
终于收到了以女儿为原型打印的3D玩偶了

终于收到了以女儿为原型打印的3D玩偶了

终于收到了以女儿为原型打印的 3D 玩偶了 前些日子参加某网站活动,获得一次实物 3D 打印的机会,于是从众多...
免费无广告!这款跨平台AI RSS阅读器,拯救你的信息焦虑

免费无广告!这款跨平台AI RSS阅读器,拯救你的信息焦虑

  免费无广告!这款跨平台 AI RSS 阅读器,拯救你的信息焦虑 在算法推荐主导信息流的时代,我们...
4盘位、4K输出、J3455、遥控,NAS硬件入门性价比之王

4盘位、4K输出、J3455、遥控,NAS硬件入门性价比之王

  4 盘位、4K 输出、J3455、遥控,NAS 硬件入门性价比之王 开篇 在 NAS 市场中,威...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛 NAS 硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话? 前言 在选择 NAS 用预...
每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年 0.99 刀,拿下你的第一个顶级域名,详细注册使用 前言 作为长期折腾云服务、域名建站的老玩家,星哥一直...
每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站 - 手机博物馆 -CHAZ 3D Experience 一句话介绍:一个用 3D 方式重温...
让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级 大家好,我是星哥,之前写了一篇文章 自己手撸一...
手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板 前言 大家好,我是星哥。星哥发现很多新手刚接触服务器时,都会被“选购...