【问题标题】:How to enable github action to access secret property file如何启用 github 操作以访问秘密属性文件
【发布时间】:2020-07-11 20:03:46
【问题描述】:

我正在开发一个涉及很多敏感 api 密钥的 android 项目。这些键存储在特定的 gradle 属性文件中,git 会忽略该文件。

secret.properties
apikey="938484738288274932228"

问题是如何启用 github 操作来访问此属性文件及其中的值,而无需将文件推送到 git。

已经尝试过 - 使用空白值制作后备属性文件(但将来的测试可能需要这些值)

【问题讨论】:

  • 您可以尝试使用 Transcrypt(不是 Python 之一 - elasticdog 的 this library),它允许您“透明地加密 git 存储库中的文件”,然后将密码和/或密码存储在您的秘密中如下丁科所述。
  • 有趣的方法,我只需要 gradle 就可以访问这些值,这样就可以了。

标签: java android gradle github github-actions


【解决方案1】:

所以这是我用来完成这项工作的方法。

  • 首先base64编码要隐藏的属性文件的文件内容。
  • 然后通过转到 Github Web 客户端中的设置将该 base64 字符串添加到 Github 密码中
  • 然后在项目中设置 GitHub 操作,并添加将解码后的内容从 GH secret 写入文件的任务
- name: Decode secrets.properties file
        env:
          SECRETS_PROPERTIES: ${{ secrets.SECRETS_PROPERTIES }}
        run: echo "$SECRETS_PROPERTIES" | base64 -d > ./secrets.properties
  • 在您的 build.gradle 文件(根目录或 /app 目录中的那个)中,您需要放置以下代码,以便让 Gradle 从 secrets.properties 文件加载属性。
def secretsPropertiesFile = rootProject.file("./secrets.properties")
def secretsProperties = new Properties()
secretsProperties.load(new FileInputStream(secretsPropertiesFile))
  • 访问 gradle 中的值将是 secretsProperties['apikey']

更多资源:

【讨论】:

  • 虽然这是一个不错的方法,但是如果您想从 GitHub 将项目克隆到另一台机器上怎么办,并且由于您在 gitignore 中有这些机密文件,因此这些文件将不可用。是否有任何解决方案这个?
  • 您需要与维护人员交谈以向您提供 git 之外的隐藏凭据。这是唯一的方法。您还应该确保不要误推它们。
猜你喜欢
  • 2022-08-13
  • 2020-09-11
  • 2021-10-22
  • 2021-05-12
  • 2021-11-22
  • 1970-01-01
  • 2020-09-19
  • 2021-06-27
  • 2021-06-25
相关资源
最近更新 更多