Github Action加密文件的处理

3 2月

GitHub Action提供了对于Secrets的支持,可以保存常见的私密信息,比如API_TOKEN等信息,但是对于有些场景还需要私密文件的支持,比如Flutter打包Android APK的时候需要两个文件,一个是key.jks,另外一个是相关配置,一般为key.properties或者放在local.properties中。

这种情况可以先本地加密需要的文件,然后在Github Action中解密,解密所需的信息放在Github Action Secrets即可。

这里使用gpg AES256进行加密,指令如下:

gpg --symmetric --cipher-algo AES256 key.properties

加密的时候输入秘钥,并配置在Github Action Secrets中。将加密好的文件放在.github目录中,并创建解密用的脚本

#!/bin/sh

# Decrypt the file
gpg --quiet --batch --yes --decrypt --passphrase="$LARGE_SECRET_PASSPHRASE" \
--output $GITHUB_WORKSPACE/android/key.properties $GITHUB_WORKSPACE/.github/secrets/key.properties.gpg

echo "Decrypt key.properties done"

gpg --quiet --batch --yes --decrypt --passphrase="$LARGE_SECRET_PASSPHRASE" \
--output $GITHUB_WORKSPACE/.github/secrets/key.jks $GITHUB_WORKSPACE/.github/secrets/key.jks.gpg

echo "Decrypt key.jks done"

目录结构如下:

.github目录结构

在对应的CI脚本中新增一行

- name: Decrypt large secret
  run: ./.github/scripts/decrypt_secret.sh
  env:
   LARGE_SECRET_PASSPHRASE: ${{ secrets.LARGE_SECRET_PASSPHRASE }}

参考

https://help.github.com/cn/actions/automating-your-workflow-with-github-actions/creating-and-using-encrypted-secrets

发表评论

电子邮件地址不会被公开。