Jenkins 结合 GitLab 实现代码下载

1、安装和 gitlab 相关的插件

只有安装GitLab相关的插件,才能让Jenkins和GitLab相连

在管理插件中搜索需要gitlab的相关插件并安装

图片[1]-Jenkins 结合 GitLab 实现代码下载-李佳程的个人主页

选中下面“安装完成后重启Jenkins(空闲时),自动重启jenkins

图片[2]-Jenkins 结合 GitLab 实现代码下载-李佳程的个人主页
图片[3]-Jenkins 结合 GitLab 实现代码下载-李佳程的个人主页

2、基于 ssh key 拉取代码

实现jenkins服务器到gitlab服务器的基于密钥的验证,可以让jenkins连接到gitlab执行操作,比如拉取代码

2.1、在 jenkins服务上生成 ssh key

# 在jenkins服务器上生成密钥对
[root@jenkins01 ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:e0WhbNQESMDYEq/KvD8mHEmgibo1VUAZ9kwNMzpwWPI root@jenkins01
The key's randomart image is:
+---[RSA 2048]----+
|  o+OO*=..o+o    |
|. .*+*+ooo ...   |
|oo  Eo+   + .    |
|+ . .o   . .     |
|.. o.   S   .    |
|.o=.     . .     |
| ++o    . .      |
|. o.o    .       |
|  .+..           |
+----[SHA256]-----+

[root@jenkins01 ~]# cat .ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQChAa3NFTmZcJjxhWxVhdPIvAhjjep8/OGi1VbkzwOPk7iXDmNE8yK8SAqsKlU5y7wK4bISli4F897BM89YHwzosEcrhLi6rXPn4wMgDbanCdka5NO8y1UUEAIJUylfWMLOnW8TarrvHHsZxHg1FNCtJYu2ijFtkThVRiHW4SFf6EVV9aq/rLCHqqxLBp+Mn9YoA0UKaIZ7rJ8PxnUxHFWjE1vlXIv9glHav63GOqcfslAPel0OXn7z93HkzNUyGplagiN6GIdrtvotdpWZsj6iBDhn+j03E0v8CPsSYxrKwU1qohcjpWcjjF+BZiBTywD5WS5LHtRXp94JNFhzvlML root@jenkins01

2.2、在gitlab服务器上添加jenkins生成的ssh 公钥key

在GitLab中项目具有访问权限的用户帐号的profile中导入Jenkins的公钥

图片[4]-Jenkins 结合 GitLab 实现代码下载-李佳程的个人主页
图片[5]-Jenkins 结合 GitLab 实现代码下载-李佳程的个人主页

2.3、在 jenkins服务器上测试 ssh key

测试可以不使用用户名密码后直接获取代码

在jenkins服务器上执行克隆,不再需要用户和密码

[root@jenkins01 data]# git clone git@192.168.1.71:testgroup/testproject.git
Cloning into 'testproject'...
Warning: Permanently added '192.168.1.71' (ECDSA) to the list of known hosts.
remote: Enumerating objects: 10, done.
remote: Total 10 (delta 0), reused 0 (delta 0), pack-reused 10
Receiving objects: 100% (10/10), done.
[root@jenkins01 data]#
[root@jenkins01 data]# tree testproject/
testproject/
└── index.html

0 directories, 1 file

3、Jenkins 服务器添加凭据

虽然 Jenkins 将root用户公钥传给gitlab可以实现从GitLab服务器基于ssh key 克隆项目,但是Jenkins 无法自动获取root用户的私钥,从而无法在直接在Jenkins的项目中直接连接GitLab的仓库。

还需要在Jenkins通过将Jenkins的root对应的私钥创建为Jenkins的凭证,以方便后续的连接GitLab使用。

3.1、Jenkins 凭证概述

凭证就是认证到某个系统中的认证信息,用于提供对受限资源的访问;

Jenkins所支持的凭证类型如下

  • 用户名和密码(Username with password)
  • SSH用户名和私钥日(SSH Username with private key)
  • Github App
  • Secret file:需要保密的文本文件,保存有Token等信息
  • Secret text:Token,串需要保密的文本,例如Github的API Token等
  • Certificate
  • 其它凭证类型还有二进制数据,或者更复杂形式的项目,例如OAuth凭证等;

凭证的作用域决定了它可用的目标范围

  • 系统:作用于Jenkins系统自身,仅可用于系统和后台任务,且一般用于连接到agent节点之上
  • 全局:作用于Jenkins上的所有任务,以确保任务的正常执行
  • 用户:作用于用户级别,仅生效于Jenkins中的线程代表该用户进行身份验证之时;

注意:在Jenkins内部,凭证被存放在JENKINS_ HOME目录下的secrets目录中,请务必确保该目录的访问权限进行了正确的设置

3.2、添加 private key 类型凭据

系统管理 — 凭据

图片[6]-Jenkins 结合 GitLab 实现代码下载-李佳程的个人主页
图片[7]-Jenkins 结合 GitLab 实现代码下载-李佳程的个人主页

复制之前生成的私钥

[root@jenkins01 ~]# cat .ssh/id_rsa
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAoQGtzRU5mXCY8YVsVYXTyLwIY43qfPzhotVW5M8Dj5O4lw5j
RPMivEgKrCpVOcu8CuGyEpYuBfPewTPPWB8M6LBHK4S4uq1z5+MDIA22pwnZGuTT
vMtVFBACCVMpX1jCzp1vE2q67xx7GcR4NRTQrSWLtooxbZE4VUYh1uEhX+hFVfWq
v6ywh6qsSwafjJ/WKANFCmiGe6yfD8Z1MRxVoxNb5VyL/YJR2r+txjqnH7JQD3pd
Dl5+8/dx5MzVMhqZWoIjehiHa7b6LXaVmbI+ogQ4Z/o9NxNL/Aj7EmMaysFNaqIX
I6VnI4xfgWYgU8sA+VkuSx7UV6feCTRYc75TCwIDAQABAoIBAEpblyP+6HIX0VrB
zu2Ud+HeDVXFBgWhWKe2NYJIpRFbHMYOrAP88g7Yiq1Gg8PEdtzjrTTuTOUM4tSB
lAHTnUedmdDcY+A7GSt/6UKVcsSkRLMp+SvZEDrKxdX+pT3WpWl8xf7GrPyfP67/
0LBbI6DDlUnBeuBqUAT59cjigmJjDJPTT2PvmmOHNSt2eThhVrfF8pFCPP/fqYgw
j7LAPQiBMyhu9erqwU2pZ1NDZ8NMMCXMayPImG2NX/Xf2IzKI5IlKisxb95+Z9Er
sSnaKUbNEd86HKcxGjiUqe90fsGeES3wcDsOxYRztN3hPb7Dt1EUVUjfgWCurGE7
kn2ulykCgYEAy3DvTft2zujJdMLtemN3/jkZJWY5KtpgJOnVCh9sHo+aBWr0UloL
bfZSzoNrSHPUSDTc+7cdqIlMk1PEFlsENv0Js7J8YRUUNq7IddD4ptu2jMrAHlkR
jOxKAox2vaHSFLybF6p5vSEz+U+PKpgH8SO8mYvZEaQdoaOvJ77Wt+UCgYEAypo7
MIda1PMISYh9hQRkZwAWVLsXTzrIEBXfN6q2SAlhrM3ex1zeJxrdItF7mdraK4e4
lPVpp4P3mLfBvIrs3nnqyXLyudSiFZnNBMOyuU18T5Rc9dfTeAQ6IfVJcWp+jahn
7QN+XLNcsXU9s/0qCbq8Io2d9YQH2JNLsdm/UC8CgYEAhQ2RlSD3bQ9WYmTyR+8y
FTRmu80Fan90DfBYgsxWPA6THyP6Mrnta7eEJMhSrAoFNkxMktwKK6XQTTKltjFE
qmoHpF0Bd8T/eVwKgvNvDEH6PE6GI9MA5XfMV6piJlflO+a2UF4QTJ+gjFd6PNM9
rno+6PVLvHvnXUXeUlI/v/kCgYAdWMvcEq8oi2+W3yt3WhSFCvExIsyUkGosUk68
DIFM2/cHBecQL7aKKY0AnyFtPtM9XPJyuT2toyL5PxzUB7eZ3kURGxJnspIr2NRm
rUY1KzEngdEZV0LtbodRJeuWfxuHv24WWdwy51Q07Eucx74QHLlls+e+iXptd6CO
SYE5xwKBgCVtH+ND17YRJLD9TagsylpPx/a5Q3JMSTImRxcfL8qVn7ckpE9V+ajM
hkSonpTx+37XKhRPhBA02tqLVFSFamH8hW/+tUmXL75slQ+NUL5XmUQnckEjl5et
mZGXsUBfG13iQ3IZp36m/B/szG4pU8zFUIIgr5PrpdlE4N8Hgnww
-----END RSA PRIVATE KEY-----
图片[8]-Jenkins 结合 GitLab 实现代码下载-李佳程的个人主页
图片[9]-Jenkins 结合 GitLab 实现代码下载-李佳程的个人主页

3.3、添加用户名和密码类型的凭据

也可以选择添加gitlab用户名和密码的形式

图片[10]-Jenkins 结合 GitLab 实现代码下载-李佳程的个人主页
图片[11]-Jenkins 结合 GitLab 实现代码下载-李佳程的个人主页

4、Jenkins 任务中使用凭据

使用基于key的凭据如下
注意:URL 使用 git 协议

图片[12]-Jenkins 结合 GitLab 实现代码下载-李佳程的个人主页

使用基于用户和密码的凭据如下
注意:URL 使用 http 协议

图片[13]-Jenkins 结合 GitLab 实现代码下载-李佳程的个人主页

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享