我正在为Android项目设置Circle CI构建,并且想知道如何将gradle.properties
文件添加到我的项目构建中。我使用本地gradle.properties
来存储我的API密钥和敏感数据。其他CI工具(即Jenkins)允许您上传gradle.properties
文件以在所有版本中使用,但我无法在Circle CI中找到这样做的方法。
似乎环境变量是Circle CI允许您向项目添加秘密凭据的唯一方式。
有没有办法在Circle CI构建中使用gradle.properties中的凭据?
答案 0 :(得分:12)
我找到了一种通过Circle CI向gradle.properties
添加凭据/ API密钥的方法。它允许Android项目以相同的方式为本地和CircleCI构建引用gradle.properties
凭据。
第一步,将您的凭据存储在Circle CI项目设置中作为环境变量,这些变量保证是私有的。在Circle CI GUI中,转到您的项目,然后选择右上角的“项目设置”。在左侧的菜单中,单击“Tweaks”标题下的“Environment variables”。您可以在此处将凭据添加为名称值对。
接下来,在Android项目中创建一个bash脚本,将您的Circle CI环境变量写入本地gradle.properties
文件。我写了这样一个脚本posted it here as gist。以下是完成工作的方法:
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
}
此脚本仅在Circle CI构建期间调用,而不是在本地构建期间调用。在circle.yml文件中调用此脚本作为预处理依赖项,以便在实际的gradle构建开始之前编写gradle.properties
:
dependencies:
pre:
- source environmentSetup.sh && copyEnvVarsToGradleProperties
您将继续像以前一样访问build.gradle中的API密钥:
buildConfigField("String", "THIS_TEST_API_KEY", "\"" + TEST_API_KEY + "\"")
答案 1 :(得分:1)
将gradle.properties
中的所有属性添加到CircleCI“环境变量”中,但在它们前面添加:
ORG_GRADLE_PROJECT_