Jenkins使用过程中,大部分Job的第一项就行从源码库里签出代码。由于git越来越流行,所以,稍微新一些的项目的源码管理都是基于git的。对应的,jenkins的git plugin几乎是大部分jenkins用户都绕不过去的一个插件。在这里,我要跟大家说一个非常悲催的事情,这个插件质量不怎么高:看一下 它开着的bug列表你就会发现,永远都有200个左右的bug是打开的。因此,我们使用的时候,会遇到各种各样的小坑。

随便说4个常见小坑:
1.会突然卡死,没有任何提示。
2.各种莫名其妙的错误提示,无从下手。
3.权限问题
4.ssh问题
5.大项目签出timeout问题。

碰上这些问题,一般可以遵从如下步骤解决:
1.查看log中,git执行了什么样的指令,去对应的slave机本地执行,然后看看是不是可以走得通,如果能够走得通,8成是环境变量设置和权限问题。
2.google对应的英文提示。注意,一定是 google英文提示 ,stackoverflow上有数千个jenkins问题,大部分有很好的答案,但是百度是搜不到的。
3.顺藤摸瓜找到问题,并解决。
上边的步骤能够帮助你解决99%的问题。

这里举几个小例子:

repository url 设置的时候提示没有访问权限。

  1. 登录到master和slave机上看(必须两者都看)是否有同样的错误。
  2. 如果没有同样的错误,查看启动jenkins的用户和ssh登录用户是否一致,如果不一致,两个用户权限(包含ssh免密登录权限)是否相同。
  3. 权限相同,免密一样,还是提示权限问题。这时候需要在master/slave机的ssh链接上联一下git终端。这时候会有一个步骤:将git服务器放到known_host,需要手工确认,手工确认以后,git插件不再提示权限问题。(这个例子就是一个典型的git 插件设计不足造成的)

timeout问题

有时候一个git库很大,网络条件不好的时候,总会超时下不下来。有两个方法可以解决这个问题。

  1. 把jenkins的全局超时时间设置长一些。
    2.用命令行直接在slave机上clone,这样后续就都是增量,不会超时了。

最后,如果你搜遍了google,并且死磕以后发现是插件bug,并且最新版本也没有修复,并且绕不开。记得给他们提一个issue
这是git plugin 的主页 https://wiki.jenkins-ci.org/display/JENKINS/Git+Plugin#GitPlugin-Bugs

Jenkins拾遗--第五篇-git插件填坑的更多相关文章

  1. Android开发第2篇 - Git插件安装

    一.Eclipse上安装GIT插件EGit Eclipse的版本eclipse-java-helios-SR2-win32.zip(在Eclipse3.3版本找不到对应的 EGit插件,无法安装) E ...

  2. 第五篇 -- git基础教程

    git(权威指南)基础教程第一章 git -- gitbash -- cygwin git service:gitolite 两个的目录不同 gitbash ~ windows/home/admini ...

  3. 【模板篇】splay(填坑)+模板题(普通平衡树)

    划着划着水一不小心NOIP还考的凑合了… 所以退役的打算要稍微搁置一下了… 要准备准备省选了…. 但是自己已经啥也不会了… 所以只能重新拾起来… 从splay开始吧… splay我以前扔了个板子来着, ...

  4. Jenkins拾遗--第三篇(用户权限管理)

    采访过很多实用Jenkins的同学,发现Jenkins的安全是一个很薄弱的地方.很多公司用作生产部署的Jenkins安全管理都不是很规范,就更别提测试用的Jenkins了. 其实Jenkins是一个很 ...

  5. Jenkins拾遗--第四篇-适当的让构建失败

    问题的引出: 有一段我们的前端构建总会现git上分支名称中的版本号和工程里的版本号不一致的问题:这样会导致构一个问题:构建后的产品名称叫做1.1,但是进入app的关于页面,看到的版本还是1.0.这会让 ...

  6. kubernetes实战篇之helm填坑与基本命令

    系列目录 其实前面安装部分我们已经分享一些互联网上其它网友分享的一些坑,本篇介绍helm的基本使用以及在使用过程中碰到的一些坑. 客户端版本和服务端版本不一致问题 有些朋友可能在使用helm init ...

  7. 前端系列——jquery前端国际化解决方案“填坑日记”

    前言:最近,新的平台还没有开发完成,原来的老项目又提出了新的需求:系统国际化.如果是前后端完全分离的开发模式,要做国际化,真的太简单了,有现成的解决方案,基于Node构建的时下热门的任何一种技术选型都 ...

  8. 前端系列——jquery.i18n.properties前端国际化解决方案“填坑日记”

    前言:最近,新的平台还没有开发完成,原来的老项目又提出了新的需求:系统国际化.如果是前后端完全分离的开发模式,要做国际化,真的太简单了,有现成的解决方案,基于Node构建的时下热门的任何一种技术选型都 ...

  9. Node填坑教程——前言

    Node是什么? Node 是一个服务器端 JavaScript 解释器,它将改变服务器应该如何工作的概念.它的目标是帮助程序员构建高度可伸缩的应用程序,编写能够处理数万条同时连接到一个(只有一个)物 ...

