**************************
Project Standalone Release
**************************

This page explains how a project can release independently outside of the
OpenDaylight simultaneous release.

Preparing your project for release
==================================

A project can produce a staging repository by using one of the following
methods against the {project-name}-maven-stage-{stream} job:

* Leave a comment ``stage-release`` against any patch for the stream to build
* Click ``Build with Parameters`` in Jenkins Web UI for the job

This job performs the following duties:

1. Removes -SNAPSHOT from all pom files
2. Produces a ``taglist.log``, project.patch, and project.bundle files
3. Runs a `mvn clean deploy` to a local staging repository
4. Pushes the staging repository to a Nexus staging repository
   https://nexus.opendaylight.org/content/repositories/<REPO_ID>
   (REPO_ID is saved to ``staging-repo.txt`` on the log server)
5. Archives ``taglist.log``, project.patch, and project.bundle files to log
   server

The files `Ì€`taglist.log`` and `Ì€ project.bundle`Ì€` can be used later at release
time to reproduce a byte exact commit of what was built by the Jenkins job.
This can be used to tag the release at release time.

Releasing your project
======================

Once testing against the staging repository has been completed and project has
determined that the staged repository is ready for release. A release can the be
performed using the self-serve release process:
https://docs.releng.linuxfoundation.org/projects/global-jjb/en/latest/jjb/lf-release-jobs.html


1. Ask helpdesk the necessary right on jenkins if you do not have them
2. Log on https://jenkins.opendaylight.org/releng/
3. Choose your project dashboard
4. Check your release branch has been successfully staged and note the corresponding log folder
5. Go back to the dashboard and choose the release-merge job
6. Click on build with parameters
7. Fill in the form:

* GERRIT_BRANCH must be changed to the branch name you want to release (e.g. stable/sodium)
* VERSION with your corresponding project version (e.g. 0.4.1)
* LOG_DIR with the relative path of the log from the stage release job (e.g. project-maven-stage-master/17/)
* choose maven DISTRIBUTION_TYPE in the select box
* uncheck USE_RELEASE_FILE box

8. Launch the jenkins job


This job performs the following duties:
* download and patch your project repository
* build the project
* publish the artifacts on nexus
* tag and sign the release on Gerrit