Hello Igniters,
I'd like to simplify the release build for the Apache Ignite.

My suggestion here are:
1. Mavenize the building procedure of the 'platform/donet' thin client
(use maven with Ant task)
2. Change it's versions to fit the Ignite style.


= 1. Build =

Add a pom.xml sub-project with a corresponding maven-ant-plugin with a
Ant task to build the .NET project when the Apache Ignite project
build. We can use here a profile like the numa-allocator does if
building the .NET is note required.

Such a technique will also allow a variables substitution like the
maven-resource-plugin works (e.g. version substitution).

Here is an example of how it can be achieved:
https://github.com/apache/ignite/pull/9497/files#diff-77baf2378aa83911a8c3091814db3ff60b7bf328c4ab4850f707717ed96f3d92R107


= 2. Versioning =

Currently, the version of .NET thin client (SharedAssemblyInfo.cs [1])
have the following format:
2.14.0.62943 . The format of .NET versions Major.Minor.Patch.Revision
(described here [2]).

Since the Apache Ignite doesn't have a dedicated releases for the .NET
thin client I think the last 'Revision' digits can be always set to
zero. So the result version can be:
2.14.0.0

This will allow having the variable substitution also for the version
number and omitt the update-version profile usage for the .NET client.


= Advantages =

- Reduce the code complexity for changing a project version (we don't
need the update-versions maven profile);
- Build the whole project on the local environment and prepare nuget
for the release with a single command;


[1] 
https://github.com/apache/ignite/blob/master/modules/platforms/dotnet/SharedAssemblyInfo.cs
[2] 
https://docs.microsoft.com/en-us/nuget/concepts/package-versioning#where-nugetversion-diverges-from-semantic-versioning

Reply via email to