Maven archetypes to help you create new components involving Jenkins, such as plugins.
To see all currently released archetypes and pick one to instantiate:
mvn archetype:generate -Dfilter=io.jenkins.archetypes:
It is also possible to run this noninteractively:
mvn archetype:generate -B -DarchetypeGroupId=io.jenkins.archetypes -DarchetypeArtifactId=empty-plugin -DhostOnJenkinsGitHub=true -DarchetypeVersion=1.7 -DartifactId=somefeature
In olden times, people used mvn hpi:create
or even a web-based tool to create new plugins.
This has been deprecated in favor of the new archetypes, which cover more scenarios and require no special tooling.
The NetBeans IDE also offers a plugin for Jenkins development which offers a Jenkins plugin archetype via the File » New Project wizard.
If you have defined a mirror like this in your settings.xml
you might not be able to use filter option as described above.
<mirror>
<id>repo.jenkins-ci.org-all</id>
<url>https://repo.jenkins-ci.org/public</url>
<mirrorOf>*</mirrorOf>
</mirror>
WARNING: Changelogs have been moved to GitHub Releases |
---|
See GitHub Releases
- Added
JenkinsPipelineUnit
archetypes.
- Changed default package name to use
io.jenkins.
prefix. - Sundry POM updates.
- Added sample of
GlobalConfiguration
. - Empty plugin archetype includes a test root.
- Sample
.gitignore
files included for the convenience of people using Git.
To create a new archetype, file a pull request creating a new module
, following the examples currently here. Important pieces:
pom.xml
must have<packaging>maven-archetype</packaging>
- should also have a
<description>
src/main/resources/META-INF/maven/archetype-metadata.xml
defines files and directories to be copied & processedsrc/main/resources/archetype-resources/
: the template for the new component (remember a sample.gitignore
)src/test/resources/projects/testInstall/{goal.txt,archetype.properties}
: defines an integration test, proving that the archetype can not just be instantiated, but builds successfully thereafter- if it should have our standard templates for
.gitignore
,README.md
, etc., then copy themaven-resources-plugin
config inempty-plugin
Archetypes are expected to use technologies hosted in @jenkinsci (or a few other places pulled in by Jenkins core, such as @stapler).
Other archetypes can be developed in a profile
but will not be published.
Releasing:
mvn -B release:{prepare,perform}
In addition to needing write permission to this repository, you must have been preauthorized to deploy to the io/jenkins/archetypes/
sector of OSSRH.
Artifacts will appear on Maven Central after a few minutes. But as noted in OSSRH-34275, the catalog only gets regenerated weekly; to check it:
curl -s http://repo1.maven.org/maven2/archetype-catalog.xml | xmlstarlet sel -R -I -t -c '//archetype[groupId="io.jenkins.archetypes"]'
If testing their appearance, be sure to use a clean environment:
docker run -ti --rm --name mvn --entrypoint /bin/bash maven:3.5.0-jdk-8
HelloWorldBuilderTest
should useBuildWatcher
- convert
ui-samples-plugin
to an archetype - add
Step
sample as per this example