如何启用 github 操作访问 gradle 属性?

How to enable github actions access gradle properties?

我的 android 项目在 gradle 属性 ~/.gradle/gradle.properties 中使用了一些键。 git 故意忽略了这一点。有没有办法让 git 集线器操作访问这些属性?

~/.gradle/gradle.properties 是用户特定的属性,不应进行版本控制。

如果您有要与您的 Github 操作共享的密钥或任何敏感数据,请考虑使用加密的秘密。

https://help.github.com/en/actions/configuring-and-managing-workflows/creating-and-storing-encrypted-secrets

根据这个 page,可以在三个地方放置 gradle.properties 文件,其中之一包括项目的根文件夹。

如果在 git 集线器操作中需要 gradle.properties,请在项目的根文件夹中创建一个并提交到 git。您的主目录中的那个应该保留在那里。


如果您真的不想将任何 gradle.properties 文件提交给 git,我的第一个问题是为什么?

这是使用 secrets 的另一种方法。

假设您调用了秘密 GRADLE_PROPERTIES,那么您可以在其中一个步骤中执行类似的操作:

steps:
  - uses: actions/checkout@v2
  - name: Restore gradle.properties
    env:
      GRADLE_PROPERTIES: ${{ secrets.GRADLE_PROPERTIES }}
    shell: bash
    run: |
      mkdir -p ~/.gradle/
      echo "::set-env name=GRADLE_USER_HOME::$HOME/.gradle"
      echo ${GRADLE_PROPERTIES} > ~/.gradle/gradle.properties

此步骤运行后,gradle 现在将使用该文件进行自我配置,您的项目也将如此。

2021 年解决方案

我们需要使用 $GITHUB_ENV environment variable to store GRADLE_USER_HOME because the old ::set-env is depecated.

这是一个示例工作流程:

name: build
on: [ push ]
jobs:
  build-app:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout the code
        uses: actions/checkout@v2
      - name: Restore gradle.properties
        env:
          GRADLE_PROPERTIES: ${{ secrets.GRADLE_PROPERTIES }}
        shell: bash
        run: |
          mkdir -p ~/.gradle/
          echo "GRADLE_USER_HOME=${HOME}/.gradle" >> $GITHUB_ENV
          echo "${GRADLE_PROPERTIES}" > ~/.gradle/gradle.properties
      - name: Build the app
        run: ./gradlew build