Как заменить ключ 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).