Jenkins外掛開發環境搭建及除錯方式
文章目錄
該篇文章介紹使用Idea進行jenkins外掛開發的步驟(只涉及基本環境搭建和除錯)
Jenkins外掛開發環境搭建
基礎環境
軟體名稱 | 版本 | 備註 |
---|---|---|
Maven | Apache Maven 3.6.1 | |
JAVA | 1.8.0_131 | |
IDEA | 2019.2 |
配置maven的環境
修改maven目錄下的settings.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>
使用maven的命令建立一個建立
使用如下命令建立一個新的外掛
mvn org.jenkins-ci.tools:maven-hpi-plugin:create (或者 mvn hpi:create)
設定idea中執行外掛的方式
mvn hpi:run -Djetty.port =8090
基礎配置項:
-Djetty.port 設定埠
-DJENKINS_HOME 設定jenkins的資料目錄
配置外掛的pom.xml檔案使得idea可以執行
設定pom.xml檔案
如果引入高版本jenkins需要設定日誌的版本
<properties>
<java.level>8</java.level>
<jenkins.version>2.190.1</jenkins.version>
<slf4jVersion>1.7.26</slf4jVersion>
</properties>
完整的pom.xml如下
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.jenkins-ci.plugins</groupId>
<artifactId>plugin</artifactId>
<!-- Baseline Jenkins version you use to build and test the plugin. Users must have this version or newer to run. -->
<version>3.50</version>
<relativePath/>
</parent>
<groupId>com.szkingdom.cicd.plugins</groupId>
<artifactId>wStatistics</artifactId>
<version>1.0.0-RELEASE</version>
<packaging>hpi</packaging>
<name>TODO Plugin</name>
<description>TODO</description>
<url>https://wiki.jenkins-ci.org/display/JENKINS/TODO+Plugin</url>
<licenses>
<license>
<name>MIT License</name>
<url>http://opensource.org/licenses/MIT</url>
</license>
</licenses>
<properties>
<java.level>8</java.level>
<jenkins.version>2.190.1</jenkins.version>
<slf4jVersion>1.7.26</slf4jVersion>
<workflow-support.version>3.2</workflow-support.version>
</properties>
<repositories>
<repository>
<id>repo.jenkins-ci.org</id>
<url>http://repo.jenkins-ci.org/public/</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>repo.jenkins-ci.org</id>
<url>http://repo.jenkins-ci.org/public/</url>
</pluginRepository>
</pluginRepositories>
<!-- If you want to depend on other plugins:
<dependencies>
<dependency>
<groupId>org.jenkins-ci.plugins</groupId>
<artifactId>credentials</artifactId>
<version>1.9.4</version>
</dependency>
</dependencies>
-->
<dependencies>
</dependencies>
</project>
訪問的路徑
繼承Plugin類 可以通過/plugin/(外掛名稱)/ 訪問
@ExportedBean
public class wPlugin extends Plugin {
@WebMethod(name = "test")
public HttpResponse doTest(){
return HttpResponses.errorJSON("dd");
}
}
啟動與除錯外掛
使用Hpi啟動
1、新增maven啟動項
2、修改maven的配置項
Working directory: 工作目錄,也就是外掛的根目錄
Command line: 命令列,mvn hpi:run -Djetty.port =8090
基礎配置項:
-Djetty.port 設定埠
-DJENKINS_HOME 設定jenkins的資料目錄
使用Tomcat啟動
1、新增maven啟動項
2、修改maven的配置項
Working directory: 工作目錄,也就是外掛的根目錄
Command line: 命令列,-Dmaven.tomcat.path=/ -DJENKINS_HOME=E:\WS\CompanyWS\ktmp\kt\main\jenkins\release\cicd-data -Dmaven.tomcat.port=8087 -Dmaven.tomcat.uriEncoding=UTF-8 tomcat:run
基礎配置項
-Dmaven.tomcat.path : 訪問路徑
-DJENKINS_HOME :jenkins資料目錄
-Dmaven.tomcat.port :tomcat啟動的埠
-Dmaven.tomcat.uriEncoding :tomcat請求編碼格式
遠端調式方式
1、將打包好的外掛放在jenkins資料目錄的plugins目錄下
2、在使用以下的指令啟動jenkins
# 在外掛的目錄啟動
set MAVEN_OPTS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8095
mvn -Djetty.port=8090 hpi:run
# 或者在已有的jenkins.war目錄下執行
java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8095 -Dfile.encoding=GBK -Dpermissive-script-security.enabled=true -jar jenkins.war --ajp13Port=-1 --httpPort=8787
3、IDEA中使用remote進行除錯