DistChen

Jenkins配置Gitlab

部署示例

1
2
3
Jenkins:http://192.168.1.1:8081
Gitlab: http://192.168.1.2:8082
示例仓库:demo

安装Git

在Jenkins(192.168.1.1)所在的服务器上面安装git,如下即可:

1
yum install git

配置全局name和Email

1
2
git config --global user.name "admin"
git config --global user.email "admin@example.com"

生成SSH Key

在Jenkins(192.168.1.1)所在的服务器上面执行如下命令生成SSH Key:

1
ssh-keygen -t rsa -C "admin@example.com" -b 4096

注意:如果此服务器之前已经生成过默认的Key,此时不能再用默认的文件名,详情可参考《单机配置多个Git账号》

Gitlab 添加公钥

使用admin@example.com账号登录Gitlab,在个人设置界面下的SSH Keys菜单中新建一个SSH Key,使Gitlab服务器(192.168.1.2)信任Jenkins服务器(192.168.1.1),key值为上面生成的公钥内容(用户主目录下id_rsa.pub,根据实际情况而定):

1
cat /root/.ssh/id_rsa.pub

Jenkins 添加私钥

登录到Jenkins,添加一个Credentials,关键信息如下:

1
2
3
4
5
6
kind:SSH Username with private key
Username:admin
Private Key:
1、如果私钥为id_rsa,则单选"From the Jenkins master ~/.ssh"即可
2、如果私钥不是默认的id_rsa,则单选"Enter directly",然后在出现的key值表单中填入上面生成的私钥
cat cat /root/.ssh/id_rsa

admin为Gitlab账号admin@example.com所对应的账号,之后确定就行。

Jenkins插件安装

登录Jenkins后,安装如下三个插件:

1
2
3
Gitlab Authentication plugin
Gitlab Hook Plugin
Gitlab Plugin

Gitlab生成Token

使用admin@example.com账号登录Gitlab,在个人设置界面下的Access Tokens菜单中创建一个token,此token用于Jenkins调用Gitlab提供的API(Jenkins可以通过调用API往Gitlab里面提交很多有用的信息,比如pipeline)。设置token时,输入名称,不用设置过期时间,然后选定scope点生成即可(api要选择)。拷贝生成的token字符串并记下。

Jenkins添加Gitlab Token

登录到Jenkins,添加一个Credentials,关键信息如下:

1
2
kind:GitLab API token
API token:[上一步生成的token]

然后确定即可。

Jenkins设置Gitlab

进入到 Jenkins -> 系统管理 -> 系统设置,滚动到Gitlab位置,点击添加,新增一个Gitlab connection,如下图所示:

配置说明如下:

1
2
3
Connection name:[随便填入即可]
Gitlab host URL:http://192.168.1.2:8082
Credentials:[选择上面添加好的GitLab API token]

Jenkins中设置demo项目

在Jenkins中新建demo项目(对应gitlab中的demo仓库),主要配置如下(自行根据层级关系对应到界面):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
General:
GitLab connection:[选择在系统设置中添加的Gitlab connection]
源码管理:
git:
Repositories:
Repository URL:git@192.168.1.2:admin/demo.git
Credentials:[选择上面已经设置的SSH Username with private key]
Branches to build:
Branch Specifier (blank for 'any'):[默认为*/master,根据实际情况决定]
源码库浏览器:gitlab
URL:http://192.168.1.2:8082/admin/demo
Version:[rpm -qa|grep gitlab查看后输入,比如查到9.4.3,输入9.4就行了]
构建触发器:[可选配置,如果没有自动构建要求可跳过,下面演示根据gitlab的push event触发自动构建]
选择 Build when a change is pushed to GitLab. GitLab CI Service URL:http://192.168.1.1:8081/project/demo
(请注意:这个url其实是Gitlab hook plugin为Gitlab生成的webhook地址,等会需要配置在Gitlab中。如果在系统设置中没有设置完整的Jenkins URL(http://192.168.1.1:8081),这里会缺端口,后面需要自己补上)
然后选择 push event,其它根据实际需要勾选

至于构建环境、构建后的其它操作什么的根据实际情况决定即可,点击确定,整个配置就基本结束了,现在就可以开始构建。

补充:如果构建触发器选择了Build when a change is pushed to GitLab. GitLab CI Service URL,那么需要在gitlab中的demo仓库中设置下webhook,否则不用配置,配置方式如下:

1
2
3
进入demo仓库 -> setting -> Integrations
输入URL:http://192.168.1.1:8081/project/demo
选择:push event(其它的根据实际情况决定)

手动点击构建和通过提交代码而产生的自动构建在显示上是有区分的,如下所示:

写的很简单,有疑问的地方,请随时留言。

坚持原创技术分享,您的支持将鼓励我继续创作!