Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Add ARM64 Docker build step with JDK11


Excerpt

This page describes process and provides instructions to release manager on how to release Apache Ignite

Table of Contents

...


Following picture demonstrates release stages sequence.

Gliffy Diagram
1
nameIgnite Release Process
pagePin4


Table of contents

Table of Contents

P0. Initializing

Release phases dates are discussed, as release manager during the first discussion. Release Manager should be PMC Member.

...

Expand

Following setup is performed only once.  Check README.txt from https://github.com/apache/ignite-release/tree/master/scripts This readme file contains some additional requirement and setup steps.


0.3.1. If you don’t have your Apache key set up, please see https://www.apache.org/dev/openpgp.html#home on how to generate a new key.

Steps to be followed:

  • Setup gpg home (optional) and configuration file (gpg.conf) according to the page.
  • Check version and settings using `gpg --version` (version >1.4.1, SHA512 is recommended).
  • Generate new key pair `gpg --gen-key` Parameters: RSA/4096/never expires/use your name and apache email/comment: `CODE SIGNING KEY`. Let's suppose generated key name is 612654F7.
  • Check preferences using `gpg --edit-key 612654F7` and sub-command `showpref`

0.3.2. Export key to Apache SVN. See section 'Create/Import your pgp secret key' in Readme.txt in https://github.com/apache/ignite-release/tree/master/scripts

  • Make sure you have SVN client. You can install TortoiseSVN for convenience (don’t forget to select command line tools for having svn executable). Alternatively, you can install SVN package from https://subversion.apache.org/packages.html

Steps to be followed:


No Format
gpg --list-sigs 612654F7 >> KEYS
gpg --armor --export 612654F7 >> KEYS


0.3.3. Export the key to a Public Key Server

To publish key follow instructions from https://www.apache.org/dev/openpgp.html#publish-in-web-space

You may use

No Format
gpg --send-key 612654F7

alternatively, you

- can export key to an .asc file (gpg --armor --export 6F6F6F6F > key.asc)

- and submit the key file content manually to a public key server.

For example, at MIT server you can just paste asc file content to a text field and submit: to http://pgp.mit.edu/ or to http://keyserver.ubuntu.com/

...

The first step to be done to enter scope finalization phase it to create a branch in Ignite code base (origin). This moment be precisely the same with as the start of P1.1 

1.2.1. Create release branch, e.g ignite-2.8, push it to the ASF repository. (optional) consider creating PR for release, having PR is convinient convenient because GitHub will notify you about commits to the branch.

...

1.2.4. Create scheduled build triggers for daily Run All (Nightly) run. Usually, triggers are set up using Apache Ignite TeamCity Bot (triggering of builds there depends on agent availability). Use an intellectual trigger to trigger release branch adaptively, or ask on the dev. list to add.

1.2.5. Create/schedule the nightly release build triggering – Releases Apache Ignite Nightly (may require TC permissions).

End of this phase is scope freeze.  

...

This phase is some time to complete the implementation of features from the initial scope. In parallel with implementation, some less essential fixes and features are moved to the next release. 

End of rampdown ramp-down is code freeze. Code freeze is based on dates, but the actual time of freeze is determined by announcing.

...

P4. Vote preparation (building release candidate)

Gliffy Diagram
displayNameP4-Prepare RC candidate
nameP4-Prepare RC candidate
pagePin25

Once all changes are applied, it is possible to prepare a release candidate. It is possilbe to build several release candidates without starting a vote. First RCs can have part of changes scheduled for release.

...

4.0.3. Update RELEASE_NOTES.txt and commit Release Notes changes into master and a release branch.

4.1

...

4.1.1. Update release branch version in maven poms and assembly

Update version in the release branch (execute the script from Ignite project root directory, you can use WSL or GitBash on Windows): 

No Format
./scripts/update-versions.sh 2.7.6

 and commit changes. This step is essential for release because later the source code will be published into SVN. Version update is required to be committed before RC building.

4.1.2. Update year in copyright messages

 Double-check that year in copyright messages is correct. If the release is minor and based on an older branch, this branch can contain an outdated value of the year. Fix if needed. Example commit of updating year.

 Following step is not actual since 2.8, there is the feature for an auto-generating year: Update copyright year manually in IgniteVersionUtils

4.1.3. Update DEB & RPM package version

Version of packages update is not automated since it requires to add verison to history to update it. Update is more or less similar to this commit

4.1.3.1. Update packaging/deb/changelog, add similar lines to the top of the files (version, comment, mainteiner, date):

No Format
apache-ignite (2.7.6) unstable; urgency=low

  * Updated Apache Ignite to version 2.7.6

 -- Petr Ivanov <mr.weider@gmail.com>  Fri, 20 Aug 2019 20:58:44 +0300

4.1.3.2. Update packaging/rpm/apache-ignite.spec, change current version; insert new line to changes log:

No Format
Name:             apache-ignite
Version:          2.7.6 

...

Ensure Documentation Readiness and Accouncement Blog Post Activity


  • Check that Ignite technical documentation and APIs are fully ready for the release. Documentation has to be released together and on the same day with the rest of the release artifacts (binaries, Docker images, etc.) once the vote passes.


  • Confirm that there is a community member who will be working on an announcement blog post for blogs.apache.org to cover major changes coming in the version. Ideally, the blog post should be published and added into an announcement email the same day we'll be releasing release artifacts (binaries, documentation, etc.). That's an example of an Ignite announcement article.

