2

我通常将我的 API 密钥隐藏在 XML 文件中,并使用.gitignorewithgetString()来检索我的 API 密钥。

我正在尝试使用 Github Actions 来自动化 Gradle 构建和调试 apk 的发布。由于 XML 文件没有上传到 repo,它显然失败了。

有没有办法将我的密钥存储在 Github Secrets 中,然后用密钥替换代码?

当前代码:headers["token"]= getString(R.string.token)
在 Github 操作服务器中替换代码:headers["token"]="MY_API_KEY_FROM_SECRETS"

这是我正在使用的 YAML 文件:

name: Gradle build test and release
on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - name: set up JDK 1.8
      uses: actions/setup-java@v1
      with:
        java-version: 1.8
   #I'd like to replace the api key here in code from secrets
    - name: Make Gradle executable
      run: chmod +x ./gradlew
    - name: Build with Gradle
      run: ./gradlew build
    - name: Build Debug APK
      run: ./gradlew assembleDebug
    - name: Releasing using Hub
      uses: ShaunLWM/action-release-debugapk@master
      env:
       GITHUB_TOKEN: ${{ secrets.TOKEN }}
       APP_FOLDER: app
       RELEASE_TITLE: New Build
       BODY: github.event.head_commit.message
       prerelease: true
4

1 回答 1

3

当然,这是可能的。你还没有说你想修改什么文件,但这应该很容易用单行(替换FILENAME为你的配置文件名)来完成:

- run: perl -pi -e 's/getString\(R\.string\.token\)/"$ENV{TOKEN}"/' FILENAME
  env:
    TOKEN: ${{ secrets.TOKEN }}

如果您更喜欢 Ruby 或其他脚本语言,则可以使用它。您也可以使用sed,但我更喜欢这种方法,因为这意味着该值在ps输出中永远不可用(即使这一个锁定的 VM)。

于 2020-04-02T23:05:21.153 回答