如何在 Github Actions Job 期间用代码中的 Secret 替换 API 密钥?

How to replace a API key with a Secret in code during Github Actions Job?

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

我正在尝试使用 Github 操作来自动化 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

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

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

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