Merge "BUG-1384: YangStoreServiceImpl.refresh() should never block"
[controller.git] / README.OPENDAYLIGHT
index a587ed8cfb059396844b91c43c1cd2668c22ccac..78d54a7e87fa7288fdf912e76406a0d76b0cde33 100644 (file)
@@ -13,8 +13,6 @@ controller project.
 be generated by packaging the several artifact. In practice for now
 there are two:
       - "opendaylight", which is the full distribution of the controller
-      - "sdk", which contains only the artifact needed to build an app
-      against the controller (beaware this is still incomplete).
 The idea of the distribution directory is that more distribution can
 be added at will, maybe just composing subsets of the whole controller
 artifact set.
@@ -23,12 +21,65 @@ HOW TO BUILD
 ============
 In order to build it's required to have JDK 1.7+ and Maven 3+, to get
 a build going it's needed to:
-1) Choose the distribution, from within opendaylight/distribution
-2) Go in the directory and run
+1) From the root directory run
    "mvn clean install"
-3) On succesfull completion go in the target directory to pick the zip
-file of the distribution or controller can be executed right from
-there going into the distribution directory.
+2) On succesfull completion go in the directory:
+"opendaylight/distribution/opendaylight/target"
 
-Thanks!!
+to pick the zip file of the distribution or controller can be executed
+right from there going into the distribution directory.
+
+Please note that this way no integration tests but only UT will be
+executed, if you are planning on committing code be aware that the
+code will be tested also for Integrations tests hence make sure before
+submitting a patch to build using the command:
+   "mvn clean install -Pintegrationtests"
+to get IT executed.
+
+HOW TO RELEASE ARTIFACTS
+========================
+Artifacts can be released in a bulk fashion or one by one depending on
+the need. Bulk release works well when in the need of establishing a
+baseline, for example on an upcoming major release. Single artifact
+release is useful for example for API bundles which are supposed to be
+used by others, this in fact seal the contract for that given version
+and others can rest assured won't change because the maven repository
+will not allow a the same artifact with the same version to be
+re-deployed.
+
+HOW TO BULK RELEASE ARTIFACTS
+-----------------------------
+Bulk release of the artifacts MUST be done only and exclusively by
+using the pom.xml present in the same directory of this
+README.OPENDAYLIGHT file. The pom.xml is just a pointer to the main
+distribution directory or in general to the one containing all the
+modules needs release.
+To perform the release from the top level just run:
+
+mvn -B release:prepare release:perform -Dgoals=deploy
+
+Well this is not supposed to be executed by a human but by an apposite
+Jenkins job because no committer or contributor has the necessary
+privileges to escape the code review process needed by the release
+process, but this is the logic behind.
 
+HOW TO RELEASE ONE ARTIFACT
+---------------------------
+1) Make sure the artifact doesn't depend on SNAPSHOT  artifacts, as a
+corollary it means that also the parent pom must be a released
+artifact which then will not be present in the repo, so for this kind
+of artifacts it's mandatory to provide a repository section to let it
+download the parent from Opendaylight maven repository
+2) Make sure all the dependencies are also non-SNAPSHOT
+3) Via apposite Jenkins job make sure that the goals:
+
+mvn -B release:prepare release:perform -Dgoals=deploy
+
+is called.
+
+[NOTE WELL]
+The pom.xml in the root level is simply a pointer to the main
+distribution but is needed to overcome some of the limitations in the
+release process.
+
+Thanks!!