【问题标题】:How to replace a API key with a Secret in code during Github Actions Job?如何在 Github Actions Job 期间用代码中的 Secret 替换 API 密钥?
【发布时间】:2020-07-14 12:50:03
【问题描述】:

我通常将我的 API 密钥隐藏在 XML 文件中,并使用 .gitignoregetString() 来检索我的 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

【问题讨论】:

    标签: github yaml github-actions building-github-actions


    【解决方案1】:

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

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

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

    【讨论】:

    • 嘿,我的文件在我的 git 工作区的深处,而且我不知道一点 perl 或设置它,我试过这个,但似乎没有构建,暗示它没有替换适当地。难道我做错了什么?运行:perl -pi -e 's/getString(R.string.token)/"$ENV{TOKEN}"/' app/src/main/java/com/cybershark/foodflix/fragments/RestaurantsFragment.kt 环境:TOKEN : ${{ secrets.API_KEY }}
    • 我已经更新了正则表达式来转义一些没有正确转义的字符,所以它现在应该可以工作了。您可以在您的计算机上测试它,方法是将TOKEN 设置为您的环境中的某个值,然后运行 ​​Perl 单行,并确保它执行您想要的替换。
    • 非常感谢,将来一定会研究 perl :) 我还需要为 $ENV{TOKEN} 添加另一组“”,因为它对我来说不是字符串.
    猜你喜欢
    • 2021-08-13
    • 2017-11-04
    • 2021-01-20
    • 2020-07-30
    • 2021-12-18
    • 2012-05-01
    • 2012-03-11
    • 2015-08-17
    • 1970-01-01
    相关资源
    最近更新 更多