Nort Concepts: Difference between revisions

From NovaOrdis Knowledge Base
Jump to navigation Jump to search
Line 9: Line 9:
The ''current version'' of the project is the <tt><version></tt> information written into the POM file.
The ''current version'' of the project is the <tt><version></tt> information written into the POM file.


The current version is ''always'' a SNAPSHOT version, as projects are continuously evolving and open for new functionality and defect fixes.  
The current version is ''always'' a SNAPSHOT version, as projects are continuously evolving and they are in principle open for new functionality and defect fixes.  


A version becomes a "dot version" during the [[#Release|release process]] and the artifacts corresponding to the "dot versions" (sources and binaries) are by default installed in their corresponding repositories, then immediately the current version is upgraded to the next logical SNAPSHOT.
A version becomes a "dot version" during the [[#Release|release process]] and the artifacts corresponding to the "dot versions" (sources and binaries) are by default installed in their corresponding repositories, then immediately the current version is upgraded to the next logical SNAPSHOT.

Revision as of 19:55, 16 November 2016

Internal

Overview

Current Version

The current version of the project is the <version> information written into the POM file.

The current version is always a SNAPSHOT version, as projects are continuously evolving and they are in principle open for new functionality and defect fixes.

A version becomes a "dot version" during the release process and the artifacts corresponding to the "dot versions" (sources and binaries) are by default installed in their corresponding repositories, then immediately the current version is upgraded to the next logical SNAPSHOT.

Released Versions

A project can have "dot releases" or "snapshot releases".

"Dot releases" are usually aimed for public consumption.

"Snapshot releases" are necessary when dependent projects under development () require new functionality or defect fixes of their dependencies. In that situation, the dependency releases a snapshot release, the dependent updates its metadata to point to the newly released dependency snapshot release, so its development can continue. When the dependent is ready for a dot release, first the dependencies are "dot released" and then the dependent is "dot released".

Release

A NORT release consists in a sequence of interactions with the local project work area, the build system metadata, and various external source code and binary repositories. All types of releases end with the creation of a set of valid release artifacts and the publishing of the artifacts into their corresponding repositories. At the end of the release process, the work area is automatically updated to support the development iteration for the next release.

Release Types

Major

Minor

Patch

Snapshot

Custom

For syntax details see the release command.

The Release Sequence

The release sequence consists in the following steps:

  1. The local workarea version metadata is tentatively incremented according to the rules described in the "Release Types" section.
  2. All tests are executed, with the new version metadata in place.
  3. If at least one test fails, NORT restores the previous release metadata state, reports and fails. The work area is restored to the exact state it was found before the release sequence was initiated.
  4. If all tests pass, the artifacts corresponding to the release are built and installed in the corresponding artifact repositories. Usually, JARs are installed under their corresponding artifact directories and binary releases are installed under their corresponding "release" modules, both in the local Maven repository. For more details about artifacts and what repositories are they installed into, see "Release Artifacts" section.
  5. The installation sequence is automatically initiated, unless "release" command was configured to stop after execution.

Release Artifacts

A release my produce one of the following artifact types:

JAR Libraries

Binary Distributions

Binary distributions are usually ZIP file containing everything an application needs in order to be installed on a new system. The binary distribution include libraries, wrapper scripts, release notes, documentation and possibly other artifacts.

The recommended technique to build complex binary distributions is to add a dedicated "release" module to the project and let the Maven assembly plug-in to handle the process. The details are described in the "Building a Maven Complex Release Artifact" article.

If a project has a binary distribution that is built by Maven, NORT will publish it in the local Maven repository, under the "release" module of the project.

Binary distributions may be built using a mechanism different from Maven, but irrespective to how the artifact is built, the release sequence ends in its publishing them in some form of local binary repository.

The Installation Sequence

The installation sequence consists in the following steps:

  1. a

New Project Initialization

The command that carries out a new project initialization is nort initialize.

TODO: