概述
目前在南京一公司做Java后端实习生,在工作中学习了搭建Gitlab以及部署Jenkins持续集成等技术,特此记录。
安装Git服务
前置操作
运行下面命令下载镜像docker pull beginor/gitlab-ce:11.3.0-ce.0
由于docker镜像运行重启数据即失,因此配置、数据、日志需要存放在服务器,而不是容器之中。分别创建三个目录:
mkdir -p /home/software/gitlab/etc
mkdir -p /home/software/gitlab/logs
mkdir -p /home/software/gitlab/data
运行镜像
首先需要知道自己的镜像名称或镜像ID。
然后运行下列命令。
docker run --name='gitlab' -d \
--publish 10443:443 --publish 10013:80 \
--restart always \
-v /home/software/gitlab/etc:/etc/gitlab \
-v /home/software/gitlab/data:/var/opt/gitlab \
-v /home/software/gitlab/logs:/var/log/gitlab \
--privileged=true beginor/gitlab-ce:11.3.0-ce.0
主要部分在于 --publish 参数,gitlab是发布在镜像中的80端口,我需要另外在服务器设置一个端口与其对应,以上命令中,主要使用了10013端口与其对应。
执行完毕,等待几分钟,就可以通过浏览器进行访问客户端了。
http://ip:10013/
安装Jenkins服务
镜像部署
// 拉取镜像
docker pull jenkinszh/jenkins-zh`
// 启动容器
docker run --name jenkins -p 10017:8080 -p 10018:50000 -d jenkinszh/jenkins-zh:latest
//访问网页端
http://ip:10017/
解锁码被写到了日志之中。因此需要执行下面的命令。
//查看日志
docker logs jenkins
得到密钥:"516bb3cfbed64974a**ccfb337c47"
配置Git
主要采用的方式是通过SSH密钥形式。因此需要先进入Jenkins镜像中生成一对密钥。
// 进入镜像
docker exec -it gitlab /bin/bash
// 生成密钥
ssh-keygen -t rsa
//进入密钥文件的存放路径
cd /root/.ssh/
其中有两个文件,其中id_rsa是私钥,id_rsa.pub是公钥。
drwx------ 2 root root 38 Jul 13 15:01 ./
drwx------ 1 root root 18 Jul 13 15:01 ../
-rw------- 1 root root 1675 Jul 13 15:01 id_rsa
-rw-r--r-- 1 root root 399 Jul 13 15:01 id_rsa.pub
此时需要将公钥配置在gitlab之中(使用管理员账户)。
其后,进入Jenkins创建一个项目,并为其提供一个Gitlab全局凭证。
如图,使用的是SSH密钥形式。当然,也可以使用gitlab的账户和密码形式
应用后,就可以进行构建了,Jenkins会自动去gitlab之上拉取代码。
拉取成功,也就代表我们的凭证设置正确。
Jenkins构建触发器
设置在什么时候,Jenkins自动进行构建项目
常用构建触发器
前置工程
设置在某个工程构建后自动进行构建任务。
触发远程构建
在设置中设置身份验证令牌,通过HTTP访问通知Jenkins进行重新构建。
请求http://ip:port/job/项目名称/build?token=设置的令牌即可。
定时构建
根据时间表达式去自动构建任务。类似于corn表达式。
举例: H/30 ,自左到右分别是: 分 时 日 月 周(可以省略)。而这个例子的含义是,每半小时构建一次,前面之所以写上‘H’是因为标识这里要使用后面的数字,也就是‘30’。
其他例子:
- H H/2 * 每两个小时执行一次
- 08,12,22 * 每天的八点、十二点、二十二点进行执行
轮询SCM
基于定时任务,定时去扫描代码仓库是否变更,如果变更便进行构建任务。与上述定时任务大致相同。
Git Hook
一般情况下如果我们使用轮询SCM的方式进行自动构建的时候,每次都会扫描整个代码仓库,这样产生了很多不必要的性能开销。因此Gitlab提供了一种WebHook的接口。
简单的来说,只有GIt发起了某种操作的时候,会去自动触发我们的Jenkins进行运行构建任务。
安装插件
总的来说,需要安装对应的插件,分别是:Gitlab、Gitlab WebHook。如果使用的是Github,安装Github的WebHook插件。
安装完毕后,在工程的构造器配置项就又多了一个条件。
大概主要的就是当代码仓库出现Push,或者分支合并等等事件,Gitlab会通过下图中的地址进行通知Jenkins进行构建任务。
其后就需要在Gitlab之上进行配置。首先进入设置勾上“
允许钩子和服务访问本地网络”选项。
之后进入 项目代码仓库 -> 设置 -> 导入所有仓库。在其中设置,点击“增加Web钩子”即可。
如果测试失败,提示身份验证,需要前往Jenkins的设置中“取消身份严重”。
本页的评论功能已关闭