zoukankan      html  css  js  c++  java
  • jenkins中遇到的一些坑

    上篇文章罗列了jenkins持续集成的步骤,其中踩到了不少坑,在本篇里记录下,希望能给大家一些解决问题的思路。

    1.构建时,从github拉取代码失败:

     报错部分代码如下:

    ERROR: Timeout after 10 minutes
    ERROR: Error cloning remote repo 'origin'
    hudson.plugins.git.GitException: Command "/usr/local/git/bin/git fetch --tags --progress -- git@github.com:May-Fan/AutoApiTestDemo.git +refs/heads/*:refs/remotes/origin/*" returned status code 128:
    stdout: 
    stderr: Warning: Permanently added the RSA host key for IP address '13.229.188.59' to the list of known hosts.
    remote: Enumerating objects: 581, done.

    遇到这个问题,百度过后解决方案如下:

      1.检查ssh key是否配置正确。配置方法上一篇中有讲过,必须将公钥复制到github,私钥复制到jenkins。如果不确定,可以进入项目->配置->源码管理:

       看看这个地方会不会报错。我为了演示错误的截图,在github的url后面添加了~,因此报的是无效的仓库地址。具体需要结合报错的信息来看。如果不报错,那ssh key配置无误了;

      2.查看服务器是否安装了git。同样也是在上图的位置,如果git未安装,会提示git运行出错,验证的办法是在服务器输入git --version指令;

      3.如果上图中的配置已经不再报错,项目构建时仍然报错,需要进入对应项目->工作空间->清理工作空间,然后重新构建;

      4.当经历了1,2,3之后,构建时仍然会报错,需要考虑是否因为项目内容过多,git加载超时报错的情况。如下图,进入项目配置,勾选浅克隆,只拉取最新版本的代码,可以大大减少构建时间,并将超时的时间从原来默认的10修改为60,重新构建。这样git部分的指令就不会再报错了。

    2.jenkins无法识别mvn指令

      具体报错信息如下:

    + mvn clean package
    /tmp/jenkins4746628215257020380.sh: line 9: mvn: command not found
    Build step 'Execute shell' marked build as failure
    Finished: FAILURE

      解决的思路如下:1.确认服务器中是否安装了maven;2.确认shell中是否加载了配置文件。

      maven确认安装,而我的shell脚本当中,第一行source /etc/profile也已经加载了配置文件:

    source /etc/profile
    pid=$(ps x | grep api-1.0-SNAPSHOT.jar | grep -v grep | awk '{print $1}')
    if "[-n '$pid']" ; then
    kill -9 $pid
    fi
    
    cd api
    mvn clean package //这行的mvn指令报错了
    cd target
    pwd
    BUILD_ID=dontKillMe
    nohup java -jar api-1.0-SNAPSHOT.jar &

      这是因为:jenkins默认情况下执行shell脚本是使用非登录方式,执行shell脚本时不会去加载/etc/profile。

      找到原因后,参考了很多网上的解决方法,比如在shell脚本前添加#!/bin/sh -l,又或者在jenkins中配置全局的maven变量,又或者将maven的文件夹的拥有者和所在组都递归赋给jenkins用户,都没有解决我的问题。最终我使用了最简单粗暴的方式,将上面报错的mvn命令,直接替换成服务器上which mvn得到的绝对路径:

    source /etc/profile
    pid=$(ps x | grep api-1.0-SNAPSHOT.jar | grep -v grep | awk '{print $1}')
    if "[-n '$pid']" ; then
    kill -9 $pid
    fi
    
    cd api
    //下面的mvn替换成绝对路径
    /home/May/apache-maven-3.6.3/bin/mvn clean package 
    cd target
    pwd
    BUILD_ID=dontKillMe
    nohup java -jar api-1.0-SNAPSHOT.jar &

      同时,修改jenkins配置文件:

    vim /etc/sysconfig/jenkins
    //进入后将用户从jenkins替换成root

      重新构建,终于构建成功。

     

  • 相关阅读:
    Payload Header到底是什么
    usb bulk传输和同步传输
    Video streaming interface 带宽的选择
    Methyl-SeqDNA的甲基化图谱|DNase I-Seq|ChIP-Seq|3C-Seq|
    连词词组|relax|brings about a rise in|Chance are (high)that|Have no clue|Be passionate about|Tedious|overwhelmed by piles of
    body书写总框架
    单个body|简单解释|复杂解释|反面解释
    TS写法
    saturates|meteoric|enclose|marooned|predators|Pioneer community|salinization|condenser|embodied
    否定事实信息题
  • 原文地址:https://www.cnblogs.com/May-study/p/12365469.html
Copyright © 2011-2022 走看看