port steps 10 & 11 to the ATR
This commit is contained in:
@@ -196,36 +196,10 @@ fineract {
|
|||||||
step10: [
|
step10: [
|
||||||
order: 10,
|
order: 10,
|
||||||
description: 'Start voting on the dev mailing list',
|
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: 'dev@fineract.apache.org',
|
|
||||||
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: [
|
step11: [
|
||||||
order: 11,
|
order: 11,
|
||||||
description: 'Conclude the vote and announce results',
|
description: 'Conclude the vote and announce results',
|
||||||
email: [
|
|
||||||
from: "${findProperty('fineract.config.email')}",
|
|
||||||
name: "${findProperty('fineract.config.name')}",
|
|
||||||
to: "${findProperty('fineract.config.email')}",
|
|
||||||
// to: 'dev@fineract.apache.org',
|
|
||||||
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: [
|
step12: [
|
||||||
order: 12,
|
order: 12,
|
||||||
|
|||||||
@@ -18,7 +18,6 @@
|
|||||||
*/
|
*/
|
||||||
package org.apache.fineract.gradle
|
package org.apache.fineract.gradle
|
||||||
|
|
||||||
import groovy.json.JsonSlurper
|
|
||||||
import org.apache.commons.io.FileUtils
|
import org.apache.commons.io.FileUtils
|
||||||
import org.apache.commons.io.filefilter.NotFileFilter
|
import org.apache.commons.io.filefilter.NotFileFilter
|
||||||
import org.apache.commons.io.filefilter.PrefixFileFilter
|
import org.apache.commons.io.filefilter.PrefixFileFilter
|
||||||
@@ -384,23 +383,7 @@ class FineractPlugin implements Plugin<Project> {
|
|||||||
doFirst {
|
doFirst {
|
||||||
FineractPluginExtension.FineractPluginStep step = step(extension, "step10")
|
FineractPluginExtension.FineractPluginStep step = step(extension, "step10")
|
||||||
|
|
||||||
String version = project.properties?['fineract.release.version']
|
printInstructions(project, "step10")
|
||||||
|
|
||||||
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) )
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -409,28 +392,7 @@ class FineractPlugin implements Plugin<Project> {
|
|||||||
doFirst {
|
doFirst {
|
||||||
FineractPluginExtension.FineractPluginStep step = step(extension, "step11")
|
FineractPluginExtension.FineractPluginStep step = step(extension, "step11")
|
||||||
|
|
||||||
String version = project.properties?['fineract.release.version']
|
printInstructions(project, "step11")
|
||||||
|
|
||||||
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) )
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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']}
|
|
||||||
@@ -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']}
|
|
||||||
+9
-1
@@ -18,4 +18,12 @@
|
|||||||
under the License.
|
under the License.
|
||||||
|
|
||||||
-->
|
-->
|
||||||
[FINERACT] [VOTE] 🗳️ ${project['fineract.release.version']} for release
|
|
||||||
|
|
||||||
|
[INSTRUCTIONS:START]
|
||||||
|
|
||||||
|
Initiate voting with the ATR (ASF Trusted Releases) tool.
|
||||||
|
|
||||||
|
https://release-test.apache.org
|
||||||
|
|
||||||
|
[INSTRUCTIONS:END]
|
||||||
+9
-1
@@ -18,4 +18,12 @@
|
|||||||
under the License.
|
under the License.
|
||||||
|
|
||||||
-->
|
-->
|
||||||
[FINERACT] [VOTE] [RESULT] 🧾️ ${project['fineract.release.version']} for release
|
|
||||||
|
|
||||||
|
[INSTRUCTIONS:START]
|
||||||
|
|
||||||
|
Conclude voting with the ATR (ASF Trusted Releases) tool.
|
||||||
|
|
||||||
|
https://release-test.apache.org
|
||||||
|
|
||||||
|
[INSTRUCTIONS:END]
|
||||||
@@ -2,19 +2,14 @@
|
|||||||
|
|
||||||
== Description
|
== Description
|
||||||
|
|
||||||
Voting has to be done on dev@fineract.apache.org. You can close the vote after voting period expires (72 hours) and you accumulate sufficient votes (minimum 3 x +1 PMC votes).
|
Initiate voting with https://release-test.apache.org[the ATR (ASF Trusted Releases) tool].
|
||||||
|
|
||||||
[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..]
|
|
||||||
----
|
|
||||||
|
|
||||||
== Gradle Task
|
== Gradle Task
|
||||||
|
|
||||||
.Command
|
.Command
|
||||||
[source,bash,subs="attributes+,+macros"]
|
[source,bash,subs="attributes+,+macros"]
|
||||||
----
|
----
|
||||||
./gradlew fineractReleaseStep10 -Pfineract.release.version={revnumber}
|
./gradlew fineractReleaseStep10
|
||||||
----
|
----
|
||||||
|
|
||||||
|
INFO: Use the ATR for this task.
|
||||||
|
|||||||
@@ -2,19 +2,14 @@
|
|||||||
|
|
||||||
== Description
|
== 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:
|
Conclude voting with https://release-test.apache.org[the ATR (ASF Trusted Releases) tool].
|
||||||
|
|
||||||
[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..]
|
|
||||||
----
|
|
||||||
|
|
||||||
== Gradle Task
|
== Gradle Task
|
||||||
|
|
||||||
.Command
|
.Command
|
||||||
[source,text,subs="attributes+,+macros"]
|
[source,text,subs="attributes+,+macros"]
|
||||||
----
|
----
|
||||||
./gradlew fineractReleaseStep11 -Pfineract.release.version={revnumber}
|
./gradlew fineractReleaseStep11
|
||||||
----
|
----
|
||||||
|
|
||||||
|
INFO: Use the ATR for this task.
|
||||||
|
|||||||
Reference in New Issue
Block a user