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

Compare with Current View Page History

« Previous Version 20 Next »

This page intended to give some instructions for a release manager who is not familiar with Release Process internals.

It is step-by-step instruction for Ignite 2.x releases.

Prerequisites:

  1. Write access to Apache Ignite GIT & SVN repository (commiter priveleges) - https://gitbox.apache.org/repos/asf?p=ignite.git
  2. Access to Team City Release tasks - https://ci.ignite.apache.org/project.html?projectId=ApacheIgniteReleaseJava8 If you don't have necessary rights ask for assigning on dev. list.
  3. Your GPG key in https://apache.org/dist/ignite/KEYS - see GPG section

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.


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`

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:

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


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

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/

P1.2 Implementation and Scope Finalization

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 the start of P1.1 

Create release branch, e.g ignite-2.8, push it to the ASF repository

Run TC tests (on the appropriate branch), use https://ci.ignite.apache.org/viewType.html?buildTypeId=IgniteTests24Java8_RunAll or https://ci.ignite.apache.org/viewType.html?buildTypeId=IgniteTests24Java8_RunAllNightly

Estimate state of TC, check failures history (if any).

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.

P4-Voting. Preparation Steps

Following section describes preparation of phase 4-Voting of Release Process.

4.0. Prepare Release Notes

4.0.1. Collect Release Notes (this step is manual now). Check all completed tickets from the release page. Ticket may or may not have release notes, and this depends on if it is reasonable to mention change for users.

4.0.2. Optionally you may ask for review of resulting release notes on the list.

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

4.1. Update release branch versions

4.1.1. Update version in the master branch (execute script from Ignite project root directory): 

./scripts/update-versions.sh 2.7.5

 and commit changes. Source code will be published into SVN, so version update is required before RC building.

4.2. Prepare RC on Teamcity

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.2.2.Download and unzip release archive. It can be found at "Artifacts" tab on build page. Example:

~/download:[]$ unzip release-2.7.0-rc0.zip



4.3. Sign and deploy RC using vote preparation scripts

Run vote scripts to prepare RC before voting. You may skip steps 4.3.1 & step 4.3.2 in case you want to run some testing of release. In case release build it made for testing purposes, go to step 3 in this section.

4.3.1. Run script to create VCS tag in git 

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

~/download/release:[]$ ./vote_1\[git\]create_rc_tag.sh 
Preparing vote 2.7.0-rc0
Removing obsolete tag...
2.7.0
-rc0
Deleted tag '2.7.0-rc0' (was b2119988f0)
Username for 'https://git-wip-us.apache.org': <your apache username here>
Password for 'https://nizhikov@git-wip-us.apache.org': <your apache password here>
To https://git-wip-us.apache.org/repos/asf/ignite
 - [deleted]               2.7.0-rc0
On branch master
Your branch is ahead of 'my/master' by 2 commits.
  (use "git push" to publish your local commits)

nothing to commit, working tree clean
Creating new tag...
Username for 'https://gitbox.apache.org': <your apache username here>
Password for 'https://nizhikov@gitbox.apache.org':   <your apache password here>
Counting objects: 1, done.
Writing objects: 100% (1/1), 166 bytes | 166.00 KiB/s, done.
Total 1 (delta 0), reused 0 (delta 0)
To https://gitbox.apache.org/repos/asf/ignite
 * [new tag]               2.7.0-rc0 -> 2.7.0-rc0
 
======================================================
RC tag should be created.
Please check results at 
https://gitbox.apache.org/repos/asf?p=ignite.git

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.3.2. Create & close (publish) staging repository

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

Run script ./vote_2\[mvn\]\[pgp\]deploy_to_staging.sh  Example of script output:

~/download/release:[]$ ./vote_2\[mvn\]\[pgp\]deploy_to_staging.sh 
Preparing vote 2.7.0-rc0
Uploading ./org/apache/ignite/ignite-spark (1 of 53).
Uploading ./org/apache/ignite/ignite-clients (2 of 53).

...
Uploading ./org/apache/ignite/ignite-mqtt (53 of 53).
Uploaded
 
======================================================
Maven staging should be created
Please check results at
https://repository.apache.org/#stagingRepositories
Don't forget to close staging with proper comment


Go to Nexus UI https://repository.apache.org/#stagingRepositories, login using Apache credentials and close repository. Close is a heavy background process, which makes repository visible for others. Provide some comment for closing repository, e.g. `Repository for Apache Ignite 2.7.5 - RC2`. After some time check if repository was closed successfully.

4.3.3.1. Build DEB/RPM packages

? Probably this build step will be migrated to TC and automated ?
Note: Following script is locale specific. You should execute it on the en locale

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

~/download/release:[]$ ./vote_3_step_1\[packages\]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'


4.3.3.2. Sign artfacts

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

~/download/release:[]$ ./vote_3_step_2\[pgp\]sign_artifacts.sh 
# Starting GPG Agent #
Signing ./svn/vote/apache-ignite-fabric-2.7.0-bin.zip
Signing ./svn/vote/apache-ignite-2.7.0-src.zip
Signing ./svn/vote/apache-ignite-hadoop-2.7.0-bin.zip
Signed OK.
 
===============================================
Artifacts should be signed
Please check results at ./svn/vote
Each file should have corresponding *.asc file

NOTE: Package files are not signed because they
are meant to be stored in Bintray


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

4.3.3.3. Deploy artfacts to SVN

Run scrupt ./vote_3_step_3\[svn\]deploy_artifacts.sh Example of output:

~/download/release:[]$ ./vote_3_step_3\[svn\]deploy_artifacts.sh 
RC 2.7.0-rc0
Добавляю  (бинарный)  svn/vote/apache-ignite-2.7.0-src.zip
Добавляю          svn/vote/apache-ignite-2.7.0-src.zip.asc
Добавляю          svn/vote/apache-ignite-2.7.0-src.zip.sha512
Добавляю  (бинарный)  svn/vote/apache-ignite-fabric-2.7.0-bin.zip
Добавляю          svn/vote/apache-ignite-fabric-2.7.0-bin.zip.asc
Добавляю          svn/vote/apache-ignite-fabric-2.7.0-bin.zip.sha512
Добавляю  (бинарный)  svn/vote/apache-ignite-hadoop-2.7.0-bin.zip
Добавляю          svn/vote/apache-ignite-hadoop-2.7.0-bin.zip.asc
Добавляю          svn/vote/apache-ignite-hadoop-2.7.0-bin.zip.sha512
Committing transaction...
Committed revision 29664.
Добавляю  (бинарный)  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.4. Verify Release changes using TeamCity

Compare with previous release.

There are TC task to generate report with difference comparing current release with previous.

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


You should run it and do sanity check for a changed files.

To start the build you need to specify current (staging) version and released version of Apache Ignite. See "Artifacts" tab to get task results. Example:

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

4.5 Prepare NuGet staging

? Probably this should be done using https://ci.ignite.apache.org/viewType.html?buildTypeId=ApacheIgniteReleaseJava8_PrepareVote3BuildNuGetPackages


4.6 Starting a vote

Example of Voting thread https://lists.apache.org/thread.html/35cbc2d4c5b769155dc8aec15edd808a25c5cf48a5e12637528e931d@%3Cdev.ignite.apache.org%3E


Optionally you can create a separate discussion for questions related to RC https://lists.apache.org/thread.html/8c17d2d69c10ffbc141547a933abbe8b84599bd09da6fc7c01103dca@%3Cdev.ignite.apache.org%3E


Vote should be open for at least 72hours. In case insufficient votes are available vote can be kept open as long as it needed.


Mail links(examples)

Vote - http://apache-ignite-developers.2346864.n4.nabble.com/VOTE-Apache-Ignite-2-7-0-RC2-td38788.html

Vote accepted - http://apache-ignite-developers.2346864.n4.nabble.com/RESULT-VOTE-Apache-Ignite-2-6-0-Release-RC1-td32561.html#a32608

Release announce - http://apache-ignite-users.70518.x6.nabble.com/ANNOUNCE-Apache-Ignite-2-6-0-Released-td22760.html

Releasing artifacts

  1. release_1[svn]move_binaries.sh
dragon:~/download/rc2:[]$ ./release_1\[svn\]move_binaries.sh 
# Releasing 2.7.0-rc2 :: Binaries #
Committing transaction...
Committed revision 31329.

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




  • No labels