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