Как заменить ключ API секретным кодом в коде во время Github Actions Job?

Обычно я скрываю свой ключ API в файле XML и использую .gitignore вместе с getString() чтобы получить мой ключ API.

Я пытаюсь использовать Github Actions для автоматизации сборки Gradle и выпуска отладочных apk. Из-за того, что XML-файл не загружается в репо, он явно не работает.

Есть ли способ сохранить мой ключ в 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

1 ответ

Решение

Конечно, это возможно. Вы не сказали, какой файл хотите изменить, но это должно быть достаточно легко сделать с помощью однострочника (заменивFILENAME с именем вашего файла конфигурации):

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

Если вы предпочитаете Ruby или какой-либо другой язык сценариев, вы можете использовать его. Вы также можете использоватьsed, но я предпочитаю этот подход, потому что это означает, что значение никогда не доступно в psвыход (даже если это является заблокированной вниз VM).

Другие вопросы по тегам