jenkins源码编译和打包

来源:http://www.ilanni.com/?p=12436


现在开始学习有关jenkins的知识了,学习jenkins,我这边是从jenkins的编译和打包开始。

因为jenkins是基于java语言开发的,而且项目管理是通过maven进行的,所以在开始编译和打包jenkins之前,我们需要配置相关的基础环境。

一、安装和配置jdk环境

安装和配置jdk环境,使用如下命令:

wget http://mirrors.linuxeye.com/jdk/jdk-7u80-linux-x64.tar.gz

tar -xf jdk-7u80-linux-x64.tar.gz -C /usr/local/

chown root:root -R /usr/local/jdk1.7.0_80/

jenkins源码编译和打包_第1张图片

jdk1.7安装完毕回,我们把它配置到系统的环境变量中,如下:

vim /etc/profile

export JAVA_HOME=/usr/local/jdk1.7.0_80

export PATH=$PATH:$JAVA_HOME/bin

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

clip_image002

source /etc/profile

java –version

clip_image003

二、安装和配置maven3.3

因为代码依赖管理是通过maven进行的,所以在此我们需要安装和配置maven。

2.1 安装maven3.3

在此我们使用的是maven3.3.9版本,maven3.3.9的安装与配置使用如下命令:

wget http://mirror.bit.edu.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz

tar -xf apache-maven-3.3.9-bin.tar.gz -C /usr/local/

cd /usr/local/

mv apache-maven-3.3.9 maven

jenkins源码编译和打包_第2张图片

把maven加入系统的环境变量中,如下:

vim /etc/profile

export M2_HOME=/usr/local/maven/

export PATH=$PATH:/usr/local/mysql/bin:$M2_HOME/bin

clip_image005

使maven环境变量生效,如下:

source /etc/profile

java –version

mvn –v

jenkins源码编译和打包_第3张图片

通过上图,我们可以很容易的看到maven已经安装成功了。

2.2 修改maven3.3配置文件

对于maven3.3的配置文件settings.xml选项比较多,在此我们暂时只修改两处:mirror和proxy。

其中mirror我们用于镜像阿里云的maven仓库,而proxy是用于代理maven去下载国外的一些依赖和仓库。

有关mirror部分修改如下:

vim /usr/local/maven/conf/settings.xml

 

    alimaven

    aliyun maven

    http://maven.aliyun.com/nexus/content/groups/public/

    central       

 

jenkins源码编译和打包_第4张图片

有关proxy部分修改如下:

vim /usr/local/maven/conf/settings.xml

http

true

http

ilanni

passwd

101.177.221.45

44010

192.168.1.232|*.aliyun.com

https

true

https

ilanni

passwd

101.177.221.45

44010

192.168.1.232|*.aliyun.com

jenkins源码编译和打包_第5张图片

以上配置默认情况下是所有http和https请求走代理服务器的,但是192.168.1.232和*.aliyun.com例外。

三、配置nexus仓库

jenkins源码编译和打包需要从jenkins官方nexus依赖仓库下载相应的依赖,由于众所周知的原因,这个下载速度是很慢的。

所以需要我们在本地搞一个内部nexus依赖仓库的代理仓库,用于从jenkins官方nexus依赖仓库下载相关依赖。

有关nexus的安装和配置,可以查看这篇文章《烂泥:maven私库nexus2.14.1迁移到nexus3.1》。

在此我们只介绍下,nexus3.1上配置代理jenkins官方nexus依赖仓库。

jenkins官方nexus依赖仓库地址是:

http://repo.jenkins-ci.org/public/

现在我们来新建ilanniproxy仓库,如下:

jenkins源码编译和打包_第6张图片

jenkins源码编译和打包_第7张图片

jenkins源码编译和打包_第8张图片

jenkins源码编译和打包_第9张图片

上图中我们只需要填写name和remote storage就行了,其中name填写的是仓库的名称,remote storage中填写的是需要代理的远程nexus依赖仓库的地址。

jenkins源码编译和打包_第10张图片

上图中,我们可以看到刚刚新建的ilanniproxy地址为:

http://192.168.1.232:8081/repository/ilanniproxy/

四、下载jenkins源码

要编译jenkins源码,需要我们下载jenkins源码,我们可以从jenkins的github上下载。如下:

https://github.com/jenkinsci/jenkins

jenkins源码编译和打包_第11张图片

在此我们下载jenkins2.19.3版本的源码,如下:

https://github.com/jenkinsci/jenkins/releases

jenkins源码编译和打包_第12张图片

使用下面命令:

wget https://github.com/jenkinsci/jenkins/archive/jenkins-2.19.3.tar.gz

tar -xf jenkins-jenkins-2.19.3.tar.gz

cd jenkins-jenkins-2.19.3

jenkins源码编译和打包_第13张图片

jenkins源码编译和打包_第14张图片

五、修改pom.xml文件

jenkins源码下载完毕后,我们来修改jenkins源码中pom.xml文件。

注意:jenkins源码中的pom.xml文件有多个,因为不同的源码中有不同的模块。在这篇文章中,我们牵涉到的pom.xml文件主要是源码根目录的下pom.xml文件和war目录下的pom.xml文件。

其中根目录下pom.xml文件,主要是jenkins编译时所使用,二war目录下的pom.xml文件主要是jenkins打包时所使用。

在此,我们为了显示jenkins是我们自己编译和打包的,需要我们对相关的pom.xml文件做几处修改。

比如:修改jenkins打包后的名称和jenkins页面刷新频率。

5.1 修改jenkins仓库

刚刚在前面我们说了为了比较快的编译、打包jenkins,需要我们修改jenkins的nexus仓库地址。

jenkins源码中,要修改nexus仓库地址,我们只需要修改源码根目录下的pom.xml文件即可。

我们只需要把该pom.xml文件中的http://repo.jenkins-ci.org/public/修改为自己搭建的maven仓库相关地址即可。

在此我们是以http://192.168.1.232:8081/repository/ilanniproxy/仓库地址为例,如下:

vim pom.xml +114

vim pom.xml +127

http://192.168.1.232:8081/repository/ilanniproxy/

jenkins源码编译和打包_第15张图片

5.2 修改nodejs配置

jenkins在编译和打包过程中,是需要nodejs的支持。但是就像前面我们所说的一样,由于众所周知的原因,Nodejs相关的仓库和模块依赖下载速度很慢的。

当然还是有国内的公司开源了自己的Nodejs镜像站点,比如淘宝的npm.taobao.org。

所以我们只需要修改根目录下pom.xml文件中的有关nodejs相关的地址即可。

修改nodejs的下载地址,把https://nodejs.org/dist修改为https://npm.taobao.org/mirrors/node,如下:

vim war/pom.xml +666

https://npm.taobao.org/mirrors/node/v${node.version}/${node.download.file}

jenkins源码编译和打包_第16张图片

修改nodejs模块的仓库地址,把war目录下的pom.xml文件中的http://registry.npmjs.org修改为https://registry.npm.taobao.org,如下:

vim war/pom.xml +678

https://registry.npm.taobao.org/npm/-/npm-${npm.version}.tgz

jenkins源码编译和打包_第17张图片

5.3 修改打包名称

Jenkins源码默认打包后的war包名称是jenkins.war,但是为了显示该war包是我们自己编译和打包的,所以需要我们修改jenkins打包后的war名称。

这个是需要修改war目录下的pom.xml文件中的finalName选项达到目的的,如下:

vim war/pom.xml +191

ilannijenkins

jenkins源码编译和打包_第18张图片

5.4 修改页面刷新频率

Jenkins页面默认的刷新频率是10s,但是我们现在想修改jenkins默认的页面刷新频率,可以通过两种方式达到此目的。

方式一:使用Config AutoRefresh Plugin插件,如下:

https://wiki.jenkins-ci.org/display/JENKINS/Features+controlled+by+system+properties

配置–系统配置–Automatic Refresh Configuration

clip_image022

方法二,通过直接修改jenkins源码来达到目的。在此我们使用修改源码方式,如下:

vim core/src/main/java/hudson/Functions.java +632

if (refresh) {response.addHeader(“Refresh”, SystemProperties.getString(“hudson.Functions.autoRefreshSeconds”, “5“));}

jenkins源码编译和打包_第19张图片

六、编译和打包jenkins

以上全部修改完毕后,我们就可以对jenkins源码进行编译和打包,在此我们跳过了单元测试部分,使用如下命令:

mvn clean install -Dmaven.test.skip=true

jenkins源码编译和打包_第20张图片

如果不想跳过maven的单元测试,我们可以使用如下命令:

mvn clean install

如果想以maven的debug模式运行,我们可以使用如下命令:

mvn clean install -Dmaven.test.skip=true -X

jenkins源码编译和打包_第21张图片

通过上图,我们可以看到有关nodejs的配置,确实使用的是我们前面所配置的相关地址。

jenkins源码编译和打包_第22张图片

jenkins源码编译和打包_第23张图片

clip_image028

这一步会花费很长时间,需要耐心等待。

jenkins源码编译和打包_第24张图片

jenkins源码编译和打包_第25张图片

通过上图,我们可以很明显的看出jenkins已经编译和打包完成,并且打包后的war包名称确实是我们在前面定义的该ilannijenkins。

七、启动jenkins

Jenkins编译和打包完毕后,我们现在来启动jenkins。

因为我们目前打包的是war包,所以我们可以通过tomcat来启动jenkins。

但是为了不那么麻烦,在此我们直接使用java命令启动,如下:

java -jar ilannijenkins.war

jenkins源码编译和打包_第26张图片

jenkins源码编译和打包_第27张图片

jenkins源码编译和打包_第28张图片

通过上图,我们可以很明显的看出,我们源码jenkins编译、打包的jenkins已经正常运行。


你可能感兴趣的:(ci)