我正在为一个Android项目设置一个循环CI构建,并想知道如何将一个gradle.properties文件添加到我的项目构建中。我使用本地gradle.properties来存储API密钥和敏感数据。其他CI工具(即Jenkins)允许您上传一个gradle.properties文件,以便在所有构建中使用,但我无法在圆周CI中找到这样做的方法。
环境变量似乎是循环CI允许您向项目添加秘密凭据的唯一方法。
有没有办法在圆环CI构建中使用来自gradle.properties的凭据?
发布于 2016-02-16 19:05:36
我找到了一种通过圆环CI向gradle.properties添加凭据/ API键的方法。它允许Android项目以本地和CircleCI构建相同的方式引用gradle.properties的凭据。
第一步,将您的凭据存储在您的循环CI项目设置中,作为环境变量,这些变量保证是私有的。在圆环CI GUI,转到您的项目,然后选择“项目设置”在右上角。在左侧的菜单中,单击“环境变量”,它位于“微调”标题下。在这里,您可以将凭据添加为名称值对。
接下来,在您的Android项目中创建一个bash脚本,它将将您的循环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
}此脚本仅在循环CI构建期间调用,而不是在本地构建过程中调用。将此脚本作为circle.yml文件中的预处理依赖项调用,以便在实际的gradle构建开始之前编写gradle.properties:
dependencies:
pre:
- source environmentSetup.sh && copyEnvVarsToGradleProperties您将一如既往地继续访问build.gradle中的API键:
buildConfigField("String", "THIS_TEST_API_KEY", "\"" + TEST_API_KEY + "\"")
发布于 2018-09-23 23:52:41
将gradle.properties中的所有属性添加到CircleCI“环境变量”,但在它们前面加上:
ORG_GRADLE_PROJECT_发布于 2022-04-22 21:06:22
根据环境的不同,还可以使用base64对gradle.properties进行编码/解码。在我的macOS CircleCI环境中,这对我起了作用:
gradle.properties文件进行了编码:
base64 < gradle.properties > encoded-gradle.propertiesencoded-gradle.properties中的值,并将其放在CircleCI环境变量中(在本例中,名为变量:GRADLE_PROPERTIES_DATA)在我的CircleCI config.yaml文件中,在构建之前,使用以下方法创建gradle.properties文件并解码编码的值并将其放置在gradle.properties中:
echo $GRADLE_PROPERTIES_DATA | base64 --decode > gradle.propertieshttps://stackoverflow.com/questions/35440907
复制相似问题