gitlab+jenkins自动化部署

基于gitlab和jenkins的自动化部署html

 

Gitlab基于Jenkins自动化部署教程:java

http://www.javashuo.com/article/p-zypbbqcq-dq.htmlpython

http://www.javashuo.com/article/p-oygjlpth-kv.htmllinux

 

GitLab是一个代码仓库,用来管理代码。git

Jenkins是一个自动化服务器,能够运行各类自动化构建、测试或部署任务。因此这二者结合起来,就能够实现开发者提交代码到GitLab,Jenkins以必定频率自动运行测试、构建和部署的任务,帮助开发团队更高效的集成和发布代码。web

1、GitLab介绍

GitLab:是一个基于Git实现的在线代码仓库托管软件,你能够用gitlab本身搭建一个相似于Github同样的系统,通常用于在企业、学校等内部网络搭建git私服。
功能:Gitlab 是一个提供代码托管、提交审核和问题跟踪的代码管理平台。对于软件工程质量管理很是重要。
版本:GitLab 分为社区版(CE) 和企业版(EE)。
配置:建议CPU2核,内存2G以上。正则表达式

2、Gitlab的服务构成:

Nginx:静态web服务器。
gitlab-shell:用于处理Git命令和修改authorized keys列表。(Ruby)
gitlab-workhorse: 轻量级的反向代理服务器。(go)redis

GitLab Workhorse是一个敏捷的反向代理。它会处理一些大的HTTP请求,好比文件上传、文件下载、Git push/pull和Git包下载。其它请求会反向代理到GitLab Rails应用,即反向代理给后端的unicorn。算法

logrotate:日志文件管理工具。
postgresql:数据库。
redis:缓存数据库。
sidekiq:用于在后台执行队列任务(异步执行)。(Ruby)
unicorn:An HTTP server for Rack applications,GitLab Rails应用是托管在这个服务器上面的。(Ruby Web Server,主要使用Ruby编写)sql

3、gitlab的安装配置

一、安装依赖性:

yum install curl policycoreutils openssh-server openssh-clients postfix

 

二、查看服务状态确保开启:

systemctl status postfix.service

 

三、安装工具包:

yum install -y net-tools

 

四、下载安装gitlab:

gitlab开源软件镜像站:

https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/

 

wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-12.5.3-ce.0.el7.x86_64.rpm

 

 

rpm -ivh gitlab-ce-12.5.3-ce.0.el7.x86_64.rpm

 

yum install policycoreutils-python

 

再次进行安装:rpm -ivh gitlab-ce-12.5.3-ce.0.el7.x86_64.rpm

 

五、编辑配置文件写入当前主机IP(注:下面第8部能够一块儿编辑):

vim /etc/gitlab/gitlab.rb

 

六、初始化gitlab:gitlab-ctl reconfigure

 

七、重载服务:gitlab-ctl restart

 

八、修改gitlab仓库路径:

建立/data/gitlab目录

mkdir -p /data/gitlab

修改gitlab配置文件

vim /etc/gitlab/gitlab.rb

git_data_dir的path里面添加 "/data/gitlab"(注:这里去掉前面的#符号)

 

中止当前gitlab,从新加载配置

gitlab-ctl stop

 

gitlab-ctl reconfigure

 

从新加载后,会发如今/data/gitlab目录下多出一个repositories目录

 

最后启动gitlab便可

gitlab-ctl start

九、在浏览器输入IP地址进行验证,是否安装成功,另外输入8位密码:

(我这里是admin123456

 

十、设置用户密码:root,admin123456

 

登录成功:

 

十一、建立一个新工程:

 

 

十二、配置gitlab免密链接:

1)前提:得有一个代码仓库,而后在仓库建立分支并建立文件,这里已存在

2)其次,得配置一个ssh公钥到gitlab上,这样才能模拟开发上传代码到gitlab

使用ssh-keygen生成私钥和公钥:(rsa加密算法生成)

ssh-keygen -t rsa -C 1483415221@qq.com

这里须要:三次回车

 

 

