前言



前面的两篇maven,nodejs基本配置流程中,已经介绍了Jenkins+SVN的基本配置方法,可查看前面的内容。下面要介绍的是Jenkins如何关联gitlab/github,从中拉取代码。

GitLab搭建可参考下列链接:



Jenkins的GitLab配置



【1】Jenkins服务器创建密钥



<1>登陆Jenkins服务器,执行

ssh-keygen -t rsa

全部回车,采用默认值即可,会生成如下文件:
私钥文件id_rsa
公钥文件id_rsa.pub


【2】登陆gitlab配置公钥



<1>进入配置

jenkins 怎么拉取gitlab代码 jenkins项目重git上拉取代码_服务器



<2>配置ssh keys

jenkins 怎么拉取gitlab代码 jenkins项目重git上拉取代码_服务器_02



<3>将jenkins的公钥添加到gitlab

cat /root/.ssh/id_rsa.pub将内容复制到Key的空白处,点击Add key即可

jenkins 怎么拉取gitlab代码 jenkins项目重git上拉取代码_git_03

jenkins 怎么拉取gitlab代码 jenkins项目重git上拉取代码_git_04

点击remove可删除此公钥



【3】设置gitlab api访问令牌,创建Tokens



<1>Access Tokens

jenkins 怎么拉取gitlab代码 jenkins项目重git上拉取代码_git_05



<2>填写此令牌名称,勾选api

jenkins 怎么拉取gitlab代码 jenkins项目重git上拉取代码_服务器_06



<3>复制该令牌生成的token

jenkins 怎么拉取gitlab代码 jenkins项目重git上拉取代码_github_07

jenkins 怎么拉取gitlab代码 jenkins项目重git上拉取代码_github_08


点击对应令牌的revoke,可删除令牌



【4】Jenkins配置GitLab服务器



<1>进入全局配置

jenkins 怎么拉取gitlab代码 jenkins项目重git上拉取代码_github_09



<2>填写信息

Connection name 为Gitlab服务器的一个名称,便于区别
Gitlab host URL为此gitlab服务器地址(必须可使jenkins服务器可访问到,例如http:123.123.123.123)
Credentials为gitlab的验证方式

jenkins 怎么拉取gitlab代码 jenkins项目重git上拉取代码_git_10



<3>添加gitlab的token

jenkins 怎么拉取gitlab代码 jenkins项目重git上拉取代码_git_11

jenkins 怎么拉取gitlab代码 jenkins项目重git上拉取代码_服务器_12

jenkins 怎么拉取gitlab代码 jenkins项目重git上拉取代码_git_13

点击测试,success即为成功



【5】Jenkins+gitlab配置项目基本演示


可参考maven项目配置流程,除了源码管理方式其他基本相同:

仅演示与其他项目部署有差异的配置(可选即为根据需求选择是否配置)



<1>gitlab服务器复制代码链接

进入gitlab服务器中,进入此项目的目录中,clone要使用的ssh/http方式的链接

jenkins 怎么拉取gitlab代码 jenkins项目重git上拉取代码_github_14



<2>源码管理方式配置

配置ssh方式的链接(及git开头的链接)时,可不配置gitlab的用户名和密码(即Credentials)
配置http方式的链接时,必须配置Credentials(用户名和密码)

Repository URL填入该项目使用的git分支
其他的通常默认即可

jenkins 怎么拉取gitlab代码 jenkins项目重git上拉取代码_github_15



<3>构建触发器(可选)

下面演示的是某分支每次提交或合并代码将会自动触发构建

记录红框位置的url会在gitlab中用到

jenkins 怎么拉取gitlab代码 jenkins项目重git上拉取代码_服务器_16


jenkins 怎么拉取gitlab代码 jenkins项目重git上拉取代码_git_17



勾选”Filter branches by name“,在include 中填写分支名称,点击Generate,为该分支生成token

记录token,后面会在gitlab中用到

jenkins 怎么拉取gitlab代码 jenkins项目重git上拉取代码_github_18

