Jenkins获取Gitlab源代码

连接 gitlab 获取仓库代码

做jobs拉取gitlab源代码 部署到生产环境上

点配置

在gitlab上创建一个仓库 以html代码仓库的

我们这次通过导入方式,从别的地方导入仓库进来 

我们从码云 拿到项目的url地址导入 拿到url回到gitlab

Jenkins获取Gitlab源代码

Jenkins获取Gitlab源代码

 选择私有 点击创建仓库

Jenkins获取Gitlab源代码

Jenkins获取Gitlab源代码

仓库创建好了以后,就有地址了,使用jenkins把这个仓库地址拉到jenkins上去,然后在jenkins 把HTML代码部署到指定的服务器上 跑起来

最终目的:gitlab仓库上的代码拉到我们jenkins上,然后用jenkins发到另外一台服务器上去进行部署

我们使用上面的 job 进行配置,在“源码管理”部分配置拉取 Gitlab 上的 monitor 仓库,该仓库是一个纯 html 代码项目,首先在 Gitlab 上复制仓库地址
Jenkins获取Gitlab源代码

然后回到 Jenkins 上 My-freestyle-job 配置页面,下拉到“源码管理”部分,勾选 git选项
Jenkins获取Gitlab源代码

如果遇到这种错误

Jenkins获取Gitlab源代码

jenkins服务器 要安装git

 粘贴完仓库地址后,出现如下图所示错误提示, 

 Jenkins获取Gitlab源代码

根据提示信息显示为 key 认证失败,因为我们使用的 SSH 方式连接仓库,所以需要配置SSH认证,jenkins这台机器没有做和gitlab的认证,没有做认证,实际上在前面我们学习Gitlab的时候,我们已经配置了ci-node2这台机子的root用户的公钥在 Gitlab 上的 dev 用户

,为什么我们这里还需要认证?下面我们来查看一下Jenkins 服务的启动用户,

[ ~]# ps aux |grep jenkins
root      72936  0.0  0.1 112712   964 pts/0    R+   00:50   0:00 grep --color=auto jenkins
jenkins  108096  0.1 55.4 2339100 370532 ?      Ssl  Apr07   6:01 /etc/alternatives/java -Dcom.sun.akuma.Daemon=daemonized -Djava.awt.headless=true -DJENKINS_HOME=/var/lib/jenkins -jar /usr/lib/jenkins/jenkins.war --logfile=/var/log/jenkins/jenkins.log --webroot=/var/cache/jenkins/war --daemon --httpPort=8080 --debug=5 --handlerCountMax=100 --handlerCountMaxIdle=20

而我们在Gitlab上配置的root用户的公钥,现在我们有两种方式解决认证失败的问题,
1、在jenkins上配置使用root用户的私钥连接Gitlab,

2、配置使用root用户启动jenkins。


下面我们先来看第一种方式

在jenkins上配置使用root用户的私钥连接Gitlab

把ci-node2主机的公钥配给gitlab 的ssh key上 (把之前gitlab ci-node2绑定dev用户的key删除),绑定gitlab的root用户上 ,gitlab 一个用户可以配多个key

Jenkins获取Gitlab源代码

如果配不上就是 之前添加过了,不让重复添加,一个可以在gitlab是唯一的

现在ci-node2和gitlab 配置好权限了 把root权限打通

还会出现key认证失败,因为以jenkins用户启动jenkins

Jenkins获取Gitlab源代码

进入认证添加页面

让jenkins拿着root用户私钥去和gitlab 公钥对

Jenkins获取Gitlab源代码

根据提示添加用户认证后,回到配置仓库页面,选择认证方式为新添加的认证,错误消失。 认证通过了
Jenkins获取Gitlab源代码

 

第二种方法:以root用户启动jenkins

接下来我们更改 Jenkins 服务的启动用户为 root,编辑/etc/sysconfig/jenkins 文件,
配置 Jenkins 的启动用户为 root,然后重启 Jenkins 服务

[ ~]# cat /etc/sysconfig/jenkins |grep -v "^#" |grep -v ^$
JENKINS_HOME="/var/lib/jenkins"
JENKINS_JAVA_CMD=""
JENKINS_USER="root"
JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true"
JENKINS_PORT="8080"
JENKINS_LISTEN_ADDRESS=""
JENKINS_HTTPS_PORT=""
JENKINS_HTTPS_KEYSTORE=""
JENKINS_HTTPS_KEYSTORE_PASSWORD=""
JENKINS_HTTPS_LISTEN_ADDRESS=""
JENKINS_DEBUG_LEVEL="5"
JENKINS_ENABLE_ACCESS_LOG="no"
JENKINS_HANDLER_MAX="100"
JENKINS_HANDLER_IDLE="20"
JENKINS_ARGS=""
[ ~]# ps aux |grep jenkins
root     121117  1.8 54.8 2333688 366280 ?      Ssl  Apr11   0:40 /etc/alternatives/java -Dcom.sun.akuma.Daemon=daemonized -Djava.awt.headless=true -DJENKINS_HOME=/var/lib/jenkins -jar /usr/lib/jenkins/jenkins.war --logfile=/var/log/jenkins/jenkins.log --webroot=/var/cache/jenkins/war --daemon --httpPort=8080 --debug=5 --handlerCountMax=100 --handlerCountMaxIdle=20
root     123127  0.0  0.1 112712   968 pts/0    R+   00:16   0:00 grep --color=auto jenkins

回到 job 的源码配置页面, 

Jenkins获取Gitlab源代码

我们看到不选择任何认证,也不会出现报错。

总结: 

配置git仓库认证一般报两种错误

1.没有安装git 报git命令执行错误

2.权限认证错误

而我们在Gitlab上配置的root用户的公钥,现在我们有两种方式解决认证失败的问题,
1、在jenkins上配置使用root用户的私钥连接Gitlab,

2、配置使用root用户启动jenkins。

配置完成选择保存

Jenkins获取Gitlab源代码

保存配置后,回到 job 主页面,点击“立即构建”,构建完成后,我们在工作空间内可以看到从 Gitlab 仓库拉到的代码

Jenkins获取Gitlab源代码

 同时我们在“console output”页面可以看到整个控制台输出内容 

Jenkins获取Gitlab源代码

 我们去客户端 去workspace 工作区目录看看

Jenkins获取Gitlab源代码

 代码都拉到了

相关推荐