@@ -111,7 +111,9 @@ fineract {
|
||||
templateFile: "${projectDir}/buildSrc/src/main/resources/jira/changelog.txt.ftl"
|
||||
],
|
||||
gpg: [
|
||||
file: "${projectDir}/buildSrc/build/libs/buildSrc.jar"
|
||||
files: [
|
||||
"${projectDir}/buildSrc/build/libs/buildSrc.jar"
|
||||
]
|
||||
]
|
||||
],
|
||||
step1: [
|
||||
@@ -173,7 +175,10 @@ fineract {
|
||||
order: 7,
|
||||
description: 'Sign the distribution artifacts',
|
||||
gpg: [
|
||||
file: "${rootDir}/fineract-war/build/distributions/apache-fineract-binary-${project.version}.tar.gz"
|
||||
files: [
|
||||
"${rootDir}/fineract-war/build/distributions/apache-fineract-${project.version}-src.tar.gz",
|
||||
"${rootDir}/fineract-war/build/distributions/apache-fineract-${project.version}-binary.tar.gz"
|
||||
]
|
||||
]
|
||||
],
|
||||
step8: [
|
||||
|
||||
@@ -324,7 +324,7 @@ class FineractPlugin implements Plugin<Project> {
|
||||
|
||||
// step 6
|
||||
project.tasks.register("fineractReleaseStep6") {
|
||||
dependsOn(":fineract-war:binaryDistTar")
|
||||
dependsOn(":fineract-war:distTar")
|
||||
}
|
||||
|
||||
// step 7
|
||||
@@ -334,13 +334,11 @@ class FineractPlugin implements Plugin<Project> {
|
||||
|
||||
gpgService.sign(step.gpg)
|
||||
|
||||
def md5 = gpgService.md5(step.gpg)
|
||||
def md5File = new File("${step.gpg.file}.md5")
|
||||
md5File.write md5
|
||||
step.gpg.files.findAll {
|
||||
gpgService.md5(step.gpg)
|
||||
|
||||
def sha512 = gpgService.sha512(step.gpg)
|
||||
def sha512File = new File("${step.gpg.file}.sha512")
|
||||
sha512File.write sha512
|
||||
gpgService.sha512(step.gpg)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -159,6 +159,6 @@ class FineractPluginExtension {
|
||||
}
|
||||
|
||||
static class FineractPluginGpgParams {
|
||||
String file
|
||||
List<String> files
|
||||
}
|
||||
}
|
||||
|
||||
@@ -92,11 +92,13 @@ class GpgService {
|
||||
}
|
||||
|
||||
void sign(FineractPluginExtension.FineractPluginGpgParams params) {
|
||||
InputStream is = new FileInputStream(params.file)
|
||||
params.files.findAll {
|
||||
InputStream is = new FileInputStream(it)
|
||||
|
||||
BCPGOutputStream os = new BCPGOutputStream(new ArmoredOutputStream(new FileOutputStream(params.file + ".asc")))
|
||||
sign(is).encode(os)
|
||||
os.close();
|
||||
BCPGOutputStream os = new BCPGOutputStream(new ArmoredOutputStream(new FileOutputStream(it + ".asc")))
|
||||
sign(is).encode(os)
|
||||
os.close();
|
||||
}
|
||||
}
|
||||
|
||||
PGPSignature sign(InputStream is) throws IOException, PGPException, GeneralSecurityException {
|
||||
@@ -115,12 +117,20 @@ class GpgService {
|
||||
}
|
||||
|
||||
|
||||
String md5(FineractPluginExtension.FineractPluginGpgParams params) {
|
||||
return calc(new FileInputStream(params.file), MessageDigest.getInstance("MD5", BouncyCastleProvider.PROVIDER_NAME))
|
||||
void md5(FineractPluginExtension.FineractPluginGpgParams params) {
|
||||
params.files.findAll {
|
||||
def result = calc(new FileInputStream(it), MessageDigest.getInstance("MD5", BouncyCastleProvider.PROVIDER_NAME))
|
||||
def file = new File("${it}.md5")
|
||||
file.write result
|
||||
}
|
||||
}
|
||||
|
||||
String sha512(FineractPluginExtension.FineractPluginGpgParams params) {
|
||||
return calc(new FileInputStream(params.file), MessageDigest.getInstance("SHA-512", BouncyCastleProvider.PROVIDER_NAME))
|
||||
void sha512(FineractPluginExtension.FineractPluginGpgParams params) {
|
||||
params.files.findAll {
|
||||
def result = calc(new FileInputStream(it), MessageDigest.getInstance("SHA-512", BouncyCastleProvider.PROVIDER_NAME))
|
||||
def file = new File("${it}.sha512")
|
||||
file.write result
|
||||
}
|
||||
}
|
||||
|
||||
private static String calc(InputStream is, MessageDigest digest) {
|
||||
|
||||
@@ -0,0 +1,96 @@
|
||||
{
|
||||
"approve": {
|
||||
"binding": [
|
||||
{
|
||||
"name": "James Daily",
|
||||
"email": "jamespdailey@gmail.com"
|
||||
},
|
||||
{
|
||||
"name": "Arnold Galovics",
|
||||
"email": "arnold@apache.org"
|
||||
},
|
||||
{
|
||||
"name": "Avik Ganguly",
|
||||
"email": "avik@fynarfin.io"
|
||||
},
|
||||
{
|
||||
"name": "Ed Cable",
|
||||
"email": "edcable@mifos.org"
|
||||
},
|
||||
{
|
||||
"name": "Aleksandar Vidakovic",
|
||||
"email": "aleks@apache.org"
|
||||
},
|
||||
{
|
||||
"name": "Terence Monteiro",
|
||||
"email": "terence.placker@gmail.com"
|
||||
},
|
||||
{
|
||||
"name": "Awasum Yannick",
|
||||
"email": "awasum@apache.org"
|
||||
}
|
||||
],
|
||||
"nonBinding": [
|
||||
{
|
||||
"name": "Victor Manuel Romero Rodriguez",
|
||||
"email": "victor.romero@fintecheando.mx"
|
||||
},
|
||||
{
|
||||
"name": "Bruce Tushabe",
|
||||
"email": "brucetushabe@gmail.com"
|
||||
},
|
||||
{
|
||||
"name": "Kigred",
|
||||
"email": "kigred.developer@gmail.com"
|
||||
},
|
||||
{
|
||||
"name": "Bharath Gowda",
|
||||
"email": "bgowda@mifos.org"
|
||||
},
|
||||
{
|
||||
"name": "Robert Jakech",
|
||||
"email": "robert@fiter.io"
|
||||
},
|
||||
{
|
||||
"name": "Arthur Magezi",
|
||||
"email": "artmagezi@gmail.com"
|
||||
},
|
||||
{
|
||||
"name": "Robert Ippez",
|
||||
"email": "ippezrobert@gmail.com"
|
||||
},
|
||||
{
|
||||
"name": "Sifiso Mtetwa",
|
||||
"email": "sifiso@skyburgsystems.org"
|
||||
},
|
||||
{
|
||||
"name": "Zayad A. Said",
|
||||
"email": "zayyad@intrasofttechnologies.com"
|
||||
},
|
||||
{
|
||||
"name": "Hitech Prajapati",
|
||||
"email": "hitesh.kams.prajapati@gmail.com"
|
||||
},
|
||||
{
|
||||
"name": "Kelvin Ikome",
|
||||
"email": "kelvin@ciniter.com"
|
||||
},
|
||||
{
|
||||
"name": "Nasser Kaze",
|
||||
"email": "kazenasser@gmail.com"
|
||||
}
|
||||
]
|
||||
},
|
||||
"disapprove": {
|
||||
"binding": [
|
||||
],
|
||||
"nonBinding": [
|
||||
]
|
||||
},
|
||||
"noOpinion": {
|
||||
"binding": [
|
||||
],
|
||||
"nonBinding": [
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
:years: 2015-2022
|
||||
:revnumber: 1.7.0
|
||||
:revnumber: 1.8.0
|
||||
:draft: true
|
||||
:rootdir: {asciidoctorconfigdir}/..
|
||||
:generated: {asciidoctorconfigdir}/build/generated/asciidoc
|
||||
|
||||
@@ -12,4 +12,6 @@ include::configuration.adoc[leveloffset=+1]
|
||||
|
||||
include::process.adoc[leveloffset=+1]
|
||||
|
||||
include::maintenance.adoc[leveloffset=+1]
|
||||
|
||||
include::publish.adoc[leveloffset=+1]
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
= Maintenance Release Process
|
||||
|
||||
IMPORTANT: This is a first attempt to introduce maintenance releases. Some details might change as soon as we get more experience with the process and feedback from the community. The numbers here are still more or less arbitrary, and we'll adapt as necessary.
|
||||
|
||||
== Rules
|
||||
|
||||
- hotfix releases are reserved for critical (BLOCKER) bugs and security issues. Probably we'll have some kind of voting process in place, e. g. "minimum 3 x +1 votes from PMC members"
|
||||
- we will support (for now to start) two minor versions back counting from the last release; this would mean that once 1.8.0 is out we would support 1.8.x and 1.7.x, but not 1.6.x and older; this rule is tentative, we'll see then what we do in the future when we have more feedback.
|
||||
- guaranteed backward compatibility with the last minor release; i. e. "1.6.1" is a drop-in replacement for "1.6.0"
|
||||
- NO new features, tables, data, REST endpoints
|
||||
- NO major (or "minor" framework upgrades); i. e. if we used Spring Boot "2.6.1" in version "1.6.0" of Fineract we can upgrade dependencies to "2.6.10" (unless it breaks something of course), but not to "2.7.2" of Spring Boot
|
||||
|
||||
NOTE: The rest of the release process is the same as for normal releases. In the future we might have smaller time windows for reviews.
|
||||
@@ -5,7 +5,7 @@
|
||||
:compress:
|
||||
:pdf-page-size: LETTER
|
||||
:experimental:
|
||||
:pdf-version: 1.7
|
||||
:pdf-version: 1.8
|
||||
:page-layout: base
|
||||
:toc-title: Table of Contents
|
||||
:toc: left
|
||||
|
||||
-1
@@ -264,7 +264,6 @@ public class SavingsAccountReadPlatformServiceImpl implements SavingsAccountRead
|
||||
public List<SavingsAccountData> retrieveAllSavingsDataForInterestPosting(final boolean backdatedTxnsAllowedTill, final int pageSize,
|
||||
final Integer status, final Long maxSavingsId) {
|
||||
LocalDate yesterday = DateUtils.getBusinessLocalDate().minusDays(1);
|
||||
|
||||
String sql = "select " + this.savingAccountMapperForInterestPosting.schema()
|
||||
+ "join (select a.id from m_savings_account a where a.id > ? and a.status_enum = ? limit ?) b on b.id = sa.id ";
|
||||
if (backdatedTxnsAllowedTill) {
|
||||
|
||||
@@ -58,11 +58,7 @@ tasks.withType(Tar) {
|
||||
|
||||
distributions {
|
||||
binary {
|
||||
if(project.hasProperty("distVersion")) {
|
||||
distributionBaseName = "apache-fineract-$distVersion-binary"
|
||||
} else {
|
||||
distributionBaseName = "apache-fineract-binary"
|
||||
}
|
||||
distributionBaseName = 'apache-fineract-binary'
|
||||
contents {
|
||||
from ("$rootDir/fineract-client/build/libs/") {
|
||||
include 'fineract-client-*.jar'
|
||||
@@ -88,12 +84,7 @@ distributions {
|
||||
}
|
||||
}
|
||||
src {
|
||||
if(project.hasProperty("distVersion")) {
|
||||
distributionBaseName = "apache-fineract-$distVersion-src"
|
||||
} else {
|
||||
distributionBaseName = "apache-fineract-src"
|
||||
}
|
||||
|
||||
distributionBaseName = 'apache-fineract-src'
|
||||
contents {
|
||||
from "$rootDir/"
|
||||
exclude '**/build' , '.git', '**/.gradle', '.github', '**/.settings', '**/.project', '**/.classpath', '.idea', 'out', '._.DS_Store', '.DS_Store', 'WebContent', '**/.externalToolbuilders', '.theia', '.gitpod.yml', '.travis.yml', 'LICENSE_RELEASE', 'NOTICE_RELEASE', '**/licenses', '*.class', '**/bin', '*.log', '.dockerignore', '**/.gitkeep'
|
||||
@@ -101,6 +92,10 @@ distributions {
|
||||
rename ('NOTICE_SOURCE', 'NOTICE')
|
||||
}
|
||||
}
|
||||
doLast {
|
||||
file("${buildDir}/distributions/apache-fineract-binary-${version}.tar.gz").renameTo("${buildDir}/distributions/apache-fineract-${version}-binary.tar.gz")
|
||||
file("${buildDir}/distributions/apache-fineract-src-${version}.tar.gz").renameTo("${buildDir}/distributions/apache-fineract-${version}-src.tar.gz")
|
||||
}
|
||||
}
|
||||
|
||||
binaryDistZip.enabled false
|
||||
|
||||
Reference in New Issue
Block a user