jenkins 怎么拉取gitlab代码 jenkins项目重git上拉取代码_github_19



去gitlab中对应的git库 选择settings Integrations

jenkins 怎么拉取gitlab代码 jenkins项目重git上拉取代码_git_20



填写前面的url和token,点击Add webhook即为成功

jenkins 怎么拉取gitlab代码 jenkins项目重git上拉取代码_服务器_21

jenkins 怎么拉取gitlab代码 jenkins项目重git上拉取代码_git_22



如报错:
Url is blocked: Requests to the local network are not allowed
gitlab默认不允许向本地网络发送webhook请求导致

登录管理员帐号admin@example.com,输入安装好的第一次的密码
配置configure gitlab
勾选Allow requests to the local network from hooks and services并保存

jenkins 怎么拉取gitlab代码 jenkins项目重git上拉取代码_服务器_23

jenkins 怎么拉取gitlab代码 jenkins项目重git上拉取代码_git_24



<4>构建以及构建后发送与其他项目配置操作无区别




Jenkins的GitHub配置



【1】Github的配置



<1>登录github,进入设置

jenkins 怎么拉取gitlab代码 jenkins项目重git上拉取代码_服务器_25



<2>设置一个令牌

Developer settings

jenkins 怎么拉取gitlab代码 jenkins项目重git上拉取代码_github_26


Personal access tokens >> Cenerate new token

jenkins 怎么拉取gitlab代码 jenkins项目重git上拉取代码_git_27



<3>设置名称,配置权限

jenkins 怎么拉取gitlab代码 jenkins项目重git上拉取代码_github_28

jenkins 怎么拉取gitlab代码 jenkins项目重git上拉取代码_git_29



<4>记录tokens, jenkins配置中会用到

jenkins 怎么拉取gitlab代码 jenkins项目重git上拉取代码_git_30



下面的几步用于配置jenkins触发器,如无需触发,可不配置



<5>进入要进行持续集成的项目中,设置webhook

jenkins 怎么拉取gitlab代码 jenkins项目重git上拉取代码_git_31

jenkins 怎么拉取gitlab代码 jenkins项目重git上拉取代码_服务器_32



<6>添加webhook

jenkins 怎么拉取gitlab代码 jenkins项目重git上拉取代码_github_33



Payload URL为:http://jenkins服务器地址:端口/github-webhook

注意jenkins服务器地址必须使github访问到,否则webhook无用(可使用外网地址、做端口映射 或 内网穿透)

jenkins 怎么拉取gitlab代码 jenkins项目重git上拉取代码_git_34



【2】Jenkins服务器配置



<1>配置github

jenkins 怎么拉取gitlab代码 jenkins项目重git上拉取代码_服务器_35

jenkins 怎么拉取gitlab代码 jenkins项目重git上拉取代码_github_36



<2>类型选择Secret text,Secret填入github生成的token
(实际上也可配置github用户名和密码的方式,此处不演示)

jenkins 怎么拉取gitlab代码 jenkins项目重git上拉取代码_服务器_37



<3>点击连接测试

jenkins 怎么拉取gitlab代码 jenkins项目重git上拉取代码_git_38

Credentials verified for user xxx, rate limit: 4996 即为成功



【3】Jenkins+github配置项目基本演示



实际上与gitlab的项目配置方式基本相同

仅演示与其他项目部署有差异的配置(可选即为根据需求选择是否配置)



<1>gitlhub复制要集成的项目链接

进入gitlhub中,进入此项目的目录中,clone要使用的ssh/http方式的链接

jenkins 怎么拉取gitlab代码 jenkins项目重git上拉取代码_git_39



<2>填入链接

如无法拉取代码,就配置Credentials(github账号,密码)

jenkins 怎么拉取gitlab代码 jenkins项目重git上拉取代码_服务器_40



<3>配置触发器

需github先为该项目配置webhook

每15分钟轮询一下,有变更则触发

jenkins 怎么拉取gitlab代码 jenkins项目重git上拉取代码_服务器_41



<4>构建即构建后等操作与其他项目相同,就不演示了