作者:fbysss
QQ:溜酒酒吧酒吧吾散
blog:blog.csdn.net/fbysss
声明:本文由fbysss原创,转载请注明出处

一、下载

下载地址:http://pkg.jenkins-ci.org/redhat/

这里有下载包

注意:

sudo wget -O /etc/yum.repos.d/jenkins.repohttp://pkg.jenkins-ci.org/redhat/jenkins.repo
sudo rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key
yum install jenkins

这样的安装步骤也是可以,但是虚拟机下载的速度是很慢的。还是手工download rpm更好。

 二、安装

rpm -ivhjenkins-1.597-1.1.noarch.rpm 

  1:jenkins               ########################################### [100%]
[root@localhost sss]# rpm -ql jenkins
/etc/init.d/jenkins
/etc/logrotate.d/jenkins
/etc/sysconfig/jenkins
/usr/lib/jenkins
/usr/lib/jenkins/jenkins.war
/usr/sbin/rcjenkins
/var/cache/jenkins
/var/lib/jenkins  ---主目录
/var/log/jenkins

三、配置

vi /etc/sysconfig/jenkins,修改端口号

service jenkis

提示是OK,但是ps一下,jenkins进程没有,端口号也没被占用。

cat /var/log/jenkens/jenkens.log

SEVERE: Container startup failed
java.io.IOException: Failed to start Jetty

...

Caused by: java.net.BindException: Address already in use

 

原来是8009端口和被tomcat占用了。

===>/etc/sysconfig/jenkins要修改两个端口:一个8080,一个8009

在这里,我把它们分别修改为8980,8909

同时,也可以从这里看到,rpm包里面,内嵌了Jetty

四、安装插件,支持git

jenkins默认是不支持git的,需要装插件。

系统管理-》插件管理-》可选插件

选中GitLab Plugin之后,点直接安装,进入一个页面,显示相关的plugin正在下载

——注意需要翻墙连google

  • Git Client Plugin
  • Matrix Project Plugin
  • SCM API Plugin
  • Credentials Plugin
  • Git Plugin
  • GitLab Plugin

 

在配置gitlab信息时,有一个api token,对应gitlab用户的account属性中,Private token的值。



但是配置git仓库的时候,一直报错。

只有用http协议,并且把用户名密码都加上如http://user:pass@host:xxxxxx.git,Credentials选none的时候才可以。

 

Failed to connect to repository : Command "git ls-remote -h git@dev.fbysss.com:app-dev/sssApp.gitHEAD" returned status code 128:
stdout: 

stderr: Permission denied, please tryagain. 
Permission denied, please try again. 
Permission denied(publickey,gssapi-keyex,gssapi-with-mic,password). 
fatal: The remote end hung up unexpectedly



最终解决:还是在细节上没有注意

选择SSH Username with private key

直接输入私钥,要完整复制 ~/.ssh/id_isa里面的内容。

使用From a file on Jenkins master不好使

 

构建的时候,发现错误:mvn command not found.

检查一下设置,maven也已经配置了。

原因是:直接在command shell里面输入mvn是不行的。

采用在设置菜单中,增加构建-》Invoke top-level maven targets,选择我们配置的Maven的名称 ,Goals中输入

clean

install

等,是可以的。

记得在高级设置里面,都用默认的设置,里面是要找maven配置文件settings.xml的。

如果要直接输入shell命令,要打完整的路径——因为jenkins这个用户,shell用的不一样。

 

 

一开始的错误,实际上是找不到这个路径,因为默认是~/.m2/repository。于是maven直接去找私服了。然而,我根本没有把这玩意放在私服上——因为没必要。

[ERROR]   The project com.fbysss.dev:sssApp:${project.build.version}(/var/lib/jenkins/jobs/sssApp/workspace/pom.xml) has 1 error

[ERROR]     Non-resolvable parent POM: Failure to findcom.fbysss.dev:sssApp-pom:pom:1.0.0 in http://nexus.fbysss.com/content/groups/public/ was cached in the local repository, resolution will notbe reattempted until the update interval of central has elapsed or updates areforced and 'parent.relativePath' points at wrong local POM @ line 6, column 10-> [Help 2]

后来才是无法访问。

[ERROR] Could notcreate local repository at /home/sss/.m2/repository -> [Help 1]

原来是jenkins访问不了/home/sss,所以,把local repository设置在这里是不明智的。

打开settings.xml,设置目录为/var/mavenrepo

 

 

于是,

mkdir /var/maven-repo

cp /home/sss/.m2 /var/maven-repo/. -r

chmod 777 /var/maven-repo

 

新问题又来了:

因为jenkins一启动,虚拟机就很慢。估计jetty还是占用了不少内存。直接把war包放到tomcat下面应该是更好的选择。

 

但是,war包部署到tomcat下,访问发现之前的数据全部没有了。咋办?

vi  /var/lib/jenkins/users/admin/config.xml,可以看到,jenkins就是使用文件存储的方式。

但拷贝过去还是不好用,而且速度没变快。因此还是使用jetty启动。

 

 

问题:Tomcat和Jetty莫名自动关停。

估计内存不足,增加了1G内存。暂时没问题。

 

小技巧:要查看详细信息,可以在Goals中增加一条:-e

  


五、WebHook配置:解决:gitlab push之后,jenkins自动构建

https://wiki.jenkins-ci.org/display/jenkins/gitlab+hook+plugin

 首先,在gitlab中,选中一个project进行编辑

点击web hooks->Push events,添加一个urlhttp://jenkins.fbysss.com/git/notifyCommit?url=git@dev.fbysss.com:app-dev/sssApp.git

测试,提示错误:Hook execution failed. Ensure hook URL is correct and service is up.

单独将这个url放到地址栏里面,提示:

 

No Git consumers using SCM API plugin for: git@dev.fbysss.com:app-dev/sssApp.git

参考如下网址:

http://stackoverflow.com/questions/23000199/jenkins-job-notification-fails-with-no-git-consumers-for-uri

http://superuser.com/questions/705645/jenkins-notification-poll-build-fail-with-no-git-consumers-for-uri-ssh-path

说的主要是,首先gitlab中的POLL SCM要设置

效果:push到gitlab之后,jenkins自动进行构建。看日志可检查。

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