Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Three packages will be provided:

  1. igniteignite3-cli — Ignite 3 CLI tool. Used if one wants to manage a remote cluster.
  2. igniteignite3-core — db — Ignite 3 core artifacts. Used if one wants to start nodes locally.
  3. igniteignite3 —  meta package that includes both igniteignite3-cli and igniteignite3-coredb.
  4. igniteignite3-odbc — package with ignite-odbc libs. 
  5. igniteignite3-native-libs — 
  6. igniteignite3-jdbc  — jdbc package 


Every package will be available as a downloadable ZIP file, and as OS-specific packages (RPM, DEB, Brew …).

...

ignite3-cli

This package can only be used to connect to a remote (or local) cluster. Once the package is installed, the user gets access to the Ignite CLI tool via the ignite command.

...

NOTE: It is possible to build an igniteignite3-cli executable with GraalVM native-image technology. This approach can provide a significant performance boost during CLI startup. This performance increase can be tested and presented to the community as part of this work.

...

ignite3-

...

db

This package provides an ability to run nodes on the local server. It includes:

  1. All required Ignite core artifacts with any dependencies
  2. Ignite-core or ignite-server ignite3-db (start, stop, restart)  script, both for Linux and Windows.
  3. LICENSE and NOTICE files per Apache requirements

...

Scripts can be used by a user directly, or by OS-level services. Mix-and-match of these two approaches should be disallowed.

...

ignite3

This is a meta package that includes everything listed for the other two packages.

...

ignite3-odbc

TBD. Currently IEP for odbc not ready.

...

ignite3-native-libs

TBD.

Open API spec

TBD


Publishing

...

  1. Various Gradle plugins that can make the build process easier.  Rpm/Deb, brew, SDKMan, Docker, etc.
  2. Currently, the Apache Ignite project contains many different validation scripts that need to be run manually or in TeamCity's automation scripts. Instead of all this, it can be unified in the gradle build scripts in order to be able to locally fully reproduce the build with CI.
  3. Since we have 3 different packaging targets (ignite3-db, ignite3-cli, ignite3) all packaging logic can be unified in 1 gradle script and just used in target modules.

...

NOTE: All formats and running options MUST provide possibility to run multiple instances of igniteignite3-core db module.

Zip archive

The file includes:

  1. All executables for Linux and Windows and MacOS
  2. LICENSE and NOTICE files per Apache requirements


Installation:

  1. Download the zip file
  2. Unzip into a folder
  3. Add executable into a PATH (optional, if yes – ask user)


Uninstallation v1:

  1. Stop ignite processes
  2. Remove a folder

Uninstallation v2:

  1. Cd into the folder
  2. Run uninstall script


Upgrade v1:

  1. Download the zip file
  2. Unzip into a folder
  3. Add executable into a PATH (optional) 

Upgrade v2:

  1. Download the zip file
  2. Cd into the folder with previous version
  3. Run upgrade executable and provide the zip file as an argument

...

Zip archive can be built with a maven/ gradle plugin or a script.

RPM/DEB packages

The package includes:

  1. All executables for Linux
  2. LICENSE and NOTICE files per Apache requirements


Installation:

  1. Download RPM/DEB package
  2. Run rpm -i <package> / apt install <path-to-deb>/dpkg -i <package>
  3. After installation the executable is represented as system service (service file) and can be run with system ignite start command. 


Uninstallation:

  1. Run rpm -e <package> / dpkg --r <package>


Upgrade:

  1. Run rpm -U <package> / dpkg -i <package>

...

  1. User add custom repository 
    1. yum install https://yum-rep-address/repo-info.rpm
    2. add-apt-repository https://repo-address
  2. Install required package
    1. yum install ignite igniteignite3-cli
    2. apt install ignite igniteignite3-cli


NOTE: Also in the future it is necessary to consider the possibility of adding our packages to the standard repositories of common distributions.

...

There is also a way to create Formula via a gradle plugin https://github.com/jreleaser/jreleaser

Installation:

  1. Add custom github repo to the brew: brew tap apache/ignite-3
  2. Run brew install <package>
  3. After installation the executable is represented as command line app (ignite (CLI), ignite-core or ignite-server ignite3-db (start, stop, restart))


Uninstallation:

  1. Run brew uninstall <package>


Upgrade:

  1. Run brew upgrade <package>

...

A lot of product publishing in SDKMan java, kotlin, scala, maven, gradle, sbt, Scala CLI, Quarkus CLI, Apache ActiveMQ, Flink, Spark, etc.


InstallationInstall:

    sdk install ignite 3.0.0-SNAPSHOT (or another version)

Uninstallation:

ignite3 ${version}

Uninstall:

    sdk uninstall ignite3 sdk uninstall ignite ${version} 

Upgrade:

    sdk upgrade ignite3

List:

    sdk list ignite (or igniteignite3-cli)


Publishing process is described here and it's not much different from other package managers.

Also publishing process can be simplified by using https://github.com/jreleaser/jreleaser or https://github.com/sdkman/sdkman-vendor-gradle-plugin

Docker

For the igniteignite3-core db module we also should build a Docker image which can be used for easy Apache Ignite startup.

...

Also https://jreleaser.org/guide/latest/examples/micronaut-cli-app.html provides native support of Micronaut CLI project which is Apache Ignite CLI.

Risks and Assumptions

TDB

// Describe project risks, such as API or binary compatibility issues, major protocol changes, etc.

Discussion Links

// Links to discussions on the devlist, if applicable.

Reference Links

// Links to various reference documents, if applicable.TDB

Tickets

// Links or report with relevant JIRA tickets.