Best Practice
Release management is a much broader topic than just adopting a tool and if you want to go deeper here is a good starting point to additional resources.
Release management is a much broader topic than just adopting a tool and if you want to go deeper here is a good starting point to additional resources.
Whether the project is developed by a team or you are the sole contributor you soon need to define your workflow. In version control, this means you have rules and semantics in place to track your code changes consistently. Even when you have never thought about a branching model you're actually using one. This set of rules is often called in many different ways, like branching strategy, branching pattern, git worlflow. A few well known ones are:
Nowadays all teams use CI/CD platforms to automate the build and release process around their software projects but often times they get into some pitfalls like:
The changelog section is where you configure the (optional) changelog generation.
Changelog attributes
Nyx is perfectly suited for use in CI/CD platforms and leverage automation. This page gives you additional information to set up your build pipelines using common CI/CD platforms effectively and work around some caveats.
In a simplistic way the release process is atomic and happens at the end of the overall build process, meaning that the commit history can be inspected to infer values like the version number to release, apply a tag to the repository and publish to remote platforms.
In this section you can find instructions to get started using the command line in minutes. Consider these your first steps based or a standard scenario but there is much more you can do and control with Nyx. For more see Using the command line.
Commit message conventions are patterns used for Git commit messages widely used in software development. To name a few: Conventional Commits, Angular, Karma, jQuery, JSHint, Ember, gitmoji. While discussing these conventions is out of scope for this page, what is important here is that you can configure Nyx with any convention in order to fetch information directly from the commit messages (like, for example, the version number to bump after a certain commit).
Nyx offers a wide range of configuration options, including:
Configuration presets are the easiest way to get started with Nyx as they bring streamlined configurations ready to use with just one option to configure.
This section give you a detailed reference on Nyx configuration and command line options.
In this section you can find instructions to get started using the Docker image in minutes. Consider these your first steps based or a standard scenario but there is much more you can do and control with Nyx. For more on using the Docker image see Using the Docker image.
Although you can configure Nyx by means of static values, you also have the option to use templates to make them dynamic.
This preset can be used by setting the preset global configuration option value to extended and brings rich standard configurations suitable for projects with several options in place.
The git section is where you can pass Git parameters to Nyx.
Check out this section for a full reference on the GitHub Action.
Top level attributes
These are the top level options in the configuration:
In this section you can find instructions to use the available Go libraries to be used in your own projects.
In this page you can find extra information about the Nyx Gradle Plugin internals that may be useful for troubleshooting.
In this section you can find instructions to get started using the Gradle plugin in minutes. Consider these your first steps based or a standard scenario but there is much more you can do and control with Nyx. For more on using the Gradle plugin see Using the Gradle plugin.
In this page you can find the overall principles of the various Nyx phases and how they work in order to take full advantage.
Release management entails many tasks and responsibilities and can be daunting when the size of the team and the project grows. Examples of these tasks are:
In this section you can find instructions to use the available Java libraries to be used in your own projects.
You can use the main Nyx library to embed it into your project and use all or some of its features. The github.com/mooltiverse/nyx/src/go/nyx/nyx package brings the Nyx structure that is the entry point for all the available commands and features.
Maven Central javadoc
Release assets are the artifacts to be attached to releases upon publication. These may be local files (produced during the build process) or remote URLs. The configuration allows using dynamic templates so you can have multiple degrees of control over the released contents.
The releaseAssets element is the list of artifacts that have been actually published along with the release. For each asset you have the file name, the description (or label), the MIME type and the URL to download the published asset.
Release scope attributes
Release types are definitions that allow conditional settings to be used depending on what Nyx is releasing and how. The configuration allows using dynamic values that can also be used as conditionals so you can have multiple degrees of control over the released contents.
System requirements
The version package provides you with a fully featured implementation of the Semantic Versioning (SemVer) specification without any external dependency. Full support for parsing, ordering, bumping and manipulating versions and their identifiers is provided.
Maven Central Javadoc
Services are objects performing additional operations to be plugged in the overall workflow. They may support one or more features and they are invoked by specific configurations. The points where a service can be invoked from depend on the features they provide so for each invocation point the list of required features is outlined. Example services are those used to publish releases on Git hosting service like GitHub and GitLab or produce artifacts using templates.
This preset can be used by setting the preset global configuration option value to simple and brings standard configurations well suited to get started with common items, as follows.
You can get access to the internal state of Nyx if you need to use one of the values it computes internally or just to inspect its internals, like for debugging purpose.
Substitutions are used to replace arbitrary text tokens in any text file with static or dynamic contents.
Templates can be used in several places to make configuration dynamic or parametrize text outputs, be them strings, messages or even whole text files.
Available commands
Background