如何在 Github Actions Job 期间用代码中的 Secret 替换 API 密钥?
How to replace a API key with a Secret in code during Github Actions Job?
我通常将我的 API 密钥隐藏在 XML 文件中,并使用 .gitignore
和 getString()
来检索我的 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 ).
我通常将我的 API 密钥隐藏在 XML 文件中,并使用 .gitignore
和 getString()
来检索我的 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 ).