zoukankan      html  css  js  c++  java
  • 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 服务的启动用户,

    [root@ci-node2 ~]# 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 服务

    [root@ci-node2 ~]# 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=""
    [root@ci-node2 ~]# 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 工作区目录看看

     代码都拉到了

  • 相关阅读:
    开通博客园
    ios关键字
    FirstDay
    An example for pysnmp
    remove debug symbols to a seperate file
    qemu下通过gdb调试内核时 遇到 evaluation of this expression requires the program to have a function "malloc" 错误的解决办法
    关于常识与知识的思考
    基于Qemu在ubuntu上构建linux学习环境
    How to download prebuilt toolchain
    诡异的打印异常BUG
  • 原文地址:https://www.cnblogs.com/mingerlcm/p/12681286.html
Copyright © 2011-2022 走看看