You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 50 Next »

Introduction

Following introduction is only draft and it is to be reviewed by experienced Igniters.

begin of draft {{


Ignite Release Process


P0. Initializing

Release phases dates are discussed, as release manager during the first discussion. Release Manager should be comitter (or PMC? - TBD).

Moving scope freeze and code freeze dates may be not best option since a lot of contributors synchronize their efforts to make feature completed by particular moment.

See also Release manager Notes, it contains some instructions for a release manager.

P1.1 Implementation and Scope Discussion

Difference between this and the following phase: it is not possible to move in-progress tickets because branches not diverged.

New branch creation moment is not formal, and it can happen just before or simultaneously with scope freeze.  The important thing is announcing this moment and reminding contributors to cherry-pick commits to release branch.

P1.2 Implementation and Scope Finalization

Removing issues from the scope based on estimated dates of completion, importance to release and on community discussion. Private discussion between contributors is possible, but it is recommended to discuss features in public to allow all community members to share their arguments and concerns.

End of this phase is scope freeze.

P2. Rampdown

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

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

P3. Stabilization

There only blockers are accepted. Usually it should be approval of release manager to each commit.

Note blockers here is not only a critical bug, but an issue in the product which makes product unstable or non-functioning, performance drop has proven by a benchmark, a security issue, or a regression of existing features.

P4. Voting



}} end of draft

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.

The email subject should be "[VOTE] Apache Ignite <version> <rc>", e.g. "[VOTE] Apache Ignite 1.5.0.final RC3". Here is the sample email.

Dear Sirs!

We have uploaded release candidate to
https://dist.apache.org/repos/dist/dev/ignite/1.5.0.final-rc3/

This is very important release containing initial versions of Ignite.NET
and Ignite C++ and many other important features.

Tag name is
1.5.0.final-rc3

1.5.0 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-us.apache.org/repos/asf?p=ignite.git;a=blob_plain;f=RELEASE_NOTES.txt;hb=refs/tags/1.5.0.final-rc3

Please start voting.

+1 - to accept Apache Ignite 1.5.0.final-rc3
0 - don't care either way
-1 - DO NOT accept Apache Ignite 1.5.0.final-rc3 (explain why)

This vote will go for 72 hours.

Release Verification

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

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


  • Check that sha1 & md5 checksum is correct. 

    sha1sum -c *.sha1
    md5sum -c *.md5
  • Check that signature is correct.

    gpg --verify-files *.asc
  • Check that version is correct.
  • Check licenses from the source code.

    mvn clean validate -DskipTests=true -P check-licenses
  • Build the binary releases from the source code.

    mvn clean package -DskipTests -Dignite.edition=hadoop
    mvn clean package -DskipTests
  • Build Ignite.NET binaries and NuGet packages

    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

Closing Vote

After vote passes someone from PMC should do the following:

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

    svn import apache-ignite-fabric-<version>-bin/docs https://svn.apache.org/repos/asf/ignite/site/trunk/releases/<version> -m "new Release (<version>)" 
  • Update https://svn.apache.org/repos/asf/ignite/site/trunk/download.html (add new release to tables and mark them as latest, if necessary)
  • Move release to https://dist.apache.org/repos/dist/release/ignite/<version

    svn mv https://dist.apache.org/repos/dist/dev/ignite/<version><rc> https://dist.apache.org/repos/dist/release/ignite/<version> -m "Release <version>"
  • Create Release tag from RC tag

    git tag -a <version> -m "<version>"
    git push origin <version>
  • Send an email with subject "[RESULT] [VOTE] Apache Ignite <version> Release (<rc>)", for example "[RESULT] [VOTE] Apache Ignite 1.4.0 Release (RC1)" and body similar to: 

    Hello!
    
    Apache Ignite 1.4.0 release (RC1) has been accepted.
    
    9 "+1" votes received.
    
    Here are the votes received:
    
       - Denis Magda (binding)
       - Anton Vinogradov (binding)
       - Alexey Kuznetsov (binding)
       - Sergi Vladykin (binding)
       - Gianfranco Murador (binding)
       - Vladimir Ozerov (binding)
       - Raul Kripalani (binding)
       - Konstantin Boudnik (binding)
       - Chandresh Pancholi
    
    Here is the link to vote thread -
    http://apache-ignite-developers.2346864.n4.nabble.com/VOTE-Apache-Ignite-1-4-0-Release-RC1-tp3474.html
     
    Ignite 1.4.0 successfuly released to https://dist.apache.org/repos/dist/release/ignite/1.4.0/
    
    Thanks!

     

 

Whenever consensus cannot be reached, standard Apache Voting Process will be used to reach a solution.

Post-release steps

After successful vote following actions should be done:

  1. Update version in the master branch (execute script and commit changes): ./scripts/update-versions.sh 2.9.0
  2. Release all the documentation (Java, .NET, C++, etc.) on apacheignite.readme.io. Make sure to update a documentation's version to a version of the release.
  3. Update the latest doc reference on ignite.apache.org:
    1. Update the new version number on the .htaccess file: RewriteRule ^releases/latest/(.*)$ /releases/1.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. Update Ignite version in this file - https://ignite.apache.org/latest
  5. Mark JIRA version as released.
  6. Update https://ignite.apache.org with new download links, make sure to use [preferred]/[distdir] and [disturl]/[distdir]: https://svn.apache.org/repos/asf/ignite/site/trunk
  7. Prepare the cloud images and update links to them here https://ignite.apache.org/download.cgi#docker. In addition, update the links to the images on the following documentation pages whenever is needed:
    1. http://apacheignite.gridgain.org/docs/docker-deployment
    2. https://apacheignite.readme.io/docs/aws-deployment
    3. https://apacheignite.readme.io/docs/google-compute-deployment
  8. Update Web Console docker image: https://hub.docker.com/r/apacheignite/web-console-standalone/tags/
  9. Delete previous releases from https://dist.apache.org/repos/dist/release/ignite/..., replace their download URLs by https://archive.apache.org/dist/ignite/...
  10. Release maven staging (https://maven.apache.org/developers/release/maven-project-release-procedure.html).
  11. Upload .NET NuGet packages to nuget.org. Credentials can be found in https://svn.apache.org/repos/private/pmc/ignite/credentials/nuget.org (PMC only).
  12. Make sure that the artifacts were synced up to http://repo2.maven.org/maven2/org/apache/ignite/ and Maven Central. Refer to the recently happened issue ( Unable to render Jira issues macro, execution error. )
  13. Announce the release by sending a single message to announce@apache.org and Ignite's user/dev lists. Refer to the examples below:
    1. http://apache-ignite-developers.2346864.n4.nabble.com/ANNOUNCE-Apache-Ignite-2-1-0-Released-td20145.html
  14. Announce security vulnerabilities that were fixed in the release following the ASF process https://www.apache.org/security/committers.html. Check with security@ignite.apache.org if there are any vulnerabilities. 
  • No labels