随机推荐

  1. API:什么是API?API与interface的区别

    我们都知道,API就是接口,那是什么鬼呢? 1.什么是API? api接口开发,其实和平时开发逻辑差不多:但是也有略微差异: 平时使用mvc开发网站的思路一般是都 由控制器 去 调用模型,模型返回数据 ...

  2. 如何处理Eclipse错误消息 The declared package does not match the expected package

    我从github下载了一个开源项目后,导入到自己Eclipse之后,遇到了这个烦人的错误消息: The declared package "com.sap.smartService" ...

  3. 【JavaScript 封装库】BETA 5.0 测试版发布!

    JavaScript 前端框架(封装库) BETA 5.0 已于10月10日正式发布,今天开始提供 BETA 5.0 的 API 参考文献.相较于之前 5 个版本的发布都是草草的提供源代码,并没有很多 ...

  4. MongoDB数据库CXX Driver编译

    最近项目需要,想要测试下MongoDB读写大量小图片的速度(单纯文件系统io效率比较低,想试试NoSQL能不能提速), 因为使用C++开发,所以使用MongoDB的CXX驱动,需要自己编译,下面记录整 ...

  5. 字符串缓冲区StringBuffer类,正则表达式

    StringBuffer类 StringBuffer又称为可变字符序列,它是一个类似于 String 的字符串缓冲区,通过某些方法调用可以改变该序列的长度和内容.它是一个容器,容器中可以装很多字符串. ...

  6. java基础 File 递归删除文件夹中所有文件文件夹 目录(包含子目录)下的.java文件复制到e:/abc文件夹中, 并统计java文件的个数

    File 递归删除文件夹中所有文件文件夹 package com.swift.kuozhan; import java.io.File; import java.util.Scanner; /*键盘录 ...

  7. C/C++获取本机名+本机IP+本机MAC

    本机名.IP.MAC都是一些比较常用网络参数,怎么用C/C++获取呢? 研究了两三个小时... 需要说明的都在代码注释里 #include <stdio.h> #include <W ...

  8. Windows平台下源码分析工具

    最近这段时间在阅读 RTKLIB的源代码,目前是将 pntpos.c文件的部分看完了,准备写一份文档记录下这些代码的用处.处理过程.理论公式来源.注意事项,自己还没有弄明白的地方.目前的想法是把每一个 ...

  9. Java反射+注解案例

    注解类代码,注解的属性可以有多个: package reflect; import java.lang.annotation.Retention; import java.lang.annotatio ...

  10. 继续分享shell 之变量使用

    变量类型 运行shell时,会同时存在三种变量: 1) 局部变量 局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量. 2) 环境变量 所有的程序,包括 ...