This is an automated email from the ASF dual-hosted git repository.
jdaugherty pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/grails-gradle-publish.git
The following commit(s) were added to refs/heads/main by this push:
new 5a86f09 doc: update README for signing behaviors
5a86f09 is described below
commit 5a86f09398a9e458deb28c5c7b34f62ac2f1e0a7
Author: James Daugherty <[email protected]>
AuthorDate: Sun Oct 5 10:39:21 2025 -0400
doc: update README for signing behaviors
---
README.md | 38 ++++++++++++++++++++++++--------------
1 file changed, 24 insertions(+), 14 deletions(-)
diff --git a/README.md b/README.md
index b287206..52c89e6 100644
--- a/README.md
+++ b/README.md
@@ -17,22 +17,16 @@ limitations under the License.
Grails Publish Gradle Plugin
========
-Grails Publish is a Gradle plugin to ease publishing with the maven publish
plugin or the nexus publish plugin.
-
-Artifacts published by this plugin include sources, the jar file, and a
javadoc jar that contains both the groovydoc &
-javadoc.
+Grails Publish is a Gradle plugin to ease publishing with the maven publish
plugin or the nexus publish plugin. Artifacts published by this plugin include
sources, the jar file, and a javadoc jar (that contains both the groovydoc &
javadoc). This plugin is expected to be used with `snapshot` and `release`
builds and assumes `releases` will require signed artifacts.
Limitations
---
-This plugin currently acts as a wrapper around the `maven-publish` &
`nexus-publish` plugins. There are known
-limitations with the `nexus-publish` plugin - specifically, when it can be
applied in multiproject setups. Check out the
-functional test resources for specific scenarios that work and do not work.
+This plugin currently acts as a wrapper around the `maven-publish` &
`nexus-publish` plugins. There are known limitations with the `nexus-publish`
plugin - specifically, when it can be applied in multiproject setups. Check out
the functional test resources for specific scenarios that work and do not work.
Setup
---
-If obtaining the source from the source distribution and you intend to build
from source, you also need to download and
-install Gradle and use it to execute the bootstrap step so the correct version
of Gradle is used. This command will bootstrap gradle:
+If obtaining the source from the source distribution and you intend to build
from source, you also need to download and install Gradle and use it to execute
the bootstrap step so the correct version of Gradle is used. This command will
bootstrap gradle:
```shell
gradle -p gradle-bootstrap
@@ -72,7 +66,7 @@ And then apply the plugin:
apply plugin: 'org.apache.grails.gradle.grails-publish'
```
-Configuration
+Plugin Configuration: Initial Setup
---
Example Configuration:
@@ -124,11 +118,27 @@ The credentials and connection url must be specified as a
project property or an
NEXUS_PUBLISH_SNAPSHOT_URL
NEXUS_PUBLISH_STAGING_PROFILE_ID
-By default, the release or snapshot state is determined by the project.version
or projectVersion gradle property. To
-override this behavior, use the environment variable `GRAILS_PUBLISH_RELEASE`
with a boolean value to decide if it's a
-release or snapshot.
+By default, a `release` or `snapshot` build is determined by the
`project.version` or `projectVersion` gradle property. To override this
behavior, use the environment variable `GRAILS_PUBLISH_RELEASE` with a boolean
value to indicate if the build is a `release` or `snapshot`.
+
+### Plugin Configuration: Release Signing
+
+`release` builds are expected to be signed by this build. To disable this
behavior, add the following Gradle code:
+
+ project.pluginManager.withPlugin('signing') {
+ project.tasks.withType(Sign).configureEach {
+ it.enabled = false
+ }
+ }
+
+Signing requires a valid GPG key. The key ID, or the abbreviated ID, must
always be set using the property `signing.keyId` or environment variable
`SIGNING_KEY`. This can be extracted with the following GPG command: `gpg
--list-keys --keyid-format short | grep -Eo '[A-F0-9]{8}' | head -n 1`.
+
+The [Gradle Signing
Plugin](https://docs.gradle.org/current/userguide/signing_plugin.html) supports
many different signing configurations, this plugin configures the Signing
plugin by one of the following:
-## Release Verification
+1. Using a `secring.gpg` file: This file can be created with the command `gpg
--keyring secring.gpg --export-secret-keys > ./secring.gpg`. For CI
environments, it's often stored in base64 format as a secret and decoded at
runtime into a local file. To use this configuration specify the property
`signing.secretKeyRingFile` or the environment variable `SIGNING_KEYRING` with
path to the file. The property `signing.password` or environment variable
`SIGNING_PASSPHRASE` can be set to specify [...]
+2. Using the local GPG command with a private GPG or OpenPGP key. This
behavior is the default if the secring file is not configured. In a CI
environment, such as GitHub actions, GPG can be setup with the command: `echo
"${{ secrets.MY_GPG_KEY }}" | gpg --batch --import` and the import can be
confirmed successful by running the command `gpg --list-keys` to show the key
ID.
+
+Release Verification
+---
To verify a reproducible build from a staged release, you can use a
containerized environment such as docker to run in an environment equivalent to
GitHub actions. First, ensure the gradle wrapper is downloaded by running: