This is an automated email from the ASF dual-hosted git repository.
meonkeys pushed a commit to branch release/1.14.0
in repository https://gitbox.apache.org/repos/asf/fineract.git
The following commit(s) were added to refs/heads/release/1.14.0 by this push:
new e1b0329748 port steps 10 & 11 to the ATR
e1b0329748 is described below
commit e1b03297482caa686bd0a103caf5cb64957175e8
Author: Adam Monsen <[email protected]>
AuthorDate: Mon Dec 22 11:28:24 2025 -0800
port steps 10 & 11 to the ATR
---
.../main/groovy/org.apache.fineract.release.gradle | 26 -------
.../apache/fineract/gradle/FineractPlugin.groovy | 42 +---------
.../email/release.step10.vote.message.ftl | 51 -------------
.../email/release.step11.vote.message.ftl | 89 ----------------------
.../step10.txt.ftl} | 10 ++-
.../step11.txt.ftl} | 10 ++-
.../docs/en/chapters/release/process-step10.adoc | 13 +---
.../docs/en/chapters/release/process-step11.adoc | 13 +---
8 files changed, 28 insertions(+), 226 deletions(-)
diff --git a/buildSrc/src/main/groovy/org.apache.fineract.release.gradle
b/buildSrc/src/main/groovy/org.apache.fineract.release.gradle
index 78fb085b6a..254d80e223 100644
--- a/buildSrc/src/main/groovy/org.apache.fineract.release.gradle
+++ b/buildSrc/src/main/groovy/org.apache.fineract.release.gradle
@@ -196,36 +196,10 @@ fineract {
step10: [
order: 10,
description: 'Start voting on the dev mailing list',
- email: [
- from: "${findProperty('fineract.config.email')}",
- name: "${findProperty('fineract.config.name')}",
- to: "${findProperty('fineract.config.email')}",
- // to: '[email protected]',
- mime: 'text/plain',
- subjectTemplate: [
- templateFile:
"${projectDir}/buildSrc/src/main/resources/email/release.step10.vote.subject.ftl"
- ],
- messageTemplate: [
- templateFile:
"${projectDir}/buildSrc/src/main/resources/email/release.step10.vote.message.ftl"
- ]
- ]
],
step11: [
order: 11,
description: 'Conclude the vote and announce results',
- email: [
- from: "${findProperty('fineract.config.email')}",
- name: "${findProperty('fineract.config.name')}",
- to: "${findProperty('fineract.config.email')}",
- // to: '[email protected]',
- mime: 'text/plain',
- subjectTemplate: [
- templateFile:
"${projectDir}/buildSrc/src/main/resources/email/release.step11.vote.subject.ftl"
- ],
- messageTemplate: [
- templateFile:
"${projectDir}/buildSrc/src/main/resources/email/release.step11.vote.message.ftl"
- ]
- ]
],
step12: [
order: 12,
diff --git
a/buildSrc/src/main/groovy/org/apache/fineract/gradle/FineractPlugin.groovy
b/buildSrc/src/main/groovy/org/apache/fineract/gradle/FineractPlugin.groovy
index c2bb039afe..f1cf57ef70 100644
--- a/buildSrc/src/main/groovy/org/apache/fineract/gradle/FineractPlugin.groovy
+++ b/buildSrc/src/main/groovy/org/apache/fineract/gradle/FineractPlugin.groovy
@@ -18,7 +18,6 @@
*/
package org.apache.fineract.gradle
-import groovy.json.JsonSlurper
import org.apache.commons.io.FileUtils
import org.apache.commons.io.filefilter.NotFileFilter
import org.apache.commons.io.filefilter.PrefixFileFilter
@@ -384,23 +383,7 @@ class FineractPlugin implements Plugin<Project> {
doFirst {
FineractPluginExtension.FineractPluginStep step =
step(extension, "step10")
- String version =
project.properties?['fineract.release.version']
-
- if(!version) {
- TextIO textIO = TextIoFactory.getTextIO();
-
- version = textIO.newStringInputReader()
- .withPattern("\\d+.\\d+.\\d+")
- .read("Release Version");
- }
-
- // TODO: input validation, see FINERACT-1610
-
- this.context?.project?['fineract.release.version'] = version
-
- if(step.email) {
- emailService.send( processEmailParams(step.email,
this.context) )
- }
+ printInstructions(project, "step10")
}
}
@@ -409,28 +392,7 @@ class FineractPlugin implements Plugin<Project> {
doFirst {
FineractPluginExtension.FineractPluginStep step =
step(extension, "step11")
- String version =
project.properties?['fineract.release.version']
-
- if(!version) {
- TextIO textIO = TextIoFactory.getTextIO()
-
- version = textIO.newStringInputReader()
- .withPattern("\\d+.\\d+.\\d+")
- .read("Release Version");
- }
-
- // TODO: input validation, see FINERACT-1610
-
- this.context?.project?['fineract.release.version'] = version
-
- def jsonSlurper = new JsonSlurper()
- def data = jsonSlurper.parse(new
File("buildSrc/src/main/resources/vote/result.${version}.json"))
-
- this.context?.project?['fineract.vote'] = data
-
- if(step.email) {
- emailService.send( processEmailParams(step.email,
this.context) )
- }
+ printInstructions(project, "step11")
}
}
diff --git a/buildSrc/src/main/resources/email/release.step10.vote.message.ftl
b/buildSrc/src/main/resources/email/release.step10.vote.message.ftl
deleted file mode 100644
index cf91d17461..0000000000
--- a/buildSrc/src/main/resources/email/release.step10.vote.message.ftl
+++ /dev/null
@@ -1,51 +0,0 @@
-<#--
-
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you 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
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
--->
-Hello everyone,
-
-We are proud to present Apache Fineract
${project['fineract.release.version']}, with the artifacts below up for a vote.
Releases are important for a number of reasons: They put a stamp of approval on
a set of code changes and they build momentum for future improvements.
-
-Release notes and ChangeLog:
https://cwiki.apache.org/confluence/display/FINERACT/${project['fineract.release.version']}+-+Apache+Fineract
-
-Source and binary artifacts:
https://dist.apache.org/repos/dist/dev/fineract/${project['fineract.release.version']}/
-
-Tagged as ${project['fineract.release.version']}
-
-Committer PGP keys, including the release signing key:
https://dist.apache.org/repos/dist/dev/fineract/KEYS
-
-Note that this release candidate contains source and binary artifacts.
-
-This vote will be open for 72 hours:
-
-[ ] +1 approve
-[ ] +0 no opinion
-[ ] -1 disapprove (and reason why)
-
-Please indicate if yours is a binding vote, and "Verified: YES/NO/PARTIAL".
-
-Verified: YES ... Verified integrity and signatures of release artifacts
locally, built from source, ran jar/war: Did everything mentioned in the
current release candidate verification guidance (
https://fineract.apache.org/docs/rc/#_artifact_verification ). If you did more
than that, please specify. "Verified: YES" is required for binding votes.
-
-Verified: NO ... No testing performed on release candidate, e.g. relying on
testing performed by other contributors and/or output of GitHub Actions, while
exercising your right to vote.
-
-Verified: PARTIAL ... Please specify.
-
-Cheers,
-
-${project['fineract.config.name']}
diff --git a/buildSrc/src/main/resources/email/release.step11.vote.message.ftl
b/buildSrc/src/main/resources/email/release.step11.vote.message.ftl
deleted file mode 100644
index 227d956d63..0000000000
--- a/buildSrc/src/main/resources/email/release.step11.vote.message.ftl
+++ /dev/null
@@ -1,89 +0,0 @@
-<#--
-
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you 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
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
--->
-<#if (project['fineract.vote'].approve.binding?size +
project['fineract.vote'].approve.nonBinding?size >
project['fineract.vote'].disapprove.binding?size +
project['fineract.vote'].disapprove.nonBinding?size)>
-Voting is now closed and has passed with the following tally,
-
-Binding +1s: ${project['fineract.vote'].approve.binding?size}
-Non binding +1s: ${project['fineract.vote'].approve.nonBinding?size}
-<#else>
-Voting is now closed and has not passed with the following tally,
-
-Binding +1s: ${project['fineract.vote'].approve.binding?size}
-Non binding +1s: ${project['fineract.vote'].approve.nonBinding?size}
-
-Binding -1s: ${project['fineract.vote'].disapprove.binding?size}
-Non binding -1s: ${project['fineract.vote'].disapprove.nonBinding?size}
-</#if>
-
-Here are the detailed results:
-
-<#list project['fineract.vote'].approve.binding>
-Binding +1s:
- <#items as item>
-- ${item.name}
- </#items>
-</#list>
-
-
-<#list project['fineract.vote'].approve.nonBinding>
-Non binding +1s:
- <#items as item>
-- ${item.name}
- </#items>
-</#list>
-
-
-<#list project['fineract.vote'].disapprove.binding>
-Binding -1s:
- <#items as item>
-- ${item.name}
- </#items>
-</#list>
-
-<#list project['fineract.vote'].disapprove.nonBinding>
-Non binding -1s:
- <#items as item>
-- ${item.name}
- </#items>
-</#list>
-
-
-<#list project['fineract.vote'].noOpinion.binding>
-Binding +0s:
- <#items as item>
-- ${item.name}
- </#items>
-</#list>
-
-<#list project['fineract.vote'].noOpinion.nonBinding>
-Non binding +0s:
- <#items as item>
-- ${item.name}
- </#items>
-</#list>
-
-<#if (project['fineract.vote'].approve.binding?size +
project['fineract.vote'].approve.nonBinding?size >
project['fineract.vote'].disapprove.binding?size +
project['fineract.vote'].disapprove.nonBinding?size)>
-Thanks to everyone who voted! I'll now continue with the rest of the release
process.
-<#else>
-Thanks to everyone who voted! Looks like we have to repeat the vote.
-</#if>
-
-${project['fineract.config.name']}
diff --git a/buildSrc/src/main/resources/email/release.step11.vote.subject.ftl
b/buildSrc/src/main/resources/instructions/step10.txt.ftl
similarity index 85%
rename from buildSrc/src/main/resources/email/release.step11.vote.subject.ftl
rename to buildSrc/src/main/resources/instructions/step10.txt.ftl
index 3809266052..cbb81dd3df 100644
--- a/buildSrc/src/main/resources/email/release.step11.vote.subject.ftl
+++ b/buildSrc/src/main/resources/instructions/step10.txt.ftl
@@ -18,4 +18,12 @@
under the License.
-->
-[FINERACT] [VOTE] [RESULT] 🧾️ ${project['fineract.release.version']} for
release
+
+
+[INSTRUCTIONS:START]
+
+Initiate voting with the ATR (ASF Trusted Releases) tool.
+
+https://release-test.apache.org
+
+[INSTRUCTIONS:END]
diff --git a/buildSrc/src/main/resources/email/release.step10.vote.subject.ftl
b/buildSrc/src/main/resources/instructions/step11.txt.ftl
similarity index 85%
rename from buildSrc/src/main/resources/email/release.step10.vote.subject.ftl
rename to buildSrc/src/main/resources/instructions/step11.txt.ftl
index 9c8df50844..5186a299e2 100644
--- a/buildSrc/src/main/resources/email/release.step10.vote.subject.ftl
+++ b/buildSrc/src/main/resources/instructions/step11.txt.ftl
@@ -18,4 +18,12 @@
under the License.
-->
-[FINERACT] [VOTE] 🗳️ ${project['fineract.release.version']} for release
+
+
+[INSTRUCTIONS:START]
+
+Conclude voting with the ATR (ASF Trusted Releases) tool.
+
+https://release-test.apache.org
+
+[INSTRUCTIONS:END]
diff --git a/fineract-doc/src/docs/en/chapters/release/process-step10.adoc
b/fineract-doc/src/docs/en/chapters/release/process-step10.adoc
index 5a1a82a70d..a7ba519d6d 100644
--- a/fineract-doc/src/docs/en/chapters/release/process-step10.adoc
+++ b/fineract-doc/src/docs/en/chapters/release/process-step10.adoc
@@ -2,19 +2,14 @@
== Description
-Voting has to be done on [email protected]. You can close the vote
after voting period expires (72 hours) and you accumulate sufficient votes
(minimum 3 x +1 PMC votes).
-
-[source,text]
-----
-include::{rootdir}/buildSrc/src/main/resources/email/release.step10.vote.subject.ftl[lines=21..]
-
-include::{rootdir}/buildSrc/src/main/resources/email/release.step10.vote.message.ftl[lines=21..]
-----
+Initiate voting with https://release-test.apache.org[the ATR (ASF Trusted
Releases) tool].
== Gradle Task
.Command
[source,bash,subs="attributes+,+macros"]
----
-./gradlew fineractReleaseStep10 -Pfineract.release.version={revnumber}
+./gradlew fineractReleaseStep10
----
+
+INFO: Use the ATR for this task.
diff --git a/fineract-doc/src/docs/en/chapters/release/process-step11.adoc
b/fineract-doc/src/docs/en/chapters/release/process-step11.adoc
index 62aab040ed..51a3de3190 100644
--- a/fineract-doc/src/docs/en/chapters/release/process-step11.adoc
+++ b/fineract-doc/src/docs/en/chapters/release/process-step11.adoc
@@ -2,19 +2,14 @@
== Description
-Upon receiving 3 x +1 from the PMC, or after 72 hours (whichever one comes
first), reply to the voting thread and add the prefix "[RESULT]" to the subject
line with the results, as follows:
-
-[source,text]
-----
-include::{rootdir}/buildSrc/src/main/resources/email/release.step11.vote.subject.ftl[lines=21..]
-
-include::{rootdir}/buildSrc/src/main/resources/email/release.step11.vote.message.ftl[lines=21..]
-----
+Conclude voting with https://release-test.apache.org[the ATR (ASF Trusted
Releases) tool].
== Gradle Task
.Command
[source,text,subs="attributes+,+macros"]
----
-./gradlew fineractReleaseStep11 -Pfineract.release.version={revnumber}
+./gradlew fineractReleaseStep11
----
+
+INFO: Use the ATR for this task.