4.2 Update versions and year for release

4.2.1. Update release branch version in maven poms and assembly

Update version in the release branch (execute the script from Ignite project root directory, you can use WSL or GitBash on Windows): 

No Format
./scripts/update-versions.sh 2.7.6

 and commit changes. This step is essential for release because later the source code will be published into SVN. Version update is required to be committed before RC building.

4.2.2. Update documentation version

In the release branch, open the docs/_config.yml file and update the version property with the release number.

4.2.3. Update year in copyright messages

 Double-check that year in copyright messages is correct. If the release is minor and based on an older branch, this branch can contain an outdated value of the year. Fix if needed. Example commit of updating year.

 Following step is not actual since 2.8, there is the feature for an auto-generating year: Update copyright year manually in IgniteVersionUtils

4.2.4. Update DEB & RPM package version

Version of packages update is not automated since it requires to add verison to history to update it. Update is more or less similar to this commit

4.2.4.1. Update packaging/deb/changelog, add similar lines to the top of the files (version, comment, mainteiner, date):

No Format
apache-ignite (2.7.6-1) unstable; urgency=low

  * Updated Apache Ignite to version 2.7.6

 -- Petr
No Format
* Fri 20 Aug 2019 Peter Ivanov <mr.weider@gmail.com> - 2.7.6
- Updated Apache Ignite to version 2.7.6

4.1.3.3. (optional) ask for review

4.1.3.4. Commit package version changes into master and a release branch.

4.2. Prepare RC on Teamcity

 Wed, 20 Aug 2019 20:58:44 +0300

Check dates are correct, and version is postfixed with '-1' - it is package version number, it is required by format

4.2.4.2. Update packaging/rpm/apache-ignite.spec, change current version; insert new line to changes log:

No Format
Name:             apache-ignite
Version:          2.7.6 


and add lines similar to following after change log

No Format
* Fri 20 Aug 2019 Peter Ivanov <mr.weider@gmail.com> - 2.7.6-1
- Updated Apache Ignite to version 2.7.6

Make sure dates are correct, add package build number, '-1' at the end of package version.

4.2.3.3. (optional) ask for review on the list.

4.2.3.4. Commit package version changes into master and a release branch.

4.3. Prepare RC on Teamcity

4.3.1. Run TC Main Release Build

