如何修复 GoReleaser 的“gpg:签名失败:没有密钥”?

问题描述 投票:0回答:0

Context:这是我正在使用的GoReleaser项目。

如何重现

  1. 将多个环境变量导出到
    .release_env
GOPATH="..."
GPG_FINGERPRINT="..."
GPG_PASSWORD="..."
GPG_KEY="..."

其中

GPG_KEY
GPG_PRIVATE_KEY
但这个项目称它为
GPG_KEY

GPG_KEY(可选)- 默认为 /secrets/key.gpg。如果找不到文件则忽略

  1. 奔跑
    docker run \
        --rm \
        --env-file .release-env \
        -v /var/run/docker.sock:/var/run/docker.sock \
        -v `pwd`:/go/src/$(PACKAGE_NAME) \
        -v `pwd`/sysroot:/sysroot \
        -w /go/src/$(PACKAGE_NAME) \
        goreleaser/goreleaser-cross:v1.20 \
        --rm-dist --skip-validate --skip-publish --debug

然后你会看到:

    • signing  artifact=my-app_2.0_SHA256SUMS cmd=gpg signature=dist/terraform-provider-confluent-internal_1.34.111111_SHA256SUMS.sig
gpg: directory '/root/.gnupg' created
gpg: keybox '/root/.gnupg/pubring.kbx' created
gpg: skipped "FOOFOOFOOFOOFOOFOOFOOFOO": No secret key
gpg: signing failed: No secret key
  ⨯ release failed after 51s

其中

"FOOFOOFOOFOOFOOFOOFOOFOO"
的值为
GPG_FINGERPRINT
变量。

我的想法:

  1. vars 的值不正确——我确实检查过它们是否有效。
  2. 我应该通过
    GPG_PUBLIC_KEY
    而不是
    GPG_PRIVATE_KEY
    GPG_KEY
    。基于this代码似乎使用
    GPG_PRIVATE_KEY
    是正确的想法。
  3. Enabled
    --debug
    模式 - 已经做到了,但没有太大帮助。
  4. 当我搜索类似的问题时,我发现其中大部分是关于缺少 gpg 可执行文件或似乎不适用于此处的内容。
  5. 查看了 goreleaser 的“签名”阶段的源代码——它看起来对我来说有点太高级了。

在这一点上我没有想法。

gnupg gpg-agent goreleaser
© www.soinside.com 2019 - 2024. All rights reserved.