This is an automated email from the ASF dual-hosted git repository. meonkeys pushed a commit to branch develop in repository https://gitbox.apache.org/repos/asf/fineract.git
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.