查看公钥:cat id_rsa.pub

 

将公钥放到密钥栏里,这样就可使用ssh方式来上传代码了:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDKt4gqFEGve5I9m7S+j5Rtd78h3EsaUkHEJcuVjVEQrMmmQbbHOX7ZVPcm6+oBiWi31tB7OMajNg+qSELg8fYECDePLLeBwrPUuMLt7k7nJZ/YmbZ241d2h8zTPZ+xyQ9NPfatWzr6NpjdCXjrMz9+8w4BiCAdXIC2lVr0Aef50gpgaRwy18CZrV8P/qynv8N2r/zGge6xKgbTr11AVCp2SEkEI5E1NpyxBEyrj32/LWOODZ84NSLF8SYlbMIE12xwo+ueVmhhQSB6XryrsF5AYGcESICHmvzMO76JSGnQPwmxyPZa2d44cOMOj2HNB0m2I2P7dDTJ37eFWzZzSU8h

 

 

 

1三、克隆代码仓库,而后测试是否可以上传代码到gitlab:

git clone git@192.168.5.11:root/wyl.git

 

 

修改文本内容,提交到gitlab上看可否同步上去:

 

git add README.md 提交到暂存区

git commit -m "add README.md" 直接提交

 

git config --global user.email 1483415221@qq.com

git config --global user.name root

git commit -m "add README.md"

git push

这里是用shell编写的一个文本提交至gitlab:

echo 123456 > rc.txt

git add .

git commit -m "rc.txt"

git push

 

 

 

 

到这里gitlab就配置完成。

 

4、Jenkins介绍

一、Jenkins 是什么?   

 Jenkins 是一个可扩展的持续集成引擎。

二、主要用于:    

持续、自动地构建/测试软件项目。     

监控一些定时执行的任务。

三、Jenkins 拥有的特性包括:    

易于安装-只要把jenkins.war部署到servlet容器,不须要数据库支持。     

易于配置-全部配置都是经过其提供的web界面实现。     

集成RSS/E-mail经过RSS发布构建结果或当构建完成时经过e-mail通知。     

生成JUnit/TestNG测试报告。     

分布式构建支持Jenkins可以让多台计算机一块儿构建/测试。     

文件识别:Jenkins可以跟踪哪次构建生成哪些jar,哪次构建使用哪一个版本的jar等。     

插件支持:支持扩展插件,你能够开发适合本身团队使用的工具。

四、Jenkins 安装部署方式(如下4种方式后续都会写到):    

(1)直接下载war包jenkins.war部署到servlet容器中,如tomcat,下载地址https://jenkins.io/download    

(2)下载war包使用命令直接运行war包,java -jar jenkins.war    

(3)windows下载zip包解压运行jenkins.exe便可安装成windows服务    

(4)下载rpm包在linux下安装并配置服务

5、Jenkins安装配置

教程:https://blog.csdn.net/xishaoguo/article/details/88577459

一、下载Jenkins包:https://jenkins.io/zh/download/

 

 

wget https://pkg.jenkins.io/redhat-stable/jenkins-2.190.3-1.1.noarch.rpm

 

若是这里下载速度过慢,也能够用rz本地直接上传。

二、安装Jenkins:

sudo rpm -ih jenkins-2.190.3-1.1.noarch.rpm

 

自动安装完成以后:

/usr/lib/jenkins/jenkins.war    WAR包

/etc/sysconfig/jenkins       配置文件

/var/lib/jenkins/       默认的JENKINS_HOME目录

/var/log/jenkins/jenkins.log    Jenkins日志文件

三、启动Jenkins:sudo service jenkins start

 

解决办法:修改java路径便可

find / -name jenkins

 

cd /etc/rc.d/init.d/

 

vim jenkins

 

上图是默认路径,修改成本机java路径,以下图一步到位便可:

 

sudo service jenkins start

systemctl daemon-reload           按提示:需重新加载单元

 

service jenkins start

service jenkins stop   中止Jenkins服务

service jenkins restart   重启Jenkins服务

 

