This message was deleted.
# community-support
s
This message was deleted.
v
Can you show
--stacktrace
or optimally a build
--scan
with the error?
s
Unfortunately not 😅 As soon as I add a commit (to add
--stacktrace
) it runs without issues 😳
Hmm.. In my GH Action workflow I have this:
Copy code
env:
      GPG_SIGNING_KEY: ${{ secrets.GPG_SIGNING_KEY }}
      GPG_SIGNING_PASSWORD: ${{ secrets.GPG_SIGNING_PASSWORD }}
AFAIK the secrets can't be access by depenedabot. But by "me" as a admin of the repo.. 🤔 Maybe this is somehow related...
v
Maybe. Can you add the
--stacktrace
and then let dependabot rebase so that it runs again?
s
Alright, I can reproduce it locally. If I run locally:
Copy code
GPG_SIGNING_KEY=2 GPG_SIGNING_PASSWORD=1 ./gradlew publishToMavenLocal
It will report the same issue...
Copy code
* Exception is:
org.gradle.api.GradleException: Could not evaluate onlyIf predicate for task ':signCom.ioki.sentry.proguardPluginMarkerMavenPublication'.
        at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:57)
        at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
        at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:42)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:331)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:318)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.lambda$execute$0(DefaultTaskExecutionGraph.java:314)
        at org.gradle.internal.operations.CurrentBuildOperationRef.with(CurrentBuildOperationRef.java:80)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:314)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:303)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:463)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:380)
        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
        at org.gradle.internal.concurrent.AbstractManagedExecutor$1.run(AbstractManagedExecutor.java:47)
Caused by: org.gradle.api.GradleException: Could not evaluate spec for 'Signing is required, or signatory is set'.
        at org.gradle.api.internal.tasks.execution.SelfDescribingSpec.isSatisfiedBy(SelfDescribingSpec.java:42)
        at org.gradle.api.specs.AndSpec.findUnsatisfiedSpec(AndSpec.java:67)
        at org.gradle.api.internal.tasks.execution.DescribingAndSpec.findUnsatisfiedSpec(DescribingAndSpec.java:58)
        at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:50)
        ... 24 more
Caused by: org.gradle.api.InvalidUserDataException: Could not read PGP secret key
        at org.gradle.security.internal.pgp.BaseInMemoryPgpSignatoryProvider.createSignatory(BaseInMemoryPgpSignatoryProvider.java:93)
        at org.gradle.security.internal.pgp.BaseInMemoryPgpSignatoryProvider.lambda$new$0(BaseInMemoryPgpSignatoryProvider.java:56)
        at org.gradle.internal.lazy.LockingLazy.get(LockingLazy.java:61)
        at org.gradle.security.internal.pgp.BaseInMemoryPgpSignatoryProvider.getDefaultSignatory(BaseInMemoryPgpSignatoryProvider.java:64)
        at org.gradle.security.internal.pgp.BaseInMemoryPgpSignatoryProvider.getDefaultSignatory(BaseInMemoryPgpSignatoryProvider.java:43)
        at org.gradle.plugins.signing.SigningExtension.getSignatory(SigningExtension.java:199)
        at org.gradle.plugins.signing.SigningExtension_Decorated.getSignatory(Unknown Source)
        at org.gradle.util.internal.GUtil.uncheckedCall(GUtil.java:437)
        at org.gradle.internal.extensibility.ConventionAwareHelper$2.doGetValue(ConventionAwareHelper.java:115)
        at org.gradle.internal.extensibility.ConventionAwareHelper$MappedPropertyImpl.getValue(ConventionAwareHelper.java:171)
        at org.gradle.internal.extensibility.ConventionAwareHelper.getConventionValue(ConventionAwareHelper.java:148)
        at org.gradle.plugins.signing.Sign_Decorated.getSignatory(Unknown Source)
        at org.gradle.plugins.signing.Sign.lambda$new$b6ae1a43$1(Sign.java:98)
        at org.gradle.api.internal.tasks.execution.SelfDescribingSpec.isSatisfiedBy(SelfDescribingSpec.java:40)
        ... 27 more
Caused by: java.io.IOException: secret key ring doesn't start with secret key tag: tag 0xffffffff
        at org.bouncycastle.openpgp.PGPSecretKeyRing.<init>(Unknown Source)
        at org.bouncycastle.openpgp.jcajce.JcaPGPSecretKeyRing.<init>(Unknown Source)
        at org.gradle.security.internal.pgp.BaseInMemoryPgpSignatoryProvider.createSignatory(BaseInMemoryPgpSignatoryProvider.java:79)
        ... 40 more
v
Maybe you should only call
useInMemoryPgpKeys
if the properties are actually set. required false does not mean you do not get signature. required true means fail if signatory is not set, required false means sign if signatory is set but do not sign if signatory is not set. As you set the signatory, signing is tried even if required is false. But when it then tries to read the signature it fails with that exception as you gave empty strings as arguments when the secrets are not available like for dependabot.
💡 1
🐛 1
s
Thanks! That make sense 🙂
👌 1
btw, I have to disable
sign
not
useInMemeoryGpGkeys
🙂
Copy code
if (hasProperty("GPG_SIGNING_REQUIRED")) sign(publishing.publications)
v
That sounds strange though. If
required
is
false
and no signatory is set, signing should be skipped. Only if
required
is
true
or a signatory is set, signing is tried. So unless you also set another signatory, for example using
useGpgCmd()
or by setting the according project properties for the default signatory, not calling
useInMemeoryGpGkeys()
should be enough.
👍 1
s
💡 Ah, good point. I had something like
Copy code
signing {
    val signingKey = System.getenv("GPG_SIGNING_KEY")
    val signingPassword = System.getenv("GPG_SIGNING_PASSWORD")
    useInMemoryPgpKeys(signingKey, signingPassword)
    if (hasProperty("GPG_SIGNING_REQUIRED"))  sign(publishing.publications)
}
So I removed the
isRequired
property 😁 This works 👆 But if I add the
if
to the
useInMemoryGpgKeys
it will fail. But I guess the correct solution is something like this:
Copy code
signing {
    val signingKey = System.getenv("GPG_SIGNING_KEY")
    val signingPassword = System.getenv("GPG_SIGNING_PASSWORD")
    if (hasProperty("GPG_SIGNING_REQUIRED")) useInMemoryPgpKeys(signingKey, signingPassword)
    sign(publishing.publications)
    isRequired = hasProperty("GPG_SIGNING_REQUIRED")
}
v
Sounds better. Or you shuffle it around to only do the
hasProperty
once like
Copy code
isRequired = hasProperty("GPG_SIGNING_REQUIRED")
    if (isRequired) useInMemoryPgpKeys(signingKey, signingPassword)
    sign(publishing.publications)
🤯 1
s
hehe, yeah. Nice 🙂. Thanks again! 🫶
👌 1