一、背景
之前的项目是 public 的,如果我们在 gitlab上面把它修改成 private,然后再次打开配置,就可能会出现下面的错误,两种协议都会进行报错。
名称 | IP | 备注 |
---|---|---|
Jenkins | 172.18.2.101 | 内网IP |
Gitlab | 172.18.2.100 | 内网IP |
ssh 协议
http 协议
二、ssh 协议配置
1、在 Jenkins 服务器上面生产 SSH Keys
如果要通过 git 协议拉取代码,需要建立 Jenkins 服务器和 Gitlab 服务器的无密码通信,我们首先要生存一组密钥对。
ssh-keygen -t rsa -C "wzlinux"
[root@jenkins ~]# ll .ssh/
total 12
-rw------- 1 root root 1675 Sep 3 22:05 id_rsa
-rw-r--r-- 1 root root 408 Sep 3 22:05 id_rsa.pub
-rw-r--r-- 1 root root 348 Sep 4 21:21 known_hosts
2、在 Gitlab 上面配置生产的 SSH Keys
我们登录 gitlab,打开自己的用户设置,选择 SSH Keys 选项进行配置,填写我们刚刚生成的公钥(id_rsa.pub)。
SSH Keys 帮助我们建立 jenkins 到 gitlab 的安全无密码连接。
3、在 jenkins 服务器上面测试代码拉取
[root@jenkins test]# git clone git@172.18.2.100:java/game.git
Cloning into 'game'...
remote: Enumerating objects: 1768, done.
remote: Counting objects: 100% (1768/1768), done.
remote: Compressing objects: 100% (584/584), done.
remote: Total 1768 (delta 1112), reused 1768 (delta 1112)
Receiving objects: 100% (1768/1768), 15.02 MiB | 0 bytes/s, done.
Resolving deltas: 100% (1112/1112), done.
我们可以看到,配置了SSH Keys之后,我们可以直接在服务器上面无密码拉取代码了。
4、再次打开jenkins任务配置
当我们再次打开配置,发现认证还是有问题,这时候我们需要添加认证,因为 jenkins 并不知道我们的秘钥。
添加私钥,然后确定。
认证选择我们刚刚添加的私钥,已经不再报错。
5、构建测试
修改了权限之后,我们重新构建项目,查看整个过程。
没有任何问题,SSH Keys权限认证通过。
三、http 协议配置
1、配置认证
和 ssh 基本一样,我们只需要再添加认证的时候写我们在 gitlab 上面的用户名密码即可。
然后再选择对应的认证方法。
2、构建测试
拉取代码也没有什么问题。