jenkins_gitlab 搭建
基本概念:
持续集成(Continuous Integration),简称CI,是指开发者在代码的开发过程中,可以频繁的将代码部署集成到主干,并进程自动化测试。
持续交付(Continuous Delivery),指的是在持续集成的环境基础之上,将代码部署到预生产环境
持续部署(Continuous Deployment),是指在持续交付的基础上,把部署到生产环境的过程自动化,持续部署和持续交付的区别就是最终部署到生产环境是自动化的。
Gitlab:
官网: https://docs.gitlab.com/
GitLab是由GitLabInc.开发,使用MIT许可证的基于网络的Git仓库管理工具,且具有wiki和issue跟踪功能。使用Git作为代码管理工具,并在此基础上搭建起来的web服务。
Git的优点
git是分布式的,svn不是
git分布式本地就可以用,可以随便保存各种历史痕迹,不用担心污染服务器,连不上服务器也能提交代码、查看log。
GIT分支和SVN的分支不同
分支在SVN中实际上是版本库中的一份copy,而git一个仓库是一个快照,所以git 切换、合并分支等操作更快速。
git有一个强大的代码仓库管理系统 - gitlab
可以很方便的管理权限、代码review,创建、管理project
Gitlab部署:
安装组件:
yum install curl policycoreutils openssh-server openssh-clients postfix git –y
启动postfix设置开机自启动:
systemctl start postfix && systemctl enable postfix
设置gitlab源:
cd /etc/yum.repos.d/
touch gitlib.repo
cat >> gitlib.repo <<Eof
[gitlab-ce]
name=gitlab-ce
baseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7
gpgcheck=0
enabled=1
gpgkey=https://packages.gitlab.com/gpg.key
Eof
安装gitlan源:
yum install -y gitlab-ce
初始化配置,并启动gitlab(时间比较长):
gitlab-ctl reconfigure
查看gitlab-ctl状态:
gitlab-ctl status
注:建议内存为2G或以上,否则可能出现有进程id一直变化,访问报错502
注:如果内存为2G以上,访问502,可以通过:
gitlab-ctl status 查看是否存在有进程的id一直变化
gitlab-ctl tail 进程名 查看具体报错信息
浏览器输入服务器ip,访问Gitlab页面:
设置好新密码后,会自动跳转到登陆界面,默认用户名为:root,输入设置的密码登陆即可.
设置中文:
关闭自动注册功能:
测试创建项目:
在一开始的gitlab首页,选择新建项目,填写项目信息:
可以参考创建后的项目提示,在本机使用该项目,并推送:
在客户端建立ssh免密验证,并测试:
useradd test
passwd test
su test
ssh-keygen -t rsa -C "gitlab-test"
cd /home/test/.ssh/
cat id_rsa.pub
将创建的pub,添加到gitlab上
再到test项目,获取链接信息:
服务器上执行:
git clone git@192.168.1.28:root/test.git (git@192.168.1.28为应该为再项目上获取的链接信息,因为该链接的域名是默认的,目前是修改为ip地址)
注:测试的时候时用的子账号,非root且没有设置sodu权限,是在子账号的家目录去git的
在gitlab上添加部署密钥,密钥创建的方式同上面创建与gitlab密钥方式一样:
Jenkins:
Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,起源于Hudson(Hudson是商用的),主要用于持续、自动的构建/测试软件项目、监控外部任务的运行。Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。通常与版本管理工具(SCM)、构建工具结合使用。常用的版本控制工具有SVN、GIT,构建工具有Maven、Ant、Gradle。
配置JAVA环境:
因为Jenkins是用java写的,所有需要配置下java环境
JDK下载地址: https://www.oracle.com/java/technologies/javase-downloads.html
将jdk下载完毕后,上传到服务器内进行解压:
tar -xf jdk-8u261-linux-x64.tar.gz ##解压jdk文件
mv jdk1.8.0_261 jdk_1.8 ##修改解压jdk文件名称
编辑/etc/profile环境变量文件,设置JAVA_HOME和PATH,指定java文件
vim /etc/profile 在最下方添加:
export JAVA_HOME="/app/jdk_1.8" ##java_home信息为解压的jdk路径信息
export PATH=”$JAVA_HOME/bin:$PATH”
使配置文件生效,并测试环境变量设置正常
source /etc/profile
java –version ##java版本信息
安装Jenkins:
wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
yum install jenkins
修改配置文件:
由于是自定义安装的java包,不是在默认的/usr/bin/ 下,需要修改下jenkins搜索java的路径
vim /etc/init.d/jenkins
在 candidates= 字段.添加下:
因为gitlab所使用的puma占用了8080端口,而jenkins的默认端口也为8080,需要修改下默认端口:
vim /etc/sysconfig/jenkins
JENKINS_PORT= 字段进行修改
启动Jenkins:
systemctl start jenkins && systemctl enable jenkins
修改update源(不修改可能访问会出现: Please wait while Jenkins is getting ready to work 报错):
cd /var/lib/jenkins/
vim hudson.model.UpdateCenter.xml
将原本的url链接修改为:
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
使用ip:8081访问jenkins:
根据界面的提示输入密码登陆,选择推荐安装,创建密码即可,
安装Gitlab插件:
Manage Jenkins >Manage Plugins> 搜索 gitlab 选项需要的插件 下载
实现持续集成:
创建一个项目,选择git的方式(如果是svn需要下载svn插件)
选择添加证书,选择ssh证书,将部署证书的私钥复制上去
(主要是私钥文件,在gitlab上给的是公钥信息,这一步是gitlan与jenkins建立认证)
凭证的username 需要时存在与gitlab的用户
选择证书文件,如果免密建立不起来的话,会有报红,显示无法连接到gitlab链接
设置完毕后,点击保存,跳转到工程界面,点击立即构建即可: