|
|
(8 intermediate revisions by the same user not shown) |
Line 5: |
Line 5: |
| =Overview= | | =Overview= |
|
| |
|
| "novaordis-release-tools" (NORT) exists because working with code involves complex coordination between the local workarea of a project, build tools, such as Maven, GitHub, and external Maven and binary repositories. We always prefer to formalize logic and let computers do repetitive steps. | | "novaordis-release-tools" (nort) exists because working with code involves complex coordination between the local workarea of a project, build tools, such as Maven, GitHub, and external Maven and binary repositories. We always prefer to formalize logic and let computers do repetitive steps. |
|
| |
|
| "novaordis-release-tools" started as a set of shell scripts, but the lack of friendly unit testing in bash, more than anything, and the lack of support for advanced data structures determined its migration to Java. | | "novaordis-release-tools" started as a set of shell scripts, but the lack of friendly unit testing in bash, more than anything, and the lack of support for advanced data structures determined its migration to Java. |
Line 13: |
Line 13: |
| In the future, the utilities will gain the capability of driving Go projects as well, offering a unified command line interface for Java and Go projects. | | In the future, the utilities will gain the capability of driving Go projects as well, offering a unified command line interface for Java and Go projects. |
|
| |
|
| =GitHub= | | =Subjects= |
|
| |
|
| <blockquote style="background-color: AliceBlue; border: solid thin LightSteelBlue;">
| | * GitHub: https://github.com/NovaOrdis/nort |
| :<br>https://github.com/NovaOrdis/novaordis-release-tools<br><br> | | * [[nort User Manual|User Manual]] |
| </blockquote>
| | * Development [[nort TODO]] |
| | |
| =Nova Ordis Release Tools User Manual=
| |
| | |
| <blockquote style="background-color: #f9f9f9; border: solid thin lightgrey;">
| |
| :[[Nova Ordis Release Tools User Manual]]
| |
| </blockquote>
| |
| | |
| =Usage=
| |
| | |
| <font color=red>TODO: Coalesce https://github.com/NovaOrdis/novaordis-release-tools/blob/master/README.md with this content.</font>
| |
| | |
| | |
| In-line help is available with:
| |
| | |
| <pre>
| |
| operations
| |
| </pre>
| |
| | |
| which is the original name of the script and it should be available in the <tt>./bin</tt> subdirectory.
| |
| | |
| The latest output:
| |
| | |
| <pre>
| |
| NOMBP2:events ovidiu$ operations
| |
| Nova Ordis Release Tools
| |
| | |
| Usage:
| |
| | |
| <command> [global-options] <command-arguments> | operations [global-options] <command> <command-arguments>
| |
| | |
| Global Options:
| |
| | |
| -v | --verbose - verbose execution.
| |
| | |
| Commands:
| |
| | |
| install [-f|--force]
| |
| | |
| release <snapshot|minor|major|patch|"version-string">
| |
| | |
| Makes a release by incrementing the release information appropriately, running all tests, building the final
| |
| artifact and installing the artifact in the appropriate repository. If a version string is used, the string
| |
| is checked for consistency. The release process will fail if the version string is invalid or represents an
| |
| older version than the current version.
| |
| | |
| test - internal release tools testing shortcut. Advanced users only.
| |
| | |
| Installation:
| |
| | |
| ./src/main/bash/operations install-release-tools <project-home-directory>
| |
| | |
| The installation functionality can currently only be accessed from the original repository.
| |
| 'install-release-tools' installs the release tools into the 'bin' subdirectory of the specified project home
| |
| directory. A target directory qualifies as "project home directory" if it has a Maven pom.xml in it. If an
| |
| older version of the release tools is already installed, 'install-release-tools' will upgrade in place.
| |
| | |
| Per-Project Configuration:
| |
| | |
| Create an operations.conf in the directory the release tools were installed into and configure local project
| |
| properties.
| |
| </pre>
| |
| | |
| =User Manual=
| |
| | |
| ==Releases==
| |
| | |
| A ''release'' consists in a tag in the repository plus a series of binary artifacts that are automatically uploaded into a binary repository. If the project produces a a Java library, that binary repository is usually a Maven repository. If the project produces an executable, the binary repository is GitHub's "release" facility. Running the "release" command consists, in order, of the following steps:
| |
| # Increment the local version information (in the <tt>pom.xml</tt> file, for example).
| |
| # run tests
| |
| # produce the distributable binaries
| |
| # tag the repository (<font color=red>TODO</font>)
| |
| # upload the distributable binaries into the binary repository (<font color=red>TODO</font>)
| |
| # increment the local version to reflect the next snapshot (working version) (<font color=red>TODO</font>)
| |
| | |
| =Development=
| |
| | |
| <blockquote style="background-color: #f9f9f9; border: solid thin lightgrey;">
| |
| :[[novaordis-release-tools TODO]]
| |
| </blockquote>
| |
Internal
Overview
"novaordis-release-tools" (nort) exists because working with code involves complex coordination between the local workarea of a project, build tools, such as Maven, GitHub, and external Maven and binary repositories. We always prefer to formalize logic and let computers do repetitive steps.
"novaordis-release-tools" started as a set of shell scripts, but the lack of friendly unit testing in bash, more than anything, and the lack of support for advanced data structures determined its migration to Java.
"novaordis-release-tools" knows how to interact with local build tools, such as Maven and its configuration, and external resources such as GitHub. It provide extended operational capabilities for Nova Ordis projects: runtime wrappers, building released artifacts ready for distribution, upload releases in binary repositories, etc., local and remote installation, etc.
In the future, the utilities will gain the capability of driving Go projects as well, offering a unified command line interface for Java and Go projects.
Subjects