This is an automated email from the ASF dual-hosted git repository.
ddekany pushed a commit to branch 2.3-gae
in repository https://gitbox.apache.org/repos/asf/freemarker.git
The following commit(s) were added to refs/heads/2.3-gae by this push:
new 06914fa5 Build: Added freemarker.allowUnsignedReleaseBuild Gradle
property, and set it to true in the GitHub "CI" action
06914fa5 is described below
commit 06914fa59ec5803cd881c819ac3c1bbc296fe8f6
Author: ddekany <[email protected]>
AuthorDate: Tue Dec 26 10:59:47 2023 +0100
Build: Added freemarker.allowUnsignedReleaseBuild Gradle property, and set
it to true in the GitHub "CI" action
---
.github/workflows/ci.yml | 2 +-
README.md | 6 ++++--
.../main/kotlin/freemarker/build/FreemarkerRootExtension.kt | 5 +++++
.../main/kotlin/freemarker/build/FreemarkerRootPlugin.kt | 13 +++++--------
gradle.properties | 3 +++
5 files changed, 18 insertions(+), 11 deletions(-)
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 93761211..ef7730d7 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -52,7 +52,7 @@ jobs:
uses: gradle/[email protected]
- name: Run Build
id: build_step
- run: './gradlew "-Pfreemarker.signMethod=none" --continue clean build'
+ run: './gradlew "-Pfreemarker.signMethod=none"
"-Pfreemarker.allowUnsignedReleaseBuild=true" --continue clean build'
- name: Upload Failed Report
uses: actions/[email protected]
if: failure() && steps.build_step.outcome == 'failure'
diff --git a/README.md b/README.md
index d3424c20..5c23bd74 100644
--- a/README.md
+++ b/README.md
@@ -129,8 +129,10 @@ To see how the project would be deployed to Maven Central,
issue
`./gradlew publishAllPublicationsToLocalRepository`,
and check the `build/local-deployment` directory.
-To also build the distribution artifacts (the `tgz`-s that people can
download), run `./gradlew build`. However,
-for a stable version you will also need to set up signing; see
`gradle.properties` in this project for pointers.
+To build the distribution artifacts (the `tgz`-s that people can download),
run `./gradlew build`.However,
+
+For a stable (non-SNAPSHOT) version number, you will need to set up signing,
or disable that verification;
+see `gradle.properties` in this project for those!
See `gradle.properties` for some Gradle properties that you may what to set,
especially if you are building a release.
diff --git
a/buildSrc/src/main/kotlin/freemarker/build/FreemarkerRootExtension.kt
b/buildSrc/src/main/kotlin/freemarker/build/FreemarkerRootExtension.kt
index dfdd9b3d..c54c491f 100644
--- a/buildSrc/src/main/kotlin/freemarker/build/FreemarkerRootExtension.kt
+++ b/buildSrc/src/main/kotlin/freemarker/build/FreemarkerRootExtension.kt
@@ -206,6 +206,11 @@ class FreemarkerRootExtension constructor(
.map { SignatureConfiguration.valueOf(it.uppercase()) }
.get()
+ val allowUnsignedReleaseBuild = context.providers
+ .gradleProperty("allowUnsignedReleaseBuild")
+ .map { it.toBoolean() }
+ .getOrElse(false)
+
private val allConfiguredSourceSetNamesRef =
project.objects.setProperty<String>()
val allConfiguredSourceSetNames: Provider<Set<String>> =
allConfiguredSourceSetNamesRef
diff --git a/buildSrc/src/main/kotlin/freemarker/build/FreemarkerRootPlugin.kt
b/buildSrc/src/main/kotlin/freemarker/build/FreemarkerRootPlugin.kt
index bbb2fb07..f30c5bf1 100644
--- a/buildSrc/src/main/kotlin/freemarker/build/FreemarkerRootPlugin.kt
+++ b/buildSrc/src/main/kotlin/freemarker/build/FreemarkerRootPlugin.kt
@@ -28,11 +28,7 @@ import
org.gradle.api.publish.maven.tasks.AbstractPublishToMaven
import org.gradle.api.tasks.SourceSet
import org.gradle.api.tasks.bundling.Jar
import org.gradle.jvm.toolchain.JavaLanguageVersion
-import org.gradle.kotlin.dsl.configure
-import org.gradle.kotlin.dsl.filter
-import org.gradle.kotlin.dsl.named
-import org.gradle.kotlin.dsl.the
-import org.gradle.kotlin.dsl.withType
+import org.gradle.kotlin.dsl.*
import org.gradle.language.base.plugins.LifecycleBasePlugin
import org.gradle.language.jvm.tasks.ProcessResources
@@ -89,10 +85,11 @@ open class FreemarkerRootPlugin : Plugin<Project> {
doLast {
if (ext.versionService.developmentBuild) {
- throw IllegalStateException("The development build
configuration is active!")
+ throw IllegalStateException("The development build
configuration is active, which is not allowed for release versions!")
}
- if (!ext.signMethod.needSignature()) {
- throw IllegalStateException("Package signing is
disabled!")
+ if (!ext.signMethod.needSignature() &&
!ext.allowUnsignedReleaseBuild) {
+ throw IllegalStateException("Package signing is
disabled, which is not allowed for release versions! "
+ + "(For testing purposes only, you may set the
Gradle property to false)")
}
}
}
diff --git a/gradle.properties b/gradle.properties
index 874f1fd6..6e773bf5 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -30,6 +30,9 @@ freemarker.signMethod=none
# signing.secretKeyRingFile=...
# - For gpg_command, you need GNU Privacy Guard installed, and you don't have
to set anything if it's on the path.
+# To allow building for a releasable version number when
freemarker.signMethod=none. Only use for CI, and local testing!
+#freemarker.allowUnsignedReleaseBuild=false
+
# To publish to the Apache Maven repo (for staging), somewhere you have to set
these:
#freemarker.deploy.apache.user=<your user name at the ASF>
#freemarker.deploy.apache.password=<your regular ASF password>