Hello, Maxim.

Thanks for investigation!

> 4. log4j-test.xml, tests.properties these files from the ignite-core module 
> required to run tests and it seems they should be shared between projects 
> also as tests resources.

As you may see most copies of these files are empty.
I think we should modify `GridAbstractTest` and other classes to use defaults 
if `log4j-test.xml` or `tests.properties` unavailable.

> 4. Configure Travis [10] to deploy a new snapshot version to the apache maven 
> snapshots repository [5] each time the Ignite master branch is updated.

Can we attach Ignite sources as maven modules to Ignite extensions?
And use Ignite sources as dependencies?

> 18 февр. 2022 г., в 00:30, Maxim Muzafarov <mmu...@apache.org> написал(а):
> 
> Hello Igniters,
> 
> 
> We have a lot of Ignite extensions waiting to be released (e.g. aws,
> gce, topology-validator, ignite-spring-tx-ext etc.). I think it is a
> good point in time to make some kind of automation and simplify our
> release process for Ignite extension modules removing manual steps
> from it.
> 
> 
> During the investigation I've found some issues that we have:
> 
> 1. Ignite extensions have their own parent pom file [2]. The code and
> dependency versions are fully duplicated with the Ignite parent pom
> [1], however, these properties must be shared for Ignite Extension
> project. Take a look at the <jetty.version>:
> - master Apache Ignite: 9.4.39.v20210325
> - master Apache Ignite Extensions: 9.4.11.v20180605
> 
> 2. The checkstyle configuration between these two repositories are
> different [3] [4]. Each of Apache Ignite and Apache Ignite Extensions
> projects have their own checkstyle config file, however, it must be
> shared the same as the maven checkstyle profile.
> 
> 3. The Extensions have a dependency on the latest Apache Ignite
> version in the master branch (e.g. 2.13-SNAPSHOT), but without
> deploying it in the local repository the Extension projects can be
> built. It seems the latest version should be published to the maven
> snapshots repository [5].
> 
> 4. log4j-test.xml, tests.properties these files from the ignite-core
> module required to run tests and it seems they should be shared
> between projects also as tests resources.
> 
> 5. The apache-release profile [7] from the apache parent which will
> prepare the sources, checksums, gpg sign is not used in the release
> process at all.
> 
> 
> Here are my suggestions to fix all the issues mentioned above:
> 
> 1. Create the `ignite-parent` module that will be released each time
> with the latest release version. This module will be based on the
> parent/pom.xml [1]. This will allow us to share all common
> configurations, profiles, dependency versions and properties to the
> Ignite Extensions.
> 
> 2. Create the `ignite-plugin-bom` bill of materials [8] module with
> the common Ignite dependencies required for developing a new
> extension. This is a common practice for companies that have their own
> parent pom file and can't inherit from Ignite's one (e.g.
> spring-boot-bom example [9] with all spring dependencies).
> 
> 3. Create the additional `ignite-resources` jar file to share
> checkstyle configuration, resources, tests resources and etc. for the
> Extension project.
> 
> 4. Configure Travis [10] to deploy a new snapshot version to the
> apache maven snapshots repository [5] each time the Ignite master
> branch is updated.
> 
> 5. Clean up the pom.xml Extensions file from profiles and dependencies
> that are not required to release extensions e.g. the release profile
> [11].
> 
> 6. Reuse the `apache-release` profile for preparing sources of the
> extensions during the release.
> 
> 
> WDYT?
> 
> 
> [1] https://github.com/apache/ignite/blob/master/parent/pom.xml#L35
> [2] https://github.com/apache/ignite-extensions/blob/master/parent/pom.xml#L36
> [3] 
> https://github.com/apache/ignite-extensions/blob/master/checkstyle/checkstyle.xml
> [4] https://github.com/apache/ignite/blob/master/checkstyle/checkstyle.xml
> [5] https://repository.apache.org/content/repositories/snapshots
> [6] 
> https://github.com/apache/ignite-extensions/tree/master/modules/aws-ext/modules/core/src/test/config
> [7] https://github.com/apache/maven-apache-parent/blob/apache-24/pom.xml#L375
> [8] 
> https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#bill-of-materials-bom-poms
> [9] https://github.com/snowdrop/spring-boot-bom/blob/sb-2.5.x/pom.xml#L31
> [10] 
> https://blog.travis-ci.com/2017-03-30-deploy-maven-travis-ci-packagecloud/
> [11] https://github.com/apache/ignite-extensions/blob/master/pom.xml#L242

Reply via email to