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

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

156次阅读
没有评论

共计 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、短信等云产品特惠热卖中