创建一个插件

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

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

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

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

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

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

  1. $ mvn -U archetype:generate -Dfilter=io.jenkins.archetypes:
  2. Choose archetype:
  3. 1: remote -> io.jenkins.archetypes:empty-plugin (Skeleton of a Jenkins plugin with a POM and an empty source tree.)
  4. 2: remote -> io.jenkins.archetypes:global-configuration-plugin (Skeleton of a Jenkins plugin with a POM and an example piece of global configuration.)
  5. 3: remote -> io.jenkins.archetypes:global-shared-library (Uses the JenkinsPipelineUnit mock library to test the usage of a GlobalSharedLibrary)
  6. 4: remote -> io.jenkins.archetypes:hello-world-plugin (Skeleton of a Jenkins plugin with a POM and an example build step.)
  7. 5: remote -> io.jenkins.archetypes:scripted-pipeline (Uses the JenkinsPipelineUnit mock library to test the logic inside a Pipeline script.)
  8. Choose a number or apply filter (format:[groupId:]artifactId,case sensitive contains)::4(1)
  9. Choose io.jenkins.archetypes:hello-world-plugin version:
  10. 1:1.1
  11. 2:1.2
  12. 3:1.3
  13. 4:1.4
  14. Choose a number:4:4(2)
  15. [INFO]Usingproperty: groupId = unused
  16. Define value forpropertyartifactId: demo (3)
  17. Define value forpropertyversion1.0-SNAPSHOT::(4)
  18. [INFO]Usingproperty:package= io.jenkins.plugins.sample
  19. Confirm properties configuration:
  20. groupId: unused
  21. artifactId: demo
  22. version:1.0-SNAPSHOT
  23. package: io.jenkins.plugins.sample
  24. 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 ),然后添加了工作插件的基本结构。让我们看一下我们能否构建插件:

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

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

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

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

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

故障排除

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