You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决GitHub Actions中的“no default secret key”错误?

解决GitHub Actions中sbt-pgp签名时"no default secret key"错误

你遇到的问题是:在GitHub Actions工作流执行Scala项目发布时,尽管已配置PGP_PASSPHRASE和PGP_SECRET密钥,仍出现gpg找不到默认私钥的错误,导致签名失败。

核心原因

GitHub Actions的Runner环境是临时全新的,仅配置环境变量不足以让gpg识别密钥——必须手动将PGP私钥导入到Runner的gpg密钥环中,否则gpg无法找到可用的签名密钥。

解决方案

  1. 在工作流中添加PGP密钥导入步骤
    在执行sbt发布命令前,插入以下步骤导入私钥并设置默认密钥:

    - name: 导入PGP私钥
      run: |
        echo "$PGP_SECRET" | gpg --batch --import
        # 自动设置导入的私钥为默认密钥
        DEFAULT_KEY=$(gpg --list-secret-keys --keyid-format LONG | grep sec | awk '{print $2}' | cut -d/ -f2 | head -n1)
        gpg --batch --default-key "$DEFAULT_KEY"
      env:
        PGP_SECRET: ${{ secrets.PGP_SECRET }}
    
  2. 检查PGP密钥格式

    • 确认PGP_SECRET包含完整的私钥内容,首尾的-----BEGIN PGP PRIVATE KEY BLOCK-----和-----END PGP PRIVATE KEY BLOCK-----不能缺失
    • 若私钥是加密状态,确保PGP_PASSPHRASE与私钥的加密密码完全一致
  3. 验证密钥导入结果
    可在导入步骤后添加验证命令,确认密钥已成功导入:

    - name: 验证PGP密钥
      run: gpg --list-secret-keys
    

你提供的错误日志

[warn] so tooling can use it for eviction errors etc - https://www.scala-sbt.org/1.x/docs/Publishing.html
[info] gpg: no default secret key: No secret key
[info] gpg: signing failed: No secret key
[error] java.lang.RuntimeException: Failure running 'gpg --batch --pinentry-mode loopback --passphrase *** --detach-sign --armor --use-agent --output /home/runner/work/scala-reflection/scala-reflection/target/scala-3.3.0/scala-reflection-1.2.2.pom.asc /home/runner/work/scala-reflection/scala-reflection/target/scala-3.3.0/scala-reflection-1.2.2.pom'.  Exit code: 2
[error]     at scala.sys.package$.error(package.scala:30)
[error]     at com.jsuereth.sbtpgp.CommandLineGpgSigner.sign(PgpSigner.scala:74)
[error]     at com.jsuereth.sbtpgp.PgpSettings$.$anonfun$signingSettings$2(PgpSettings.scala:151)
[error]     at scala.collection.TraversableLike.$anonfun$flatMap$1(TraversableLike.scala:293)
[error]     at scala.collection.immutable.Map$Map4.foreach(Map.scala:493)
[error]     at scala.collection.TraversableLike.flatMap(TraversableLike.scala:293)
[error]     at scala.collection.TraversableLike.flatMap$(TraversableLike.scala:290)
[error]     at scala.collection.AbstractTraversable.flatMap(Traversable.scala:108)
[error]     at com.jsuereth.sbtpgp.PgpSettings$.$anonfun$signingSettings$1(PgpSettings.scala:146)
[error]     at scala.Function1.$anonfun$compose$1(Function1.scala:49)
[error]     at sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:62)
[error]     at sbt.std.Transform$$anon$4.work(Transform.scala:68)
[error]     at sbt.Execute.$anonfun$submit$2(Execute.scala:282)
[error]     at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:23)
[error]     at sbt.Execute.work(Execute.scala:291)
[error]     at sbt.Execute.$anonfun$submit$1(Execute.scala:282)
[error]     at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:265)
[error]     at sbt.CompletionService$$anon$2.call(CompletionService.scala:64)
[error]     at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[error]     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
[error]     at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[error]     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
[error]     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
[error]     at java.lang.Thread.run(Thread.java:750)
[error] (signedArtifacts) Failure running 'gpg --batch --pinentry-mode loopback --passphrase *** --detach-sign --armor --use-agent --output /home/runner/work/scala-reflection/scala-reflection/target/scala-3.3.0/scala-reflection-1.2.2.pom.asc /home/runner/work/scala-reflection/scala-reflection/target/scala-3.3.0/scala-reflection-1.2.2.pom'.  Exit code: 2
[error] Total time: 17 s, completed Sep 5, 2023 7:45:12 PM

Error: Process completed with exit code 1.

内容的提问来源于stack exchange,提问作者Greg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 11:37:44