Plugin Distribution Process

Jenkins plugin distribution provides available updates, security status, dependency information, and much more to Jenkins controllers. Jenkins plugin initial releases and updates are distributed to users from the Jenkins update center. The Jenkins plugin manager allows administrators to choose their plugins. The Jenkins plugin installation manager tool provides a command line interface to install plugins.

plugin distribution diagram

Build and Test

Plugins use the plugins folder of ci.jenkins.io to run their continuous integration processes. Plugins use the buildPlugin() task in the Pipeline library to build and test multiple configurations. Common configurations include mixtures of Linux and Windows and mixtures of Java versions.

Troubleshooting of issues with plugin build and test depends on the location of the failure. If a plugin fails to build and test locally, check the status of the matching job on ci.jenkins.io. If it is passing on ci.jenkins.io, then ask in the Jenkins developer mailing list. If a plugin passes build and test locally but fails on ci.jenkins.io, open a ticket with the Jenkins infrastructure help desk.

Automated Release

Automated release is the preferred release process for most plugins.

Plugins may choose to release automatically each time a relevant change is merged to the primary branch of the repository. In an automated release, a GitHub Action builds and releases the plugin after it has confirmed that the most recent ci.jenkins.io job is passing. Refer to "Setting up automated plugin release" for detailed instructions to configure automated release..

Manual Release

Maintainers may choose to release plugins manually. In a manual release, the maintainer builds, tests, and releases the plugin with mvn release:prepare release:perform. Refer to "Performing a plugin release manually" for detailed manual release instructions.

Incremental Release

Plugins often depend on other plugins for functionality. For example, the Git plugin depends on the Git client plugin for its Git API implementation. Often, a change is needed in both a plugin dependency and the plugin itself. Incremental plugin releases allow plugins to use an unreleased pull request build of a dependency.

More details are available in "Incrementals: developing components in parallel".

Artifactory

Artifactory is hosted by JFrog for the Jenkins project. It hosts all the Jenkins released artifacts, including Jenkins core, Jenkins plugins, Jenkins tools, and many other Jenkins components. It also hosts security fixes privately while they are being developed and tested.

Plugin releases are uploaded to Artifactory whether they are automated, manual, or incremental releases.

Manual releases require that the maintainer must have a valid, active Jenkins account. Maintainers must login to Artifactory at least once to create their account. Artifactory credentials are a frequent source of confusion for plugin maintainers.

Troubleshooting of "Artifactory credentials for Maven" is sometimes required. If the documentation page is insufficient, ask in the Jenkins developer mailing list.

Update Center

The Jenkins update center generates the Jenkins update site with release details for Jenkins plugins. The update center detects manual and automated plugin releases to Artifactory and includes them in the generated update site.

Security issues are also included in the Jenkins update site so that Jenkins controllers can display vulnerability information to Jenkins administrators.

The Jenkins update center site architecture is described in the update center GitHub repository.

Links to the latest releases of Jenkins core and Jenkins plugins are available from the update site latest page.

Mirrors

Donors provide worldwide mirrors for Jenkins core releases and Jenkins plugin releases. Mirrors are available in North America, Europe, and Asia.

Mirrors are updated by rsync from one or more other mirrors. The current list of mirrors for a particular file is available by appending ?mirrorlist to the URL of the that item on the mirror. For example, the mirrors of the latest release of the Git plugin are available at https://updates.jenkins.io/latest/git.hpi?mirrorlist.

Plugins site

The Jenkins plugins site provides searching and browsing for Jenkins plugins. It also provides detailed information for each plugin, including:

  • Documentation

  • Releases and their changelogs

  • Dependencies

  • Health score

  • Link to the detailed version information (how many Jenkins controllers have installed each version of the plugin, …​)

  • Links to the GitHub repository, open issues, Pipeline steps reference, Javadoc, and more

The plugins site is updated roughly every three hours. New releases should be visible on the plugins site within six hours of release. If they are not available as expected, open a ticket with the Jenkins infrastructure help desk.

Plugin Documentation

Plugin documentation is written as either Markdown or Asciidoc in the plugin repository. Documentation pages on the plugins site are generated from the plugin documentation in the repository. Refer to the "Plugin documentation" page for detailed instructions.

References