我正在使用Github操作构建一个Android apk,我需要使用Android签名键,以便在发布之前对其进行签名。
为此,我使用GPG描述的technic 这里将发布密钥加密为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也无济于事,因为它说它已经安装了。
有什么想法吗?
发布于 2020-07-07 10:44:22
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秘密包含无效数据。
发布于 2021-09-18 15:12:11
我也犯了同样的错误。我犯了一个愚蠢的错误,不知道你是否也犯了同样的错误。当将基64密钥存储字符串复制到git机密时,我只是复制base64字符串,而不是整个文件。也就是说,整个.asc文件是这样的:
-----BEGIN PGP MESSAGE-----
**base64 string here**
-----END PGP MESSAGE-----您需要复制这个完整的文件内容(包括BEGIN和END消息)。这解决了我的问题。
https://stackoverflow.com/questions/62659589
复制相似问题