Github Action加密文件的处理

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

转载自夜明的孤行灯

本文链接地址: https://www.huangyunkun.com/2020/02/03/github-action-large-secrets/



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



本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

转载自夜明的孤行灯

本文链接地址: https://www.huangyunkun.com/2020/02/03/github-action-large-secrets/

发表评论