这里若是防火墙未关闭,需先关闭,再启动jenkins:systemctl stop firewalld.service

查看Jenkins是否正常运行,以下图表示未运行:systemctl status jenkins

 

修改Jenkins端口号:vim /etc/sysconfig/jenkins

 

service jenkins start

systemctl status jenkins

 

浏览器验证失败,以下图:

 

不少人说gitlab很占内存,难道个人2G内存也被占完了吗?因而使用free命令看了一下

free -h

 

发现个人运行内存就剩77M了,因而停掉gitlab:

gitlab-ctl  stop

 

再次查看有可用内存了:free -h

 

而后这里须要再次启动Jenkins:

service jenkins start

systemctl status jenkins

 

再次在浏览器验证,以下图表示成功:192.168.5.11:8082

 

四、网页配置Jenkins:

根据提示在虚拟机获取初始化密码:cat /var/lib/jenkins/secrets/initialAdminPassword

 

复制粘贴进去,进行下一步:

52b6aedc282f4e2ea322a2d563c95a16

 

 

这里自动安装插件,安装失败点击重试,但有时候由于网络缘由能够跳过这一步:

 

建立管理员用户,保存完成:

 

 

 

到这里Jenkins就安装完成啦。

五、因为上面插件加载失败,这里须要先从新登陆,再安装Jenkins所需插件:

 

个人Jenkins插件上面未安装成功,这里从新安装,点击系统管理--插件管理--搜索--勾选安装便可:

须要安装的插件:Gitlab Hook、Build Authorization Token Root、Publish Over SSH、Gitlab Authentication、Gitlab、Git ParameterMaven Integration plugin

 

 

 

 

插件安装失败,有两种缘由:

一、请求超时,网络正常的时候从新安装便可;

二、安装时没有依赖的安装包。

若是Jenkins屡次安装都不行须要换种方式解决:

http://www.javashuo.com/article/p-hfhooove-gy.html

Jenkins插件下载地址:

http://updates.jenkins-ci.org/download/plugins/

以下图,所需插件均已安装完成:

 

六、添加完插件重启jenkins,开始添加要部署代码的主机,注意必定是要可以经过ssh登录的用户

添加主机:系统管理 - 系统设置 找到Publish over SSH设置免密便可,以下图:

 

设置好以后,测试报错:

 

这是因为服务器上的sshd服务没有开启致使的,登陆到服务器上执行命令

sudo service sshd start   //开启sshd服务

将公钥拷贝到authorized_keys文件发现以前的用户1483415221@qq.com被添加进去,以下图:

cat id_rsa.pub >> authorized_keys

 chmod 600 authorized_keys

 

 

七、系统管理--->全局工具配置

修改maven默认settings.xml文件,配置git、jdk、maven工具后保存(不要勾选自动安装)

 

Git配置按下图所示环境走:

 

八、Jenkins中建立一个job:

 

输入项目名,构建一个自由风格的项目:

 

如下是Git配置:

 

 

 

构建触发器:

http://192.168.5.11:8082/project/testwyl

这个URL待会配置gitlab会用到,以下图所示用正则表达式生成gitlab webbook的安全令牌ef04574b270a8be397af2c7789493f8d(每次都生成新的)

 

 

 

当前代码部署到的目录,而后重启服务,以下图:

 

 

配置gitlab:

 

取消ssl勾选,由于咱们没有在Jenkins上配置https,最后点击增长web钩子

 

 

这里报错是由于使用的最新版本的gitlab,这是由于新版的gitlab为了安全默认禁止了本地局域网地址调用web hook,咱们在设置里容许就行,具体步骤以下:

 

再次添加web钩子,而后进行test,以下图表示配置成功了:

 

 

以下图,测试的记录共3次:

 

九、测试提交代码是否会部署到远程主机:

git clone git@192.168.5.11:root/wyl.git

cd wyl/

echo '测试Jenkins' > index.html

git add .

git commit -m 'add index.html'

git push

#提交以后去jenkins页面看看

 

以下图是构建成功的项目: