最近一直想写一个关于 Jenkins 管理的 InelliJ 插件,但是尝试很多次总是在登录认证上面失败,各种办法都不起作用,而且官方的文档含糊不清,就动起了从源代码编译在开发环境中进行调试。
废话少说,下面开始说明 Jenkins 的编译过程。
环境准备
- 首先,JDK 环境是必须的了,而且要设置好 JAVA_HOME 环境变量,因为 Maven 会使用到,我这里使用的是最新的 Java 8 1.8.0_112。
- 然后需要的就是 Maven 了,我这里使用的是 3.3.9
- 由于要使用 Git 来 checkout 源代码,需要使用合适的 Git 客户端,我这里使用的是 macbook 上自带的 Git 命令
- 开发环境我使用的是开源版本的 IntelliJ,这个 IDE 使用起来感觉要比 eclipse 更加顺手一些
Checkout Jenkins 源代码
Jenkins 的源代码在 GitHub 上面可以直接找到,链接为 https://github.com/jenkinsci/jenkins。在克隆源代码的时候建议使用 HTTPS 协议,SSH 可能会和你本地的 SSH 秘钥发生冲突。代码克隆命令如下:
git clone https://github.com/jenkinsci/jenkins.git
配置 Maven
由于 Jenkins 使用了修改过的 Jetty Maven 插件,而且还有其他插件的依赖库都不是在 central repository 上管理,所以需要先修改默认的 settings.xml。个人强烈建议修改用户目录下面的那个 settings.xml 文件,而不要去直接修改安装目录下面的配置文件。具体如下
- 到用户根目录,打开 .m2 目录,如果没有,请手工新建一个 .m2 文件夹
- 找到 settings.xml( ~/.m2/settings.xml )。如果没有这个文件,从 $M2_HOME/conf/settings.xml 复制一份过来
- 插入如下配置内容,当然要留意保证 xml 本身结构不会被破坏
-
<settings> <pluginGroups> <pluginGroup>org.jenkins-ci.tools</pluginGroup> </pluginGroups> <profiles> <!-- Give access to Jenkins plugins --> <profile> <id>jenkins</id> <activation> <activeByDefault>true</activeByDefault> <!-- change this to false, if you don‘t like to have it on per default --> </activation> <repositories> <repository> <id>repo.jenkins-ci.org</id> <url>https://repo.jenkins-ci.org/public/</url> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>repo.jenkins-ci.org</id> <url>https://repo.jenkins-ci.org/public/</url> </pluginRepository> </pluginRepositories> </profile> </profiles> <mirrors> <mirror> <id>repo.jenkins-ci.org</id> <url>https://repo.jenkins-ci.org/public/</url> <mirrorOf>m.g.o-public</mirrorOf> </mirror> </mirrors> </settings>
- 保存刚才的修改
编译 Jenkins
在命令行终端界面,切换到 Jenkins 源代码所在目录,然后执行以下 maven 命令
mvn -Plight-test install
如果 maven 配置正确并确保网络访问,以上命令就可以编译自己所需要的版本的 jenkins. 如果要编译特定版本的 Jenkins,也可以在克隆完成之后,使用 Git checkout 命令切换到特定的分支(branch)或者标签。
参考资料:
- https://wiki.jenkins-ci.org/display/JENKINS/Building+Jenkins
- https://wiki.jenkins-ci.org/display/JENKINS/Plugin+tutorial#Plugintutorial-SettingUpEnvironment
时间: 2024-11-17 16:15:07