This document describes the current procedure for preparing an Ignite 3 release.
docker versiondocker buildx versiondotnet --versiondoxygen, no need to list them all, it`s easy enough to understand it from possible output errors.svn checkout https://dist.apache.org/repos/dist/dev/ignite dist-dev svn checkout https://dist.apache.org/repos/dist/release/ignite dist-release
~/.gradle/gradle.properties file with the following content:staging_user=*INSERT STAGING USERNAME HERE* staging_password=*INSERT STAGING PASSWORD HERE*(do NOT put secrets into
gradle.properties in the project dir - see Gradle docs for more details).For all the commands going forward:
{version} with the version number being released.{rc} with the current sequential number of the release candidate.{gpg} with your GPG key ID.{dist.dev} with the local path to the development distribution directory.{dist.release} with the local path to the release distribution directory.release-{version}-blocker, inform the community that all further critical release issues need to be labeled appropriately. It is not necessary, but it allows don't to miss important issues../gradlew :packaging:generateLicenseReport and check report ./packaging/build/reports/dependency-license.main branch.main branch to the next development version (e.g., x.y.z-SNAPSHOT):gradle.properties manually../gradlew :platforms:updateVersion to update platforms versions (.NET, C++, Python, etc.)ignite-{version}.ignite-{version} branch to the current release version, remove -SNAPSHOT suffix - same steps as in point 3.ignite-{version} branch head:git tag -a {version}-rc{rc} -m "{version}-rc{rc}"
git push --tags
~/.gradle/gradle.properties file with the following content:signing.keyId=*INSERT KEY HERE LAST 8 CHARS* signing.password=*INSERT PASSWORD HERE* signing.secretKeyRingFile=*INSERT KEY RING ABSOLUTE PATH HERE*(do NOT put secrets into
gradle.properties in the project dir - see Gradle docs for more details). To generate a secret key ring file use the following commandgpg --keyring secring.gpg --export-secret-keys > ~/.gnupg/secring.gpgShow key id command (you need only last 8 chars from printed key)
gpg -K
./gradlew publishAllPublicationsToMavenRepository
rm -rf {dist.dev}/{version}-rc{rc}
mkdir {dist.dev}/{version}-rc{rc}
./gradlew -PprepareRelease prepareRelease -Pplatforms.enable
./gradlew :packaging:docker -Ptarget_platform=linux/amd64 -Pplatforms.enable
docker save apacheignite/ignite:{version} -o packaging/build/release/ignite:{version}-amd64.tar
./gradlew :packaging:docker -Ptarget_platform=linux/arm64 -Pplatforms.enable
docker save apacheignite/ignite:{version} -o packaging/build/release/ignite:{version}-arm64.tar
Probably you will need some steps from multi-platform doc. Minimal steps during first release:docker buildx build --load -t linux/arm64 --builder=container . docker run --privileged --rm tonistiigi/binfmt --install all
https://ci.ignite.apache.org/buildConfiguration/ApacheIgnite3xGradle_Release_Build_OdbcRpmPackage https://ci.ignite.apache.org/buildConfiguration/ApacheIgnite3xGradle_Release_Build_7odbcDebPackagedownload artifacts, remove zip and sign all files with gpg key. After - copy into
{dist.dev}/{version}-rc{rc}cp packaging/build/release/* {dist.dev}/{version}-rc{rc}
cd {dist.dev}
svn add {version}-rc{rc}
svn commit -m “Apache Ignite {version} RC{rc}”
git tag if there are code related changes git tag -d {version}-rc{rc}; git tag -a {version}-rc{rc} -m '{version}-rc{rc}'; git push --tags.Perform the following actions ONLY after the vote is successful and closed.
rm -rf {dist.release}/{version}
mkdir {dist.release}/{version}
cp {dist.dev}/{version}-rc{rc}/* {dist.release}/{version}
cd {dist.release}
svn add {version}
svn commit -m “Apache Ignite {version}”
./gradlew aggregateJavadoc./gradlew :platforms:aggregateDotnetDocs./gradlew :platforms:doxygenCppClient./gradlew :packaging:docker -Ptarget_platform=linux/amd64,linux/arm64 -Pdocker_push -Pplatforms.enable (PMC only) otherwise you need to request credentials from PMC-only area in SVNfor i in *.nupkg; do dotnet nuget push $i -k API_KEY_HERE -s "https://nuget.org/"; done (PMC only) otherwise you need to request credentials from PMC-only area in SVN_src/_components/download-binary.pug and _src/_components/download-source.pug (and others if any were added). Copy the +downloadRow section and edit appropriately..pug file in _src/_blog.Add compatibility snapshot, OpenAPI spec and update igniteVersions.json for released version:
./gradlew postRelease./gradlew :ignite-runner:test --tests "org.apache.ignite.internal.configuration.compatibility.ConfigurationCompatibilityTest"{jira_ticket} Add compatibility data for Ignite {version}. Push the change to main branch.