为什么需要持续集成呢?
1.因为在开发的过程中,用于阶段性地构建出产品。
这样可以更加清楚地审视产品的不足之处。
2.由于在某些情况下,例如有紧急bug的时候,研发的版本更新可能很频繁,
部署持续集成环境,可以减少每次部署所花费的时间。
化整为零:
1.这套组合可以分成源码管理、编译构建、远程部署
2.源码管理常见的有gitlab、SVN
3.编译构建是针对编译型语言的。
此处针对Java语言使用Maven、针对IOS则是使用其他编译工具。
4.远程部署由jenkins提供。
基础环境
192.168.254.134 Maven-3.5.4、Jenkins-2.133、Git-2.12.0、JDK1.8
192.168.254.135 Gitlab-11.0.4
192.168.254.131 tomcat9.0.10
安装Gitlab
Gitlab的作用:作为源码管理的角色。
Gitlab实际上是整合了nginx、git等多种软件提供了一个可视化的界面。
包含git命令的基本功能,但相比于git命令更加简单易用。
GitLab的安装及使用教程
https://www.cnblogs.com/weifeng1463/p/7714492.html
信任 GitLab 的 GPG 公钥:
curl https://packages.gitlab.com/gpg.key 2> /dev/null | sudo apt-key add - &>/dev/null
配置yum源
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
安装gitlab和必要的依赖
yum makecache
yum install gitlab-ce
yum install curl policycoreutils openssh-server openssh-clients
systemctl enable sshd
systemctl start sshd
yum install postfix
systemctl enable postfix
systemctl start postfix
初始化gitlab
gitlab-ctl reconfigure
有时候,像上面步骤修改了GitLab的ip地址一样,临时修改了GitLab的配置之后,得执行如下的命令,应用重新配好的配置并重启GitLab,然后查看GitLab的状态
gitlab-ctl reconfigure
gitlab-ctl retart
gitlab-ctl status
gitlab-ctl tail
找到应该访问的地址
vim /etc/gitlab/gitlab.rb
external_url ‘http://node.abc.com‘
注意:需要解析域名
正常访问页面:
安装maven
Maven的作用:Maven负责java语言的编译和打包。
换个角度来说,Maven相当于Java中的make命令。
同类型的工具有Ant,但是Ant不提供解决依赖关系的功能
获取安装包:镜像。
https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz
解压tar包
tar -zxf apache-maven-3.5.4-bin.tar.gz -C /usr/local/
cd /usr/local/
mv apache-maven-3.5.4 maven
定义变量,输出执行路径
vim /etc/profile 在最后面添加
export M2_HOME=/usr/local/maven
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$M2_HOME/bin:$PATH
source /etc/profile
测试能否正常运行
mvn -v
Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-18T02:33:14+08:00)
Maven home: /usr/local/maven
Java version: 1.8.0_171, vendor: Oracle Corporation, runtime: /usr/local/jdk1.8/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-862.3.3.el7.x86_64", arch: "amd64", family: "unix"
安装jenkins
Jenkins的功能:
1.通过git命令从Gitlab中拉取源码
2.让maven进行编译并打包
3.把打好的包发送到目标主机
4.执行部署脚本。
之前有安装过 http://blog.51cto.com/10158955/2146748
#安装方式有多种,包括rpm、war包启动、dockerfile。
编译安装新版的git
注意:Maven、Git、JDK都是安装到jenkins服务器。
在往后的设置中,需要在jenkins中指定他们的路径。
获取源码包
wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.18.0.tar.gz
注意:为了能让jenkins能正常从gitlab中拉取源码,需要编译1.9以上的版本。
git构建时,需要的环境
yum groupinstall "Development Tools"
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker openssh-clients
除了正常的编译环境之外,编译git的时候还要额外安装各种devel包。否则会构建失败。
编译并安装,同时输出执行路径到环境变量中:
make prefix=/usr/local/git all
make prefix=/usr/local/git install
echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/bashrc
source /etc/bashrc
验证能否正常运行:
git --version
git version 2.18.0
在jenkins上完成配置
指定Maven、Git、JDK的安装路径
为Jenkins安装配件:
需要安装的插件:
Gitlab Plugin
#安装之后才可以在系统配置中指定gitlab的IP地址
Git Plugin
Git Client Plugin
#用于jenkins在gitlab中拉取源码
Publish Over SSH
#用于通过ssh部署应用
Maven Integration plugin
#用于新建maven项目
注意 : 安装了插件之后,在全局配置才能详细配置。
配置相关选项
配置Gitlab的地址,红字表示需要Gitlab的账号密码,但是这个可以在新建项目的时候指定。
Publish_over_SSH插件,可以使用Path to key指定jenkins主机的私钥路径,也可以如上。 注意:部署应用的主机需要jenkins主机的公钥,可以ssh-copy-id命令复制过去。
配置需要部署应用的主机的IP地址及相关信息测试是否可以连接
在jenkins上新建项目
注意:安装了Maven Integration plugin才可以创建maven项目
之后到里面配置
原文地址:http://blog.51cto.com/10158955/2147872