Versions Compared

Key

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

...

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
pagePin45

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.

...

 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.3Update 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 Ivanov <mr.weider@gmail.com>  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 

...

Expand

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

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 Do some checks related to release (full list of check to be done can be found in section 5.1):

...

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.

Check results at myget UI, https://www.myget.org/feed/apache-ignite-staging/package/nuget/Apache.Ignite

4.5.3. Run automated release check step on TC

Run '[3] Apache Ignite Release Vote | Check RC' https://ci.ignite.apache.org/buildConfiguration/ApacheIgniteReleaseJava8_PrepareVote4CheckRcLicensesChecksum

This 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 Removed

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.

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 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] Release Apache Ignite <version> The email subject should be "[VOTE] Release Apache Ignite <version> <rc>", e.g. "[VOTE] Release Apache Ignite 2.7.5 RC4". 

...

  • 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+AND+status+!=+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

...

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

...

  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 httpin https://repo2repo.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 : 

...

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

6.3.

...

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

6.3.5. Update references to API docs on the website, SEO updates

Update the latest APIs 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 GIT.

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 GIT repository for Apache Ignite site: https://gitbox.apache.org/repos/asf/ignite-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. 

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. Prepare HTML release notes from text release notes

Checkout GIT repository for Apache Ignite site: https://gitbox.apache.org/repos/asf/ignite-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. 

Once the new release is published to dist.apache.org/release wait a day

Once the new release is published to dist.apache.org/release wait a day or so for mirrors to catch up. 

After the release was propagated across all the mirrors, update both the "Source Releases" and "Binary Releases" tables on the https://ignite.apache.org/download.cgi pagesections of the website downloads page:

  • Add a reference to the new release pointing out to https://downloads.apache.org/. Make sure to use [preferred]/[distdir] 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 Intented 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.  

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

Credentials can be found in SVN 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 README file the README file and Dockerfile are available at:
https://github.com/apache/ignite/blobtree/master/deliveries/docker/apache-ignite/README.txt

To build image images run the following command 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.7.5.15.0-arm64 --push --platform linux/arm64
docker buildx build . -f ./arm64/Dockerfile -t apacheignite/ignite:latest2.15.0-jdk11-arm64 --push --platform linux/arm64 --build-arg JDK_VERSION=11

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

You can validate image images created by calling

Code Block
languagebash
docker images

...

Code Block
languagebash
docker run -it --rm --name apache-ignite <IMAGE>

To publish image run

Code Block
languagebash
docker login

Run

Code Block
languagebash
docker login

Run

bash
docker push apacheignite/ignite:2.15.0
docker push apacheignite/ignite:2.15.0-jdk11
Code Block
languagebash
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

.12. Delete previous release from dist and dev SVN directoriesDelete previous releases from 

.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/... (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 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/ 

...

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. Ask for a review on dev-list if necessary. JiraserverASF JIRAserverId5aa69414-a9e9-3523-82ec-879b028fb15bkeyIGNITE-13833. 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 note that the 'announce 'list is ASF-level list and not all subscribers are aware 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:

...

Warning


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

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

...