Performing a Plugin Release manually
This site is the new docs site currently being tested. For the actual docs in use please go to https://www.jenkins.io/doc. |
Prefer automated releases instead of releasing manually
See setting up automated plugin release instead of this guide. |
Prerequisites
-
Make sure you have permissions to release the plugin. See this guide to learn more details
Artifactory Credentials for Maven
You will need to tell Maven your credentials to access Artifactory.
You can obtain your encrypted password from Artifactory using curl
.
Use this command:
curl -u your_user_name:your_password https://repo.jenkins-ci.org/setup/settings.xml
This will print the configuration you need to your terminal. You should see something similar to this:
$ curl -u mr_jenkins:j3nkinsr0ck5 https://repo.jenkins-ci.org/setup/settings.xml
<settings xmlns="https://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd">
<servers>
<server>
<id>maven.jenkins-ci.org</id> (1)
<username>mr_jenkins</username>
<password>APrj80t4398w8fnytd498nft4dt8so</password>
</server>
</servers>
</settings>
1 | This is not a valid host name anymore, but still the ID used by default in the Jenkins plugin parent POM. |
Store the output as ~/.m2/settings.xml
(~
representing your user home directory, e.g. /home/yourname
or C:\Users\yourname
), creating the file if it doesn’t exist yet.
If you already have this file, merge the server
block provided in the output with your existing servers
section, if any, and otherwise add the provided servers
section to your file.
Set up GitHub to accept your SSH key
Maven Release Plugin will automatically push to the repository when performing a release, so you need to set up GitHub to accept your SSH key.
See the GitHub help on SSH for more information.
Performing the release
Always test your SSH connection before performing a release:
ssh -T git@github.com
If you have been authenticated correctly, you see a message similar to the following example in your terminal:
Hi yourGitHubUsername! You've successfully authenticated, but GitHub does not provide shell access.
yourGitHubUsername
is a placeholder representing your GitHub username.
With GitHub and Maven credentials set up, performing a release should be as easy as running the following command:
mvn release:prepare release:perform
Troubleshooting
First, make sure your plugin uses a reasonably up-to-date parent POM. This will prevent the vast majority of problems in releasing the plugin, such as outdated Maven plugins, or obsolete host names.
The upload to the Maven repository fails with "401 Unauthorized"
Unauthorized means that your credentials were invalid, or not sent by Maven.
Make sure you’ve updated your encrypted password since the last time you changed your password on the account app.
The upload to the Maven repository fails with "403 Forbidden"
The two most common explanations for this error:
-
You don’t have permission to upload to the specified path. Learn more about how to request upload permissions. Check that the path you’re allowed to upload to matches the actual upload attempt (i.e. no typos).
-
The specified release already exists, and you try to overwrite it. We do not allow replacing existing releases. Specify a different, previously unused version number during the release process.
Further troubleshooting help
If none of the provided solutions help, send an email to the Jenkins developers mailing list and explain what you did, and how it failed.