jenkins+gitlab配置自动打包

前几天项目中需要用到jenkins自动打包,配置的过程中,遇到了很多问题,也踩了很多坑,记录下。
1.jenkins安装gitlab plugin和gitlab hook plugin.安装步骤为:jenkins->系统管理->插件管理->可选插件,在可选插件里表中找到这两个插件,即可安装。
注:我在这步的时候,遇到了很大的问头(我的jenkins的版本是1.638)。首先,我的插件可选列表里面只有gitlab hook plugin,是没有gitlab plugin的。我尝试安装gitlab hook plugin,结果安装失败,错误提示为:

Caused by: java.io.IOException: Failed to initialize
at hudson.ClassicPluginStrategy.load(ClassicPluginStrategy.java:441)
at hudson.PluginManager.dynamicLoad(PluginManager.java:478)
... 6 more
Caused by: java.lang.ClassCircularityError: org/jruby/RubyClass
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at org.jenkinsci.bytecode.ClassWriter.loadClass(ClassWriter.java:97)
at org.jenkinsci.bytecode.ClassWriter.getCommonSuperClass(ClassWriter.java:64)
at org.kohsuke.asm5.ClassWriter.getMergedType(ClassWriter.java:1654)
at org.kohsuke.asm5.Frame.merge(Frame.java:1426)
at org.kohsuke.asm5.Frame.merge(Frame.java:1374)
at org.kohsuke.asm5.MethodWriter.visitMaxs(MethodWriter.java:1475)
at org.kohsuke.asm5.tree.MethodNode.accept(MethodNode.java:833)
at org.kohsuke.asm5.commons.JSRInlinerAdapter.visitEnd(JSRInlinerAdapter.java:187)
at org.jenkinsci.bytecode.Transformer$1$1.visitEnd(Transformer.java:107)

网上找了很多资料,也没有查到好的解决办法,最后发现这是一个jenkins的bug,issue地址为:https://issues.jenkins-ci.org/browse/JENKINS-31019
最后在stackoverflow上,找到了一个临时的解决方案,修改/etc/sysconfig/jenkins 的JENKINS_JAVA_OPTIONS为:
JENKINS_JAVA_OPTIONS=”-Djava.awt.headless=true -Dhudson.ClassicPluginStrategy.noBytecodeTransformer=true”
修改完后重启,安装gitlab hook plugin成功。
然后是安装gitlab plugin,既然可选列表中没有,通过网上查询了解到,可以通过手动安装的方式,先到这里下载相应的插件文件,然后:jenkins的系统设置->插件管理->高级->上传插件,手动安装,安装成功(ps:之前没有解决上述ruby错误的时候,即使手动安装gitlab plugin的话,也是会失败的,感兴趣可以尝试下)。

2.在jenkins对应的job配置中,有一个构建触发器,勾选:Build when a change is pushed to GitLab. GitLab CI Service URL:XXX,这样jenkins这边的设置已经完成了。

3.在gitlab中设置(注意,此时用使用管理员账号登陆gitlab,否则没权限设置)web hook ,步骤为:点击相应peoject->settings->deploy,这个步骤为添加deploy key,即添加jenkins账号的公钥到gitlab上去,这样jenkins才有权限去拉代码。然后再设置web hook,将第2步中的XXX中的那个url地址,设置到web hook中,然后保存,此时就设置完成了。

4.改动任意代码,然后push到gitlab上去,可以看到jenkins中对应的job,已经开始自动打包了,ok大功告成。

参考:
http://stackoverflow.com/questions/33883551/error-installing-ruby-runtime-in-jenkins
http://blog.csdn.net/jpiverson/article/details/50044453
https://updates.jenkins-ci.org/download/plugins/
http://www.cnphp6.com/archives/115565

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>