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 -- [email protected]: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

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

 

原文地址:https://www.cnblogs.com/May-study/p/12365469.html

时间: 2024-11-10 16:13:32

jenkins中遇到的一些坑的相关文章

jenkins 中集成JNI的坑

有包名1.生成class> javac myjni\HelloJNI.java2.生成.h文件> javah -d include myini.HelloJNI3.生成.dll文件> gcc -I/opt/jdk/include -I/opt/jdk/include/linux -fPIC -shared -o HelloJNI.dll HelloJNI.c4.运行java程序> java myjni.HelloJNI如果你这步发生问题,如果这步你收到java.lang.Unsat

jenkins中Check-out Strategy的各选项测试

Use'svn update' as much as possible 第一次发布的时候,会把工作目录下的所有文件清空,然后check-out一份完整的项目到工作目录下: 以后更新的时候,不会判断已有文件是否在svn里存在.比如工作目录下的文件123在svn里不存在,那么更新的时候不会删除123. 不会判断工作目录下的文件是否被改动,只会判断svn是否有新版本需要更新.比如工作目录下的文件zzz.txt内容为zzz,svn上的zzz.txt内容为空,如果svn上zzz.txt没有新版本,则在更新

Android 开发中踩过的坑之十一: 团队协作的坑

工作中,android的坑很多,一部分是android源码自身的逻辑陷阱, 但跟多的是自己和同事们由于种种原因埋下的坑. 提高面向对象的能力,并恰当的实现在代码中,能够极大的减少坑人和被坑几率. 面向对象的最大特征是复用, 复用的目的是减少工作量,减少错误几率,提高工作效率. 总结几个自己的体会,以自勉: 1 在编码前明确代码的模块框架, 定义最简单的接口. 有人也许说, 书生造反,十年不成, 在工期紧张或者其他类似敏捷编程的大背景下, 先干起来才是硬道理. 事实上, 工期紧张也许正是因为之前的

Jenkins中集成Gcov代码覆盖率报告

最近终于把gcov代码覆盖报告集成到jenkins中了,总算是完成工作,写篇博客总结下. 我循序渐进地用了三个工具:gcov, lcov, gcovr 这三个工具原理(其实gcovr依赖于GNU的gcov的)都是收集你程序run之后所产生的*.gcda文件,总的来说,我个人觉得比较喜欢lcov,应为lcov的报告读起来很不错,可惜它不能集成到Jenkins... 从头说起... 一开始我用的是GNU tool gcov,网上学习了下gcov,生成了xx.cpp.gcov报告,然后就可以查看了,g

iOS开发中遇到过的坑

iOS开发中遇到过的坑 前言 做iOS开发这么长时间以来,遇到过不少难题,也踩过不少坑,本来没想过要写这篇文章,但是鉴于以下三点,笔者决定对遇到过的并且还能回忆起来的问题做个记录. 每次问题解决后,满满的成就感,但是当下一次再遇到时,又是一脸懵逼.这个问题我好像见过,但就是不记得怎么解决,记录下来方便以后查阅. 每次面试的时候,面试官总会问我,你在开发中遇到过哪些问题,怎么解决的?问题嘛,挺多的,但是你要我叙述嘛,我......我......我居然一时想不起来,迷之尴尬????(面试官当时想法:

Jenkins 中运行Android lint和monkey

进入到相应job的配置页面. Lint: 1.在增加构建后操作中添加lint 2.在高级中添加lint的通过标准 monkey 1.在跑monkey前需要将此次构建的apk包安装到模拟器或者手机上,在增加构建步骤中添加"install Android package". 当build成功后,相应版本的路径下会生成的apk,例如: 与此同时,jenkins当前工程的workspace中也会产生apk,这个路径下的apk只有一组,每次build成功后都会更新,所以我们在APK file中填

Jenkins中的邮件配置

摘自http://blog.csdn.net/fullbug/article/details/53024562 Jenkins是一个很受欢迎的CI持续集成工具,能够实现项目的自动构建.打包.测试.发布等.还可以在构建失败.构建不稳定等状态后发送邮件通知.现介绍一下如何在Jenkins中配置实现邮件通知. 在Jenkins中配置实现邮件通知,Jenkins提供了两种方式的配置. 一种是Jenkins内置默认的邮件通知,但是它本身有很多局限性,比如它的邮件通知无法提供详细的邮件内容.无法定义发送邮件

在Jenkins中使用Git Plugin访问Https代码库失败的问题

最近需要在Jenkins上配置一个Job,SCM源是http://git.opendaylight.org/gerrit/p/integration.git 于是使用Jenkins的Git Plugin做这件事情. 结果报错如下: hudson.plugins.git.GitException: Failed to fetch from https://git.opendaylight.org/gerrit/p/integration.git at hudson.plugins.git.GitS

持续集成 解决 Jenkins 中无法展示 HTML 样式的问题

对于测试报告来说,除了内容的简洁精炼,样式的美观也很重要.常用的做法是,采用HTML格式的文档,并搭配CSS和JS,实现自定义的样式和动画效果(例如展开.折叠等). 在Jenkins中要展示HTML文档,通常采用的方式有两种: 使用HTML Publisher Plugin: 使用Files to archive功能,在Build Artifacts中显示HTML文档链接. 第一种方式配合插件,可以通过图形化操作实现简易配置,并且展示效果也不错:而第二种方式的优势在于使用Jenkins自带的功能