Github操作gpg解密会导致错误(gpg:未找到有效的OpenPGP数据)



我正在使用Github操作构建一个Android apk,我需要使用Android签名密钥才能在发布之前对其进行签名。

为此,我使用此处描述的 GPG 技术将发布密钥加密为 base64 字符串,并将其用作 Github 操作中的机密。

然后,在我的工作流程中,我使用 GPG 将其解密回密钥文件。

但是,这个过程在我的Mac上运行良好,但在Github操作中失败。

运行此

- name: Decode keystore file
run: |
echo "${{ secrets.KEY_STORE }}" > release.keystore.asc
gpg -d --passphrase "${{ secrets.KEY_STORE_PASSPHRASE }}" --batch release.keystore.asc > signing-key.jks

结果是这个

gpg: directory '/home/runner/.gnupg' created
gpg: keybox '/home/runner/.gnupg/pubring.kbx' created
gpg: no valid OpenPGP data found.
gpg: decrypt_message failed: Unknown system error
##[error]Process completed with exit code 2.

在使用 GPG 之前运行sudo apt-get install ca-certificates也无济于事,因为它说它已经安装了。

有什么想法吗?

似乎release.keystore.asc包含无效的PGP数据或根本没有数据。首先,我会检查release.keystore.asc的内容。您可以将文件作为工件上传,然后下载它以检查其内容。通过在解码密钥库文件步骤之后添加upload-artifact操作步骤来修改工作流

- name: Decode keystore file
run: |
echo "${{ secrets.KEY_STORE }}" > release.keystore.asc
gpg -d --passphrase "${{ secrets.KEY_STORE_PASSPHRASE }}" --batch release.keystore.asc > signing-key.jks
- uses: actions/upload-artifact@v2
if: failure()
with:
name: release.keystore.asc
path: release.keystore.asc

现在您可以下载release.keystore.asc工件(它将被压缩,因此您必须解压缩它(并检查该文件是否包含有效的 PGP 数据(该文件应以-----BEGIN PGP MESSAGE-----开头,以-----END PGP MESSAGE-----结尾,并包含有效的加密 PGP 内容(。如果没有,则意味着KEY_STORE密钥包含无效数据。

我遇到了同样的错误。我犯了一个愚蠢的错误,不确定你是否也犯了同样的错误。 在将 base 64 密钥存储字符串复制到 git secret 时,我只复制了 base64 字符串而不是整个文件。即 整个.asc文件是这样的:

-----BEGIN PGP MESSAGE-----
**base64 string here**
-----END PGP MESSAGE-----

您需要复制整个文件内容(包括BEGIN PGP和END PGP消息(。这解决了我的问题。

最新更新