Znalazłem sposób dodawania poświadczeń/kluczy API do gradle.properties
poprzez kółko CI. Pozwala projektom Android odwoływać się do gradle.properties
poświadczeń w taki sam sposób dla kompilacji lokalnych i CircleCI.
Najpierw przechowuj poświadczenia w ustawieniach projektu Koło CI jako zmienne środowiskowe, które z założenia mają być prywatne. W interfejsie Circle CI GUI przejdź do swojego projektu, a następnie wybierz "Ustawienia projektu" w prawym górnym rogu. W menu po lewej stronie kliknij "Zmienne środowiskowe", które znajdują się w nagłówku "Poprawki". Tutaj możesz dodać swoje dane uwierzytelniające jako parę wartości nazw.
Następnie utwórz skrypt bash w projekcie Android, który zapisze zmienne środowiskowe Koel CI w lokalnym pliku gradle.properties
. Napisałem taki skrypt i posted it here as gist. Oto metoda, która działa:
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
}
Ten skrypt jest wywoływany tylko podczas Kręgu CI budować, a nie podczas lokalnego buduje. Powoływanie się na ten scenariusz jako zależność wstępnego procesu w pliku circle.yml, żeby gradle.properties
jest napisane przed faktycznym build Gradle zaczyna:
dependencies:
pre:
- source environmentSetup.sh && copyEnvVarsToGradleProperties
Będzie nadal uzyskać dostęp do kluczy API w build.gradle tak jak ty zawsze:
buildConfigField("String", "THIS_TEST_API_KEY", "\"" + TEST_API_KEY + "\"")
tam nie sposób odczytać z właściwości zmiennych env zamiast gradle.properties? ponieważ jeśli chcesz dodać lub usunąć zmienną, wiele rzeczy jest edytowanych ... – Caipivara
Ładne rozwiązanie! Musiałem dodać 'mkdir ~/.gradle -p' przed dotknięciem, ponieważ nie udało się, jeśli jeszcze nie utworzono katalogu' .gradle'. – WindRider
skończyło się za pomocą tego https://gist.github.com/danielgomezrico/461bf74a24dd5efd28abef1bebc0f05d – Caipivara