Run [RELEASES] Apache Ignite / Main [4.2.1. Run [RELEASES] Apache Ignite / Main [1] Release Build for ignite-x.y or for ignite-x.y.z branch. You will need to enter version number (value if x.y.0 or x.y.z), and specify release candidate number. For testing purposes, it is recommended to use rc0. You may several times re-build same rc- number.

4.

...

3.2. Download and check release build

Download and unzip release archive. It can be found at "Artifacts" tab on build page. Example:

Expand

Code Block
languagebash
themeRDark
linenumberstrue
~/download:[]$ unzip release-2.7.0-rc0.zip

4.2.3. Write down build number (Teamcity identification of builds, usually starts from # symbol). This number will be re-used in future steps.

...


Do some checks related to release (full list of check to be done can be found in section 5.1):

  • Validate version of Ignite, RC number, and packages versions (from 'packages' folder) are correct.

...

  • Unpack build provided with RC: svn/vote/apache-ignite-

...

  • {$version}-bin.zip . Run Ignite node from resulting apache-ignite-

...

  • {$version}-bin/bin folder.
  • Validate node starts, correct version, and copyright messages produced.

4.

...

4. Sign and deploy RC using vote preparation scripts

Run vote scripts to prepare RC before voting. You may skip steps 4.34.1 & step 4.34.2 in case you want to run some testing of release. In case release build was made for testing-only purposes, you can go to step 4.34.3 in this section.

4.

...

4.1. Run script to create VCS tag in git 

Run script vote_1[git]create_rc_tag.sh  Example of script output:

...

Please, check corresponding git tag is created and is available in ASF repository: https://gitbox.apache.org/repos/asf?p=ignite.git;a=tags

4.

...

4.2. Create & close (publish) staging repository

Note: If you've already uploaded staging, you should remove it from nexus - https://repository.apache.org/#stagingRepositories

...

Once repository is closed, write down a link to content, e.g. https://repository.apache.org/content/repositories/orgapacheignite-1464/ This link is useful for vote thread and sharing with others, who is going to test RC.

4.4.3. Prepare signed distribution for SVN

4.4.3.1. Sign DEB/RPM packages

Pre-build packages can be found at 'release-2.7.6-rc0\packages' folder of release candidate archive. 

Building packages locally supported only on Linux, WSL not supported. Steps to build from scratch (optionally):

Expand

Note: The following script is locale-specific. You should execute it on the en locale

Run script ./vote_3_step_1\[packages\]\[optional\]build.sh . Example of output: 

Code Block
languagebash
themeRDark
$ ./vote_3_step_1\[packages\]\[optional\]build.sh 
...

dpkg-deb: building package 'apache-ignite' in '../apache-ignite_2.7.0-1_all.deb'.
copied '/tmp/tmp.rEePHrMMWU/apache-ignite_2.7.0-1_all.deb' -> '/home/dragon/download/release/packaging/apache-ignite_2.7.0-1_all.deb'
удалён '/tmp/tmp.rEePHrMMWU/apache-ignite_2.7.0-1_all.deb'
Removing temporary work directories: /tmp/tmp.rEePHrMMWU 

=== Run time: 0h:00m:36s ===

packaging/apache-ignite-2.7.0-1.noarch.rpm:
Processing packaging/apache-ignite_2.7.0-1_all.deb...
gpg: все значения, переданные в '--default-key', игнорируются
Signed deb packaging/apache-ignite_2.7.0-1_all.deb
mkdir: создан каталог 'packaging/pkg'
renamed 'packaging/apache-ignite-2.7.0-1.noarch.rpm' -> 'packaging/pkg/apache-ignite-2.7.0-1.noarch.rpm'
renamed 'packaging/apache-ignite_2.7.0-1_all.deb' -> 'packaging/pkg/apache-ignite_2.7.0-1_all.deb'


...

Build script will sign artifacts automatically (in case of build locally), but TC pre-build packages need to be signed by Apache Ignite PMC release manager key. 

Find your public key ID by running

...

No Format
rpm --define "_gpg_name 612654F7" --addsign packages/pkg/*.rpm 

Enter pass phrase:
Pass phrase is good.
packages/pkg/apache-ignite-2.7.5-1.noarch.rpm: 

...

No Format
dpkg-sig -k 612654F7 --sign builder packages/pkg/*.deb

Processing packages/pkg/apache-ignite_2.7.5-1_all.deb... 
You need a passphrase to unlock the secret key for
user: "Apache User (CODE SIGNING KEY) <login@apache.org>"
4096-bit RSA key, ID 612654F7, created 2019-03-19

Signed deb packages/pkg/apache-ignite_2.7.5-1_all.deb

You can validate that file modification time was changed after singing. 


4.

...

4.3.2. Sign artfacts

Run script vote_3_step_2[pgp]sign_artifacts.sh . Example of script output

...

Please check results at ./svn/vote. Optionally you may also check hash/sign using https://www.apache.org/info/verification.html

4.

...

4.3.3. Deploy artfacts to SVN

Run scrupt script vote_3_step_3[svn]deploy_artifacts.sh. This script will upload your local artifacts to a a development area under e.g. https://dist.apache.org/repos/dist/dev/2.7.0-rc0 which is used for staging releases candidates.

Each ASF committer has a write access to this area – WHERE CAN I STAGE A RELEASE CANDIDATE?

Example of output:

Expand


Code Block
languagebash
themeRDark
$ ./vote_3_step_3\[svn\]deploy_artifacts.sh 
RC 2.7.0-rc0
Adding (binary)  svn/vote/apache-ignite-2.7.0-src.zip
Adding           svn/vote/apache-ignite-2.7.0-src.zip.asc
Adding           svn/vote/apache-ignite-2.7.0-src.zip.sha512
Adding (binary)   svn/vote/apache-ignite-fabric-2.7.0-bin.zip
Adding           svn/vote/apache-ignite-fabric-2.7.0-bin.zip.asc
Adding           svn/vote/apache-ignite-fabric-2.7.0-bin.zip.sha512
Adding (binary)   svn/vote/apache-ignite-hadoop-2.7.0-bin.zip
Adding           svn/vote/apache-ignite-hadoop-2.7.0-bin.zip.asc
Adding           svn/vote/apache-ignite-hadoop-2.7.0-bin.zip.sha512
Committing transaction...
Committed revision 29664.
Adding (binary)  packaging/pkg/apache-ignite-2.7.0-1.noarch.rpm
...



...

Check binaries and sources are available in the SVN: https://dist.apache.org/repos/dist/dev/ignite/ 

4.5 Run additional TC steps

4.5.1. Verify

...

file changes using TeamCity

Compare with previous release.

There are There is TC task to generate for generating report with containing difference comparing current release with previous.

https://ci.ignite.apache.org/viewType.html?buildTypeId=ApacheIgniteReleaseJava8_IgniteRelease72CheckFileConsistency

...

Expand


For 2.7 release "apache-ignite-hadoop" removed and some new dependencies introduced for a benchmarks.

4.5

...

.2. Run automated release check step on TC

Run '[3] Apache Ignite Release Vote | Check RC' Using Teamcity build number from step 4.2.1, run https://ci.ignite.apache.org/viewType.html?buildTypeId=/buildConfiguration/ApacheIgniteReleaseJava8_PrepareVote3BuildNuGetPackagesPrepareVote4CheckRcLicensesChecksum

This will produce .nupkg files as build artifcats, and push the packages to https://www.myget.org/F/apache-ignite-staging/ for easier testing.step will validate hashes, Javadoc, build from sources, licenses. So it it required to run it to simplify/skip some local checks from section 5.1.

Expand

Image Added


4.6  Sending 4.6  Sending Release For Vote

After the community agrees that the codebase is ready for a release, release manager should send the release for a vote.

...

Expand


Code Block
languagexml
Dear Community,

WeI have uploaded release candidate to
https://dist.apache.org/repos/dist/dev/ignite/2.7.6-rc1/
https://dist.apache.org/repos/dist/dev/ignite/packages_2.7.56-rc3rc1/
 
The following staging can be used for a dependent project for testing:
https://repository.apache.org/content/repositories/orgapacheignite-1438/
 
This is verythe second importantmaintenance release containing initial versions of Ignite.NET
and Ignite C++ and many other important features.
for 2.7.x with a number of fixes.
 
Tag name is
1 2.57.0.final-rc3

1.5.06-rc1: https://gitbox.apache.org/repos/asf?p=ignite.git;a=tag;h=refs/tags/2.7.6-rc1
 
2.7.6 changes:
 * Ignite.NET: Initial Release.
* Ignite C++: Initial Release.
* Massive performance improvements for cache operations and SQL.
* Added new binary cache object marshalling implementation.
* Added IgniteSemaphore data structure.
* Added MQTT Streamer.
* Added Twitter Streamer.
* Added Ignite Sink (integration with Apache Flume).
* Fixed optimistic serializable transactions: implemented "deadlock-free"
locking algorithm.
* Fixed failover for continuous queries.
* Fixed compilation and runtime errors under OpenJDK and IBM JDK.
* Fixed Integer.size limitation for cache.
* Fixed and improved cache types configuration.
* Fixed cache rebalancing.
* Many stability and fault-tolerance fixes.
* Added example to demonstrate the usage of EntryProcessor.

Complete list of closed issues:
https://issues.apache.org/jira/issues/?jql=project%20%3D%20IGNITE%20AND%20fixVersion%20%3D%201.5%20AND%20status%20%3D%20closed

DEVNOTES
https://git-wip-us.apache.org/repos/asf?p=ignite.git;a=blob_plain;f=DEVNOTES.txt;hb=refs/tags/1.5.0.final-rc3

RELEASENOTES
https://git-wip-uswork directory is now set to the current user's home directory by default, native persistence files will not be stored in the Temp directory anymore
 * Fixed a bug that caused a SELECT query with an equality predicate on a part of the primary compound key to return a single row even if the query matched multiple rows
 * Fixed an issue that could cause data corruption during checkpointing
 * Fixed an issue where a row size was calculated incorrectly for shared cache groups, which caused a tree corruption
 * Reduced java heap footprint by optimizing GridDhtPartitionsFullMessage maps in exchange history
 * .NET: Native persistence now works with a custom affinity function
 * Fixed an issue where an outdated node with a destroyed cache caused the cluster to hang
 * Fixed a bug that made it impossible to change the inline_size property of an existing index after it was dropped and recreated with a different value
 
RELEASE NOTES: https://gitbox.apache.org/repos/asf?p=ignite.git;a=blob;f=RELEASE_NOTES.txt;hb=ignite-2.7.6
 
Complete list of resolved issues: https://issues.apache.org/jira/issues/?jql=project%20%3D%20IGNITE%20AND%20fixVersion%20%3D%202.7.6 
 
DEVNOTES https://gitbox.apache.org/repos/asf?p=ignite.git;a=blob_plain;f=RELEASE_NOTESDEVNOTES.txt;hb=refs/tags/1.5.0.final-rc3
ignite-2.7.6
 
The vote is formal, see voting guidelines https://www.apache.org/foundation/voting.html
 
+1 - to accept Apache Ignite 12.57.0.final6-rc3rc1
0 - don't care either way
-1 - DO NOT accept Apache Ignite 1Ignite 2.57.0.final6-rc3rc1 (explain why)
 
See notes on how to verify release here https://www.apache.org/info/verification.html
and https://cwiki.apache.org/confluence/display/IGNITE/Release+Process#ReleaseProcess-P5.VotingonReleaseandReleaseVerification
 
This vote will be open for 72 hoursat least 3 days till Sun MayAug 2325, 1418:00 UTC.
 https://www.timeanddate.com/countdown/to?year=2019&month=58&day=2325&hour=1418&min=0&sec=0&p0=utc-1


Examples of Voting threads Vote on 2.7.5; Vote on 2.7.0

...

All community members are encouraged to verify release. PMC members have a binding vote, but each vote matters.

5.1

...

Release Candidate Verification


The following

...

Following list are steps, which can be done by each member, see also https://www.apache.org/info/verification.html

It is not a complete list, community members can test any module or feature of the product.

  • Check that all JIRA issues for the specific version are Closed (example JQL: `project = IGNITE AND fixVersion <= 1.7 AND status != closed`).

    Code Block
    languagebash
    curl "https://issues.apache.org/jira/rest/api/2/search?jql=project=ignite%20AND%20status%20ignite+AND+status+!=%20closed%20AND%20fixVersion<+closed+AND+fixVersion<=1.7&fields=summary" | grep '"total":0,"issues":\[\]'


  • Check that sha1 & md5 sha512 checksum is correct. 

    Code Block
    languagexml
    sha1sumsha512sum -c *.sha1
    md5sum -c *.md5sha512


  • Check that signature is correct.

    Code Block
    languagexml
    gpg --verify-files *.asc


  • Check that version is correct.
  • Check licenses from the source code.

    Code Block
    languagexml
    mvn clean validate -DskipTests=true -P check-licenses


  • Build the binary releases from the source code.

    Code Block
    languagexml
    mvn clean package -DskipTests -Dignite.edition=hadoop
    mvn clean package -DskipTests


  • Build Ignite.NET binaries and NuGet packages

    Code Block
    languagebash
    cd modules\platforms\dotnet
    build -skipJava


  • Do some trivial checks, e.g. start local topology, run several examples from binaries gained at previous step. Unpacked binaries can be found at sources/target/release-package

...

Run release_1[svn]move_binaries.sh (Note: Only PMC members have write access to the release repository). Example of output

Expand


Code Block
languagebash
themeRDark
$ ./release_1\[svn\]move_binaries.sh

# Releasing 2.7.5-rc4 :: Binaries #
Committing transaction...
Committed revision 34469.

=========================================================
Artifacts should be moved to Apache Ignite's release site
Please check results at:
 * binaries: https://apache.org/dist/ignite/2.7.5


Manual alternative of this script is move release to https://dist.apache.org/repos/dist/release/ignite/<version>  

Code Block
languagexml
svn mv https://dist.apache.org/repos/dist/dev/ignite/<version><rc> https://dist.apache.org/repos/dist/release/ignite/<version> -m "Release <version>"


...

During running script you will be asked for bintray credentials auth API key to upload. Ask Infra to provideLogin to the https://apache.jfrog.io/ui/ with Apache ID credentials and get the API key from the authentication settings.

Run script release_2[bintray]upload_packages.sh, example of output

Expand


Code Block
languagebash
themeRDark
$ ./release_2\[bintray\]upload_packages.sh
# Releasing 2.7.5-rc4 :: Packages #
Please, enter credentials for accessing Bintray RPM repository
Username:


6.2.3. Deploy (java,c++,.net,scala)

...

API documentation to the website

Run Script release_3[svngit]deploy_docs_to_site.sh

This script will unzip and upload file by file to SVN related to Apache Ignite site. This may take several minutes to complete. You may need to enter Apache credentials for committing changes. Example of execution:checkout ignite-website from GIT, copy API documentation, and push changes back.

Check results availability at https://gitbox.apache.org/repos/asf?p=ignite-website.git;a=tree;f=releases;hb=refs/heads/master

6.2.4. Create Release tag from RC tag

Run script release_4[git]create_release_tag.sh Example of output

Expand


Code Block
languagebash
themeRDark
Releasing 2.7.5-rc4
Creating new tag...
Username for 'https://gitbox.apache.org': dpavlov
Expand
Code Block
languagebash
themeRDark
$ ./release_3\[svn\]deploy_docs_to_site.sh
# Releasing 2.7.5-rc4 :: Packages #
/// list of files///
Uploading to svn ...
Authentication realm: <https://svn.apache.org:443> ASF Committers
Password for 'dpavlov': ....
/// list of files///
Documentation should be uploaded to site repository
Please check results at
https://svn.apache.org/repos/asf/ignite/site/trunk/releases

This step can be done manually 

Upload documentation to https://svn.apache.org/repos/asf/ignite/site/trunk/releases/<version>

Code Block
languagexml
svn import apache-ignite-fabric-<version>-bin/docs https://svnhttps://dpavlov@gitbox.apache.org':
Counting objects: 1, done.
Writing objects: 100% (1/1), 160 bytes | 0 bytes/s, done.
Total 1 (delta 0), reused 0 (delta 0)
remote: To git@github:apache/ignite.git
remote: * [new tag] 20ff216a5cc4e05cdd92757e16adf38c12a2c9e0 -> 2.7.5
remote: Syncing refs/tags/2.7.5...
remote: Sending notification emails to: ['"commits@ignite.apache.org" <commits@ignite.apache.org>']
To https://gitbox.apache.org/repos/asf/ignite/site/trunk/releases/<version> -m "new Release (<version>)" 

...

.git
* [new tag] 2.7.5 -> 2.7.5

======================================================
Release tag should be created.
Please check results at
https://gitbox.apache.org/repos/asf

...

?p=ignite.git;a=tags

This step can be done manually :

Create Release tag from RC

...

tag

...

Expand
Releasing 2.7.5-rc4 Creating new tag... Username for '
Code Block
languagebash
themeRDark
xml
git tag -a <version> -m "<version>"
git push origin <version>


Please check results at https://gitbox.apache.org

...

/repos/asf?p=ignite.git;a=tags

6.3. Manual release steps

6.3.1. Release staging repository

Release maven staging (https://maven.apache.org/developers/release/maven-project-release-procedure.html).

Go to Nexus UI https://repository.apache.org/#stagingRepositories, login using Apache credentials and release repository for accepted release candidate. You can release it by pressing the Release button (provided that you have successfully closed the staging repository).

This will move the components into the release repository of OSSRH where it will be synced to the Central Repository (see also https://central.sonatype.org/pages/releasing-the-deployment.html#close-and-drop-or-release-your-staging-repository)

The sync into Maven Central central staging from repository.apache.org occurs every 4 hours. There is a separate hourly schedule that runs which pushes from staging to the other central machines, and then updates the indexes.

  1. If release step for staging was successful you can access artifacts using service repository:  https://repository.apache.org/service/local/repositories/releases/content/org/apache/ignite/ignite-core/2.7.5/
  2. Once repository is synced you can see result in https://repo.maven.apache.org/maven2/org/apache/ignite/ignite-core/
  3. With some delay artifact will be available on the site https://mvnrepository.com/artifact/org.apache.ignite/ignite-core

6.3.2. Update sources snapshot version in the master branch

Execute the script from Ignite project root directory, this will update version in the master branch : 

No Format
./scripts/update-versions.sh 2.9.0-SNAPSHOT

 and commit changes. This step is not required if minor release was issued,e.g. 2.7.5

6.3.2.1 Update sources snapshot version in the ignite-extensions repository

The dependency of ignite-extensions must be updated according to the new version in the master branch.

See the example below:

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keyIGNITE-13993


6.3.4. Publish technical documentation

Publish the technical documentation on the website: How to Document - Publishing to the website

6.3.5

This step can be done manually :

Create Release tag from RC tag

Code Block
languagexml
git tag -a <version> -m "<version>"
git push origin <version>

Please check results at https://gitbox.apache.org/repos/asf?p=ignite.git;a=tags

6.3. Manual release steps

6.3.1. Release staging repository

Release maven staging (https://maven.apache.org/developers/release/maven-project-release-procedure.html).

Go to Nexus UI https://repository.apache.org/#stagingRepositories, login using Apache credentials and release repository for accepted release candidate. You can release it by pressing the Release button (provided that you have successfully closed the staging repository).

This will move the components into the release repository of OSSRH where it will be synced to the Central Repository (see also https://central.sonatype.org/pages/releasing-the-deployment.html#close-and-drop-or-release-your-staging-repository)

The sync into Maven Central central staging from repository.apache.org occurs every 4 hours. There is a separate hourly schedule that runs which pushes from staging to the other central machines, and then updates the indexes.

  1. If release step for staging was successful you can access artifacts using service repository:  https://repository.apache.org/service/local/repositories/releases/content/org/apache/ignite/ignite-core/2.7.5/
  2. Once repository is synced you can see result in http://repo2.maven.org/maven2/org/apache/ignite/ 
  3. With some delay artifact will be available on the site https://mvnrepository.com/artifact/org.apache.ignite/ignite-core

6.3.2. Update sources snapshot version in the master branch

Execute script from Ignite project root directory, this will update version in the master branch : 

No Format
./scripts/update-versions.sh 2.9.0-SNAPSHOT

 and commit changes. This step is not required if minor release was issued,e.g. 2.7.5

6.3.4. Release documentaion on readme.io

Release all the documentation (Java, .NET, C++, etc.) on https://apacheignite.readme.io/docs

If you don't have persmission to edit docs, request permissions on the dev.list. If you get permissions go to admin panel https://dash.readme.io/nite

Select project, find versions dropdown, select 'Manage versions'.

If verison is not created before: Click 'Create version', enter release number, prefix 'v' is not required. During process of creation you will be asked which version is to be used as base (fork) version. Enter version base release there.

If version exists, click to main version.

Repeat this process for all documentation projects for Ignite: Java, C#/.NET, C++, SQL, Integrations*, Ignite for Spark, Tools.  Create version 

6.3.5. Update reference to docs from site, SEO updates

Update the latest doc reference on ignite.apache.org:

  1. Update the new version number on the .htaccess file: RewriteRule ^releases/latest/(.*)$ /releases/2.9.0/$1 [L]
  2. Add the following tag to all .html files: <link rel="canonicalhref="https://ignite.apache.org/releases/latest/LANGUAGE-DIR/FILENAME.html" />
  3. Use the script that automates the update or contact Mauricio Stekl (mauricio@gridgain.com) who can assist with this step.
  4. Commit changes to the SVN. A patch will update all documents may have huge size, so console SVN client is recommended.

This script do some Search engine optimization (SEOupdates to new/old .html files, like adding NOINDEX metatag to older version; add canonical URL to latest docs; and add GA code.  

6.3.6

. Prepare HTML release notes from text release notes

Checkout SVN GIT repository for Apache Ignite site: https://svngitbox.apache.org/repos/asf/ignite/site/trunkFor speed up this operation make sure to limit branches in checkout operation.-website.git

Just copy-paste latest release notes from previous release, replace text formatting with headers, lists items.

Place these notes to corresponding release folder, for example releases/2.7.5. If folder is absent, check results of step 6.2.3.

Commit and push changes. File should be available on the site automatically. 

...

...

To update https://ignite.apache.org with new download links.

Update https://svnOnce the new release is published to dist.apache.org/repos/asf/ignite/site/trunk/download.html 

  • add new release row to HTML tables
    • source releases
    • binary releases
  • and mark prepared release as latest, if necessary; remove latest mark from previous release.
  • add documentation (guide) link to readme.io docs from step 6.3.5.

...

release wait a day or so for mirrors to catch up. 

After the release was propagated across all the mirrors, update the "Source Releases" and "Binary Releases" sections of the website downloads page:

...

  • as part of the URL.
  • Mark the new release as the latest one.
  • Change the previous latest release record to link to https://archive.apache.org/ server. 
  • Add references to the release notes, API and technical documentations.


6.3.7. Update version for generating users advices to update

Find `latest` text file in GIT repository for Apache Ignite site.

Update Ignite version in this file. Commit changes and check result at https://ignite.apache.org/latest

6.3.8. Mark JIRA version as released

Go to JIRA project administration, select Apache Ignite, select Versions, select appropriate version and select Actions->Release.

6.3.9. Prepare docker image

This section Intended for preparing a docker image for https://apacheignite.readme.io/docs/docker-deployment

Prerequisite: Docker installed. For example, for Windows you can download https://docs.docker.com/docker-for-windows/ You may need to register at docker hub.  

Credentials can be found in SVN:
https://svn.apache.org/repos/private/pmc/ignite/credentials/hub.docker.com.txt (PMC only)

You can get a binary distribution from the 'vote' folder of the release candidate.

Follow instructions from the README file and Dockerfile are available at:
https://github.com/apache/ignite/tree/master/deliveries/docker/apache-ignite

To build images run the following commands (insert correct release number):

Code Block
languagebash
docker build . -f ./x86_64/Dockerfile -t apacheignite/ignite:2.15.0 -t apacheignite/ignite:latest
docker build . -f ./x86_64/Dockerfile -t apacheignite/ignite:2.15.0-jdk11 --build-arg JDK_VERSION=11 
docker build . -f ./s390x/Dockerfile -t apacheignite/ignite:2.15.0-jdk11-s390x --build-arg IGNITE_VER=2.15.0
docker buildx build . -f ./arm64/Dockerfile -t apacheignite/ignite:2.15.0-arm64 --push --platform linux/arm64
docker buildx build . -f ./arm64/Dockerfile -

...

Replace dist url to archive url for previous release. For example href="[preferred]/[distdir]/2.7.0/apache-ignite-2.7.0-src.zip" => href="https://archive.apache.org/dist/ignite/2.7.0/apache-ignite-2.7.0-src.zip"

Commit changes, check result at https://ignite.apache.org/download.cgi 

Check provided links work fine.

6.3.8. Update version for generating users advices to update

Find `latest` text file in SVN repository for Apache Ignite site.

Update Ignite version in this file. Commit changes and check result at https://ignite.apache.org/latest

6.3.9. Mark JIRA version as released

Go to JIRA project administration, select Apache Ignite, select Versions, select appropriate version and select Actions->Release.

6.3.10. Prepare docker image

This section Intented for preparing docker image for https://apacheignite.readme.io/docs/docker-deployment

Prerequisite: Docker installed. For example, for Windows you can download https://docs.docker.com/docker-for-windows/ You may need to register at docker hub.  

Dockerfile is available at https://github.com/apache/ignite/tree/master/docker/apache-ignite

Credentials can be found in SVN https://svn.apache.org/repos/private/pmc/ignite/credentials/hub.docker.com.txt (PMC only)

You can get binary distribution from vote folder of the release candidate.

Follow instructions from README file https://github.com/apache/ignite/blob/master/docker/apache-ignite/README.txt

To build image run following command (insert correct release number):

Code Block
languagebash
docker build . -t apacheignite/ignite:2.7.5 -t apacheignite/ignite:latest15.0-jdk11-arm64 --push --platform linux/arm64 --build-arg JDK_VERSION=11

This build takes a This build take distribution from some folder named like apache-ignite*

You can validate image images created by calling

Code Block
languagebash
docker images

...

Run

Code Block
languagebash
docker push apacheignite/ignite:2.15.0
docker push apacheignite/ignite:2.15.0-jdk11
docker push apacheignite/ignite:2.7.515.0-jdk11-s390x
docker push apacheignite/ignite:latest

Check results at https://hub.docker.com/r/apacheignite/ignite

6.3.

...

10. GCE & AWS virtual machines

6.3.

...

10.2. AWS deployment

Todo: add description of steps ? 

In addition, update the links to the images on the following documentation pages whenever is needed:

https://apacheignite.readme.io/docs/aws-deployment

6.3.

...

10.3. GCE deployment

Todo: add description of steps ? 

...

Prepare the cloud images and update links to them here https://ignite.apache.org/download.cgi#docker.

6.3.11. Delete previous release from dist and dev SVN directories

Old releases should be archived. Delete previous releases from https://dist.apache.org/repos/dist/release/ignite/.apache.org/download.cgi#docker.

6.3.12. Delete previous release from dist and dev SVN directories

Delete previous releases from 

. (PMC only): 

Code Block
languagebash
svn rm -m "Archiving release X.Y.Z" https://dist.apache.org/repos/dist/release/ignite/X.Y.Z/ || true

Replace .., replace their download URLs by https://archive.apache.org/dist/ignite/...

Delete unsucessfull release candidates and packages (if any) from dev section of Apache SVN repository https://dist.apache.org/repos/dist/dev/ignite/

6.3.

13

12. Upload NuGet packages to nuget.org

Retrieve all .nupkg files from build artifacts of step 4.5

Initial setup

You many may need to install client tools for .NET https://docs.microsoft.com/en-us/nuget/install-nuget-client-tools (download file & add it to PATH). You can use nuget.exe 4.x version (because NuGet.exe 5.0 and later require .NET Framework 4.7.2 ).

It may be required to configure nuget.exe using NuGet.Config(XML) https://docs.microsoft.com/en-us/nuget/tools/cli-ref-push for using nuget.org as default push source.

You can find configuration file under user home directory, for example, on Windows

No Format
cd %appdata%\Nuget

Configuration on Linux can be skipped. The push source is set up by -s param in the script.

Example  Example of configuration:

Code Block
languagexml
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
  </packageSources>
  <config>
    <add key="defaultPushSource" value="https://nuget.org/" />
  </config>
</configuration>


...


Expand


No Format
>  ls *.nupkg | % { .\nuget push $_.FullName API_KEY_HERE}
Pushing Apache.Ignite.2.7.5.nupkg to 'https://nuget.org/'...
  PUT https://nuget.org/api/v2/package/
ПРЕДУПРЕЖДЕНИЕ. <licenseUrl> element will be deprecated,please consider switching to specifying the license in the package. Learn more: https://aka.ms/deprecateLicenseUrl.
  Created https://nuget.org/api/v2/package/ 16736ms
Your package was pushed.
Pushing Apache.Ignite.AspNet.2.7.5.nupkg to 'https://nuget.org/'...
  PUT https://nuget.org/api/v2/package/
ПРЕДУПРЕЖДЕНИЕ. <licenseUrl> element will be deprecated,please consider switching to specifying the license in the package. Learn more: https://aka.ms/deprecateLicenseUrl.
  Created https://nuget.org/api/v2/package/ 2378ms
Your package was pushed.
Pushing Apache.Ignite.EntityFramework.2.7.5.nupkg to 'https://nuget.org/'...
  PUT https://nuget.org/api/v2/package/
ПРЕДУПРЕЖДЕНИЕ. <licenseUrl> element will be deprecated,please consider switching to specifying the license in the package. Learn more: https://aka.ms/deprecateLicenseUrl.
  Created https://nuget.org/api/v2/package/ 3021ms
Your package was pushed.
Pushing Apache.Ignite.Linq.2.7.5.nupkg to 'https://nuget.org/'...
  PUT https://nuget.org/api/v2/package/
ПРЕДУПРЕЖДЕНИЕ. <licenseUrl> element will be deprecated,please consider switching to specifying the license in the package. Learn more: https://aka.ms/deprecateLicenseUrl.
  Created https://nuget.org/api/v2/package/ 2301ms
Your package was pushed.
Pushing Apache.Ignite.Log4Net.2.7.5.nupkg to 'https://nuget.org/'...
  PUT https://nuget.org/api/v2/package/
ПРЕДУПРЕЖДЕНИЕ. <licenseUrl> element will be deprecated,please consider switching to specifying the license in the package. Learn more: https://aka.ms/deprecateLicenseUrl.
  Created https://nuget.org/api/v2/package/ 1805ms
Your package was pushed.
Pushing Apache.Ignite.NLog.2.7.5.nupkg to 'https://nuget.org/'...
  PUT https://nuget.org/api/v2/package/
ПРЕДУПРЕЖДЕНИЕ. <licenseUrl> element will be deprecated,please consider switching to specifying the license in the package. Learn more: https://aka.ms/deprecateLicenseUrl.
  Created https://nuget.org/api/v2/package/ 2290ms
Your package was pushed.
Pushing Apache.Ignite.Schema.2.7.5.nupkg to 'https://nuget.org/'...
  PUT https://nuget.org/api/v2/package/
ПРЕДУПРЕЖДЕНИЕ. <licenseUrl> element will be deprecated,please consider switching to specifying the license in the package. Learn more: https://aka.ms/deprecateLicenseUrl.
  Created https://nuget.org/api/v2/package/ 1876ms
Your package was pushed.


Linux

Linux, .NET Core, sh: 

No Format
for i in *.nupkg; do dotnet nuget push $i -k API_KEY_HERE -s "https://nuget.org/"; done


Check result at https://www.nuget.org/packages/Apache.Ignite/ 

...

6.3.14. Check artifacts are available in Maven Central

Make sure that the artifacts were synced up to  Maven Central. Refer to the recently happened issue (

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keyINFRA-13073
)

  1. Once repository is synced you can see result in http://repo2.maven.org/maven2/org/apache/ignite/ 
  2. With some delay artifact will be available on the site https://mvnrepository.com/artifact/org.apache.ignite/ignite-core

Usually this sync should be comleted in 4 hours after releasing repository at step 6.3.1. If it is not released, contat infra.

...

879b028fb15b
keyINFRA-13073
)

  1. Once the repository is synced you can see the result in http://repo2.maven.org/maven2/org/apache/ignite/ 
  2. With some delay, artifact will be available on the site https://mvnrepository.com/artifact/org.apache.ignite/ignite-core

Usually, this sync should be completed in 4 hours after releasing repository at step 6.3.1. If it is not released, contact infra.

6.3.14. Update compatibility check versions

Create a new issue to enforce compatibility checks and prepare the PR. Add the released version to the IgniteReleasedVersion enum. Ask for a review on dev-list if necessary.


6.4. Announce the release

6.4.0 Prepare the blog post with the release improvements

Prepare a new blog post with the most major and meaningful release improvements.
Post this on -  https://blogs.apache.org/ignite/ (ask Maxim Muzafarov or Denis Magda if there is any help required with the publication).

6.4.1. Send the release to announce to Apache Lists

Announce the release by sending a single message to announce@apache.org and Ignite's user/dev lists.

Please not note that the 'announce 'list is ASF-level list and not all subscribers are aware about of Apache Ignite. So it is recommended to include a short description of the project and put the link to the post from the 6.4.0.

Only PMC and Committers are able to send to the 'announce list.

Refer to the examples below:

...

If release includes any fixes for the security issue, then announce security vulnerabilities that were fixed in the release.

...

Open Issues

There are several unresoved unresolved issues / open questions:

Warning


6. Unclear on how to prepare/update 6.3.11.GCE&AWSvirtualmachines

7. Steps to be done for to upload RPM/DEB packages