创建一个插件

准备环境后, 接下来是创建一个新的插件。

如果您的目的是在 Jenkins 更新站点上发布您的插件,应该先看看是否已经有类似的插件。 参考 wiki page 了解更多信息。

使用示例插件原型创建项目结构

打开命令提示符,找到您想要存储新 Jenkins 插件的目录,然后运行以下命令:

mvn -U archetype:generate -Dfilter=io.jenkins.archetypes:

这个命令将生成与 Jenkins 有关的几个项目原型中的一个。 在本教程中,我们将使用 hello-world 原型,版本 1.4,所以选择:

$ mvn -U archetype:generate -Dfilter=io.jenkins.archetypes:
…
Choose archetype:
1: remote -> io.jenkins.archetypes:empty-plugin (Skeleton of a Jenkins plugin with a POM and an empty source tree.)
2: remote -> io.jenkins.archetypes:global-configuration-plugin (Skeleton of a Jenkins plugin with a POM and an example piece of global configuration.)
3: remote -> io.jenkins.archetypes:global-shared-library (Uses the Jenkins Pipeline Unit mock library to test the usage of a Global Shared Library)
4: remote -> io.jenkins.archetypes:hello-world-plugin (Skeleton of a Jenkins plugin with a POM and an example build step.)
5: remote -> io.jenkins.archetypes:scripted-pipeline (Uses the Jenkins Pipeline Unit mock library to test the logic inside a Pipeline script.)
Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): : 4 (1)
Choose io.jenkins.archetypes:hello-world-plugin version:
1: 1.1
2: 1.2
3: 1.3
4: 1.4
Choose a number: 4: 4 (2)
[INFO] Using property: groupId = unused
Define value for property artifactId: demo (3)
Define value for property version 1.0-SNAPSHOT: : (4)
[INFO] Using property: package = io.jenkins.plugins.sample
Confirm properties configuration:
groupId: unused
artifactId: demo
version: 1.0-SNAPSHOT
package: io.jenkins.plugins.sample
 Y: : y (5)
1 输入 hello-world-plugin 原型的编号, 在该案例中是 4
2 本教程是基于 hello-world-plugin 原型的1.4版本, 所以输入 4 选择它 。
3 它在 Jenkins 中且唯一标识您的插件。 这个插件教程使用名称 demo。 如果你想发布你的插件,请确保名称尚未被采用,并且你选择的名称是面向未来的。 在发布第一个版本后,不能更改 artifactId。 请 不要 在这个 ID 中使用单词 jenkinsplugin —— 只有描述 Jenkins 插件的文字。
4 这里不需要选择不同的版本号。这里是 1.0 版本的开发版本 (通过 SNAPSHOT 表示)。了解 Maven 版本号
5 在你输入所有值之后,Maven 会再次显示它们。查看并确认您的选择。

这会创建一个与插件的 artifactId 的名称相同的目录(该例中为 demo ), 然后添加了工作插件的基本结构。 让我们看一下我们能否构建插件:

$ mv demo demo-plugin (1)
$ cd demo-plugin
$ mvn verify
1 Maven 在一个目录中创建了与您为插件选择的名称相同的项目结构。 我们将重命名该目录以匹配 GitHub 组织 @jenkinsci 中使用的常规存储库名称。

Maven 将下载更多的依赖项,然后遍历配置的构建周期,包括静态分析(FindBugs)和测试,直到它显示像下面的文字:

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  01:24 min
[INFO] Finished at: 2018-11-19T20:48:40+08:00
[INFO] Final Memory: 73M/872M
[INFO] ------------------------------------------------------------------------
要详细了解插件构建中涉及的内容,请参阅 Plugin 构建过程

不是你看到的输出? 查看下面的 故障排除 部分。

让我们 运行插件 并查看它能做什么。

故障排除

没有适合你的东西? 在 chatjenkinsci-dev 邮件列表中寻求帮助。