Can Circle CI可以参考gradle.properties凭据吗?

Kio*_*tch 8 continuous-integration android gradle circleci

我正在为Android项目设置Circle CI构建,并且想知道如何将gradle.properties文件添加到我的项目构建中.我使用本地gradle.properties来存储我的API密钥和敏感数据.其他CI工具(即Jenkins)允许您上传gradle.properties文件以在所有版本中使用,但我无法在Circle CI中找到这样做的方法.

似乎环境变量是Circle CI允许您向项目添加秘密凭据的唯一方式.

有没有办法在Circle CI构建中使用gradle.properties中的凭据?

Kio*_*tch 12

我找到了一种gradle.properties通过Circle CI 添加凭证/ API密钥的方法.它允许Android项目以gradle.properties相同的方式为本地和CircleCI构建引用凭据.

第一步,将您的凭据存储在Circle CI项目设置中作为环境变量,这些变量保证是私有的.在Circle CI GUI中,转到您的项目,然后选择右上角的"项目设置".在左侧的菜单中,单击"Tweaks"标题下的"Environment variables".您可以在此处将凭据添加为名称值对.

接下来,在Android项目中创建一个bash脚本,将您的Circle CI环境变量写入本地gradle.properties文件.我已经写了这样一个脚本,并在此作为要点发布.这是完成工作的方法:

function copyEnvVarsToGradleProperties {
    GRADLE_PROPERTIES=$HOME"/.gradle/gradle.properties"
    export GRADLE_PROPERTIES
    echo "Gradle Properties should exist at $GRADLE_PROPERTIES"

    if [ ! -f "$GRADLE_PROPERTIES" ]; then
        echo "Gradle Properties does not exist"

        echo "Creating Gradle Properties file..."
        touch $GRADLE_PROPERTIES

        echo "Writing TEST_API_KEY to gradle.properties..."
        echo "TEST_API_KEY=$TEST_API_KEY_ENV_VAR" >> $GRADLE_PROPERTIES
    fi
}
Run Code Online (Sandbox Code Playgroud)

此脚本仅在Circle CI构建期间调用,而不是在本地构建期间调用.在circle.yml文件中调用此脚本作为预处理依赖项,以便gradle.properties在实际的gradle构建开始之前编写:

dependencies:
    pre:
        - source environmentSetup.sh && copyEnvVarsToGradleProperties
Run Code Online (Sandbox Code Playgroud)

您将继续像以前一样访问build.gradle中的API密钥:

buildConfigField("String", "THIS_TEST_API_KEY", "\"" + TEST_API_KEY + "\"")

  • 好的解决方案 如果还没有创建`.gradle`目录,我必须在触摸之前添加`mkdir~/.gradle -p`. (4认同)

小智 5

将中的所有属性添加gradle.properties到CircleCI“环境变量”中,但在它们前面添加:

ORG_GRADLE_PROJECT_
Run Code Online (Sandbox Code Playgroud)