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 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.
Collapsed versioning is a strategy often used in pre-release branches that narrows the number of new versions generated by the commits in a branch so that they progressively end up to a single version which is the cumulative account of a whole range of commits. If you have already used pre-release branches you are probably confident with this kind of versioning but you probably wonder what's the algorithm behind.
Merge commits a just like regular commits with just more than one parent.
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:
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
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.
When you use the version project property and it yields to the unspecified value although you expected it to be something else the reason may be:
Available commands
Background
Broadly speaking they are often used interchangeably but it depends on the perspective you're looking at it from. If you're asking is probably because in Nyx they are sometimes used as different entities.
The previous version is, broadly speaking, the version that came before the current one (current the one Nyx is in the process of releasing).
Nyx is named after 3908 Nyx, a notable Mars crossing asteroid, which in turn is named after the the Greek goddess of the night. We liked the name as it's three letters like the number of a semantic version number.
One of the very first steps when running a pipeline on a CI/CD platfom is checking out the Git repository and this is usually done by the platform without the user to define any specific configuration or workflow.