Github Actions GPG解密结果出现错误(gpg:未找到有效的OpenPGP数据)。

5

我正在使用Github actions构建Android apk,并在发布前需要使用Android签名密钥进行签名。

为此,我使用了在这里描述的技术,使用GPG将发布密钥加密为Base64字符串,并在Github actions中将其用作保密信息。

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

但是,在我的Mac上正常工作的过程在Github actions中失败了。

运行以下代码:

- 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没有任何帮助,因为它会显示已经安装了。有什么想法吗?
2个回答

2

看起来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 artifact(它将被压缩,因此您需要解压缩它),并检查文件是否包含有效的PGP数据(文件应以-----BEGIN PGP MESSAGE-----开头,以-----END PGP MESSAGE-----结尾,并包含有效的加密PGP内容)。如果没有,则说明KEY_STORE秘钥库包含无效数据。

1
我也曾遇到同样的错误。我犯了一个愚蠢的错误,不确定你是否也犯了同样的错误。在将base64密钥库字符串复制到git secret时,我只复制了base64字符串而没有复制整个文件。即整个.asc文件应该像这样:
-----BEGIN PGP MESSAGE-----
**base64 string here**
-----END PGP MESSAGE-----

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接