FINERACT-2219: capture v1.11.0 lessons learned in asciidoc and fineract release plugin
* don't bother making MD5 files, they aren't necessary * step12 changed, stub it out and reference FINERACT-1817 for future improvements (looks like svn mv is not yet supported) * use latest vote message template, based on https://lists.apache.org/thread/cs5t0ho39ktg2jxr74dqd7fg9nyfcz3k * use more explicit form of `git push` to push release tag, see https://stackoverflow.com/questions/5195859/how-do-you-push-a-tag-to-a-remote-repository-using-git * use consistent language re: tarball, file, artifact, release candidate * fix some source listings that shouldn't be using macro expansion: this messes up URLs (hides scheme) * fix asciidoc link to FINERACT-1229 * clean up copyright years: use variable properly and remove unnecessary extra copyright in preface (it appears directly above, in the license) * de-indent URL in apache license -- this makes the link clickable in rendered HTML and PDF asciidoc outputs
This commit is contained in:
@@ -29,4 +29,4 @@ public class YourThingValidator {
|
||||
|
||||
== Declarative
|
||||
|
||||
[FINERACT-1229](https://issues.apache.org/jira/browse/FINERACT-1229) is an open issue about adopting Bean Validation for _declarative_ instead of _programmatic_ (as above) validation. Contributions welcome!
|
||||
https://issues.apache.org/jira/browse/FINERACT-1229[FINERACT-1229] is an open issue about adopting Bean Validation for _declarative_ instead of _programmatic_ (as above) validation. Contributions welcome!
|
||||
|
||||
@@ -9,7 +9,7 @@ Next, you create a git tag from the HEAD of the release's git branch.
|
||||
% git checkout {revnumber}
|
||||
% ./gradlew clean integrationTests <1>
|
||||
% git tag -a {revnumber} -m "Fineract {revnumber} release"
|
||||
% git push origin {revnumber}
|
||||
% git push origin tag {revnumber}
|
||||
----
|
||||
<1> Run additonally manual tests with the community app.
|
||||
|
||||
|
||||
@@ -2,33 +2,31 @@
|
||||
|
||||
== Description
|
||||
|
||||
Create source and binary artifacts. Make sure to do some sanity checks. The tar and the release branch should match.
|
||||
Create source and binary tarballs.
|
||||
|
||||
[source,bash,subs="attributes+,+macros"]
|
||||
[source,bash,subs="attributes+"]
|
||||
----
|
||||
% cd /fineract-release-preparations <1>
|
||||
% tar -xvf apache-fineract-{revnumber}-src.tar.gz
|
||||
% git clone https://git-wip-us.apache.org/repos/asf/fineract.git
|
||||
% ./gradlew build -x test
|
||||
----
|
||||
|
||||
Look in `fineract-war/build/distributions/` for the tarballs.
|
||||
|
||||
Make sure to do some sanity checks. The source tarball and the code in the release branch (at the commit with the release tag) should match.
|
||||
|
||||
[source,bash,subs="attributes+"]
|
||||
----
|
||||
% cd /fineract-release-preparations
|
||||
% tar -xvf path/to/apache-fineract-{revnumber}-src.tar.gz
|
||||
% git clone git@github.com:apache/fineract.git
|
||||
% cd fineract/
|
||||
% git checkout tags/{revnumber}
|
||||
% cd ..
|
||||
% diff -r fineract apache-fineract-{revnumber}-src
|
||||
% diff -r fineract apache-fineract-{revnumber}
|
||||
----
|
||||
<1> Do a fresh clone of the tag.
|
||||
|
||||
Make sure code compiles and tests pass on the uncompressed source.
|
||||
Make sure the code compiles and tests pass on the uncompressed source. Do as much testing as you can and share what you did. Ideally you'd build code and docs and run every possible test and check, but https://github.com/apache/fineract/actions[running everything has complex dependencies, caches, and takes many hours]. It is rarely done in practice offline / local / on developer machines. But please, go ahead and run the test and doc tasks, and more! Grab a cup of coffee and run everything you can. See the various builds in `.github/workflows/` and try the same things on your own. We should all hammer on a release candidate as much as we can to see if it breaks and fix it if so. All that of course improves our final release.
|
||||
|
||||
[source,bash,subs="attributes+,+macros"]
|
||||
----
|
||||
% cd apache-fineract-{revnumber}-src/fineract-provider <1>
|
||||
% gradlew clean integrationTest <2>
|
||||
% gradlew clean build <3>
|
||||
% gradlew rat <4>
|
||||
----
|
||||
<1> Make sure prerequisites are met before running these commands.
|
||||
<2> For running integration tests
|
||||
<3> For building deploy able war
|
||||
<4> For RAT checks
|
||||
Finally, inspect `apache-fineract-{revnumber}-binary.tar.gz`. Make sure the `fineract-provider-{revnumber}.jar` can be run directly, and the `fineract-provider.war` can be run with Tomcat.
|
||||
|
||||
== Gradle Task
|
||||
|
||||
|
||||
@@ -2,15 +2,13 @@
|
||||
|
||||
== Description
|
||||
|
||||
All release artifacts must be signed. In order to sign a release you will need a PGP key. You should get your key signed by a few other people. You will also need to receive their keys from a public key server. See the Apache release signing page for more details. Please follow the steps defined in Release Sign.
|
||||
Release source and binary tarballs must be checksummed and signed. In order to sign a release you will need a PGP key. You should get your key signed by a few other people. You will also need to receive their keys from a public key server. See the https://www.apache.org/legal/release-policy.html#release-signing[Apache release policy] for more details.
|
||||
|
||||
[source,bash,subs="attributes+,+macros"]
|
||||
----
|
||||
% gpg --armor --output apache-fineract-{revnumber}-src.tar.gz.asc --detach-sig apache-fineract-{revnumber}-src.tar.gz
|
||||
% gpg --print-md MD5 apache-fineract-{revnumber}-src.tar.gz > apache-fineract-{revnumber}-src.tar.gz.md5
|
||||
% gpg --print-md SHA512 apache-fineract-{revnumber}-src.tar.gz > apache-fineract-{revnumber}-src.tar.gz.sha512
|
||||
% gpg --armor --output apache-fineract-{revnumber}--binary.tar.gz.asc --detach-sig apache-fineract-{revnumber}-binary.tar.gz
|
||||
% gpg --print-md MD5 apache-fineract-{revnumber}-binary.tar.gz > apache-fineract-{revnumber}-binary.tar.gz.md5
|
||||
% gpg --armor --output apache-fineract-{revnumber}-binary.tar.gz.asc --detach-sig apache-fineract-{revnumber}-binary.tar.gz
|
||||
% gpg --print-md SHA512 apache-fineract-{revnumber}-binary.tar.gz > apache-fineract-{revnumber}-binary.tar.gz.sha512
|
||||
----
|
||||
|
||||
|
||||
@@ -4,26 +4,27 @@
|
||||
|
||||
Finally create a directory with release name ({revnumber} in this example) in https://dist.apache.org/repos/dist/dev/fineract and add the following files in this new directory:
|
||||
|
||||
* apache-fineract-{revnumber}-binary.tar.gz.sha
|
||||
* apache-fineract-{revnumber}-binary.tar.gz
|
||||
* apache-fineract-{revnumber}-binary.tar.gz.sha512
|
||||
* apache-fineract-{revnumber}-binary.tar.gz.asc
|
||||
* apache-fineract-{revnumber}-binary.tar.gz.md5
|
||||
* apache-fineract-{revnumber}-src.tar.gz.sha
|
||||
* apache-fineract-{revnumber}-src.tar.gz
|
||||
* apache-fineract-{revnumber}-src.tar.gz.sha512
|
||||
* apache-fineract-{revnumber}-src.tar.gz.asc
|
||||
* apache-fineract-{revnumber}-src.tar.gz.md5
|
||||
|
||||
Upload binary and source archives to ASF's distribution dev (staging) area:
|
||||
These files (or "artifacts") make up the release candidate.
|
||||
|
||||
[source,bash,subs="attributes+,+macros"]
|
||||
Upload these files to ASF's distribution dev (staging) area:
|
||||
|
||||
[source,bash,subs="attributes+"]
|
||||
----
|
||||
% svn co https://dist.apache.org/repos/dist/dev/fineract/ fineract-dist-dev
|
||||
% mkdir fineract-dist-dev/{revnumber}
|
||||
% cp fineract/build/distributions/* fineract-dist-dev/{revnumber}/
|
||||
% cp path/to/files/* fineract-dist-dev/{revnumber}/
|
||||
% cd fineract-dist-dev
|
||||
% svn commit
|
||||
----
|
||||
|
||||
NOTE: You will need your ASF Committer credentials to be able to access the Subversion host https://dist.apache.org via.
|
||||
NOTE: You will need your ASF Committer credentials to be able to access the Subversion host at `dist.apache.org`.
|
||||
|
||||
== Gradle Task
|
||||
|
||||
|
||||
@@ -6,12 +6,12 @@ Following are the typical things we need to verify before voting on a release ca
|
||||
|
||||
Make sure release artifacts are hosted at https://dist.apache.org/repos/dist/dev/fineract
|
||||
|
||||
* Release candidates should be in format apache-fineract-{revnumber}-binary.tar.gz
|
||||
* Verify signatures and hashes. You may have to import the public key of the release manager to verify the signatures. (`gpg --recv-key <key id>`)
|
||||
* Git tag matches the released bits (diff -rf)
|
||||
* Can compile successfully from source
|
||||
* Release candidate files should match filenames mentioned earlier, and will be moved without renaming if/when the release vote passes.
|
||||
* Verify signatures and hashes. You may have to import the public key of the release manager to verify the signatures. (`gpg --import KEYS` or `gpg --recv-key <key id>`)
|
||||
* Git tag matches the released bits (`diff -rf`)
|
||||
* Can compile docs and code successfully from source
|
||||
* Verify DISCLAIMER, NOTICE and LICENSE (year etc)
|
||||
* All files have correct headers (Rat check should be clean - gradlew rat)
|
||||
* All files have correct headers (Rat check should be clean - `./gradlew rat`)
|
||||
* No jar files in the source artifacts
|
||||
* Integration tests should work
|
||||
|
||||
|
||||
@@ -2,15 +2,11 @@
|
||||
|
||||
== Description
|
||||
|
||||
In order to release you have to checkout release repository located on https://dist.apache.org/repos/dist/release/fineract and add release artifacts there.
|
||||
Move the release candidate from the dev area to the release area using a Subversion server-side copy.
|
||||
|
||||
[source,bash,subs="attributes+,+macros"]
|
||||
[source,bash,subs="attributes+"]
|
||||
----
|
||||
% svn co https://dist.apache.org/repos/dist/release/fineract fineract-release
|
||||
% mkdir fineract-release/{revnumber}/
|
||||
% cp fineract-dist-dev/{revnumber}/* fineract-release/{revnumber}/
|
||||
% svn add fineract-release/{revnumber}/
|
||||
% svn commit -m "Fineract Release {revnumber}" fineract-release/{revnumber}/
|
||||
% svn mv https://dist.apache.org/repos/dist/dev/fineract/{revnumber} https://dist.apache.org/repos/dist/release/fineract/
|
||||
----
|
||||
|
||||
You will now get an automated email from the Apache Reporter Service (no-reply@reporter.apache.org), subject "Please add your release data for 'fineract'" to add the release data (version and date) to the database on https://reporter.apache.org/addrelease.html?fineract (requires PMC membership).
|
||||
@@ -22,3 +18,5 @@ You will now get an automated email from the Apache Reporter Service (no-reply@r
|
||||
----
|
||||
% ./gradlew fineractReleaseStep12 -Pfineract.release.version={revnumber}
|
||||
----
|
||||
|
||||
CAUTION: This task is not yet automated!
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
Finally update the https://fineract.apache.org website with the latest release details. The website's HTML source code is available at https://github.com/apache/fineract-site.
|
||||
|
||||
CAUTION: This step is not yet updated. We are working on a static site generator setup.
|
||||
CAUTION: This step is not yet automated. We are working on a static site generator setup.
|
||||
|
||||
== Gradle Task
|
||||
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
= License
|
||||
|
||||
Copyright 2022 Apache Foundation
|
||||
Copyright (C) {years} Apache Foundation
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
https://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
[preface]
|
||||
= Preface
|
||||
(C) {years}
|
||||
|
||||
:hardbreaks:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user