首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >圆环CI能引用gradle.properties凭证吗?

圆环CI能引用gradle.properties凭证吗?
EN

Stack Overflow用户
提问于 2016-02-16 19:01:56
回答 3查看 3.3K关注 0票数 11

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

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

有没有办法在圆环CI构建中使用来自gradle.properties的凭据?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-02-16 19:05:36

我找到了一种通过圆环CI向gradle.properties添加凭据/ API键的方法。它允许Android项目以本地和CircleCI构建相同的方式引用gradle.properties的凭据。

第一步,将您的凭据存储在您的循环CI项目设置中,作为环境变量,这些变量保证是私有的。在圆环CI GUI,转到您的项目,然后选择“项目设置”在右上角。在左侧的菜单中,单击“环境变量”,它位于“微调”标题下。在这里,您可以将凭据添加为名称值对。

接下来,在您的Android项目中创建一个bash脚本,它将将您的循环CI环境变量写入本地gradle.properties文件。我写过这样一个脚本和把它贴在这里作为要点。下面是完成这项工作的方法:

代码语言:javascript
复制
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
}

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

代码语言:javascript
复制
dependencies:
    pre:
        - source environmentSetup.sh && copyEnvVarsToGradleProperties

您将一如既往地继续访问build.gradle中的API键:

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

票数 14
EN

Stack Overflow用户

发布于 2018-09-23 23:52:41

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

代码语言:javascript
复制
ORG_GRADLE_PROJECT_
票数 16
EN

Stack Overflow用户

发布于 2022-04-22 21:06:22

根据环境的不同,还可以使用base64gradle.properties进行编码/解码。在我的macOS CircleCI环境中,这对我起了作用:

  • 在本地macOS计算机上,我使用以下方法对多行gradle.properties文件进行了编码: base64 < gradle.properties > encoded-gradle.properties
  • 我复制了encoded-gradle.properties中的值,并将其放在CircleCI环境变量中(在本例中,名为变量:GRADLE_PROPERTIES_DATA)

在我的CircleCI config.yaml文件中,在构建之前,使用以下方法创建gradle.properties文件并解码编码的值并将其放置在gradle.properties中:

代码语言:javascript
复制
echo $GRADLE_PROPERTIES_DATA | base64 --decode > gradle.properties
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35440907

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档