Jenkins获取Gitlab源代码
连接 gitlab 获取仓库代码
做jobs拉取gitlab源代码 部署到生产环境上
点配置
在gitlab上创建一个仓库 以html代码仓库的
我们这次通过导入方式,从别的地方导入仓库进来
我们从码云 拿到项目的url地址导入 拿到url回到gitlab
选择私有 点击创建仓库
仓库创建好了以后,就有地址了,使用jenkins把这个仓库地址拉到jenkins上去,然后在jenkins 把HTML代码部署到指定的服务器上 跑起来
最终目的:gitlab仓库上的代码拉到我们jenkins上,然后用jenkins发到另外一台服务器上去进行部署
我们使用上面的 job 进行配置,在“源码管理”部分配置拉取 Gitlab 上的 monitor 仓库,该仓库是一个纯 html 代码项目,首先在 Gitlab 上复制仓库地址
然后回到 Jenkins 上 My-freestyle-job 配置页面,下拉到“源码管理”部分,勾选 git选项
如果遇到这种错误
jenkins服务器 要安装git
粘贴完仓库地址后,出现如下图所示错误提示,
根据提示信息显示为 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
如果配不上就是 之前添加过了,不让重复添加,一个可以在gitlab是唯一的
现在ci-node2和gitlab 配置好权限了 把root权限打通
还会出现key认证失败,因为以jenkins用户启动jenkins
进入认证添加页面
让jenkins拿着root用户私钥去和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 的源码配置页面,
我们看到不选择任何认证,也不会出现报错。
总结:
配置git仓库认证一般报两种错误
1.没有安装git 报git命令执行错误
2.权限认证错误
而我们在Gitlab上配置的root用户的公钥,现在我们有两种方式解决认证失败的问题,
1、在jenkins上配置使用root用户的私钥连接Gitlab,
2、配置使用root用户启动jenkins。
配置完成选择保存
保存配置后,回到 job 主页面,点击“立即构建”,构建完成后,我们在工作空间内可以看到从 Gitlab 仓库拉到的代码
同时我们在“console output”页面可以看到整个控制台输出内容
我们去客户端 去workspace 工作区目录看看
代码都拉到了