...
Gliffy Diagram | ||||||
---|---|---|---|---|---|---|
|
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.
In the release branch, open the docs/_config.yml file and update the version property with the release number.
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
...
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
...
...
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
...
No Format |
---|
Name: apache-ignite Version: 2.7.6 |
...
Expand | |||||||||
---|---|---|---|---|---|---|---|---|---|
|
...
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. |
...
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
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 |
---|
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 |
---|
After the community agrees that the codebase is ready for a release, release manager should send the release for a vote.
...
Check that all JIRA issues for the specific version are Closed (example JQL: `project = IGNITE AND fixVersion <= 1.7 AND status != closed`).
Code Block | ||
---|---|---|
| ||
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 | ||
---|---|---|
| ||
sha1sumsha512sum -c *.sha1 md5sum -c *.md5sha512 |
Check that signature is correct.
Code Block | ||
---|---|---|
| ||
gpg --verify-files *.asc |
Check licenses from the source code.
Code Block | ||
---|---|---|
| ||
mvn clean validate -DskipTests=true -P check-licenses |
Build the binary releases from the source code.
Code Block | ||
---|---|---|
| ||
mvn clean package -DskipTests -Dignite.edition=hadoop
mvn clean package -DskipTests |
Build Ignite.NET binaries Build Ignite.NET binaries and NuGet packages
Code Block | ||
---|---|---|
| ||
cd modules\platforms\dotnet build -skipJava |
...
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
...
...
Publish the technical documentation on the website: How to Document - Publishing to the website
Update the latest APIs doc reference on ignite.apache.org:
This script does some Search engine optimization (SEO) updates to new/old .html files, like adding NOINDEX metatag to older version; add canonical URL to latest docs; and add GA code.
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 or so for mirrors to catch up.
After the release was propagated across all the mirrors, update both "Source Releases" and "Binary Releases" tables on the https://ignite.apache.org/download.cgi page:
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
Go to JIRA project administration, select Apache Ignite, select Versions, select appropriate version and select Actions->Release.
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 an image run the following command (insert correct release number):
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 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:
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
Go to JIRA project administration, select Apache Ignite, select Versions, select appropriate version and select Actions->Release.
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 | ||
---|---|---|
| ||
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 | ||
Code Block | ||
| ||
docker build . -t apacheignite/ignite:2.11.015.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 takes a distribution from some folder named like apache-ignite*
You can validate image images created by calling
Code Block | ||
---|---|---|
| ||
docker images |
...
Code Block | ||
---|---|---|
| ||
docker run -it --rm --name apache-ignite <IMAGE> |
To publish image run
Code Block | ||
---|---|---|
| ||
docker login |
Run
Code Block | ||
---|---|---|
| ||
docker login |
Run
| ||
docker push apacheignite/ignite:2.15.0
docker push apacheignite/ignite:2.15.0-jdk11
| ||
Code Block | ||
---|---|---|
| ||
docker push apacheignite/ignite:2.1115.0-jdk11-s390x docker push apacheignite/ignite:latest |
Check results at https://hub.docker.com/r/apacheignite/ignite
...
...
Todo: add description of steps ?
In addition, update the links to the images on the following documentation pages whenever is needed:
...
Todo: add description of steps ?
...
Prepare the cloud images and update links to them here https://ignite.apache.org/download.cgi#docker.
Old releases should be archived. Delete previous releases from https://dist.apache.org/repos/dist/release/ignite/... (PMC only):
Code Block | ||
---|---|---|
| ||
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/
Retrieve all .nupkg files from build artifacts of step 4.5
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 | ||
---|---|---|
| ||
<?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 | ||
---|---|---|
|
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.
...
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. Jira
...
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).
...
Warning |
---|
6. Unclear on how to prepare/update 6.3.11.GCE&AWSvirtualmachines 7. Steps to be done to upload RPM/DEB packages |
...