Back to results for “iOS”
Flutter › CI/CD Pipelines for Flutter Apps

How can a CI/CD pipeline securely handle sensitive signing credentials, such as an Android keystore file or an iOS certificate, needed to produce a properly signed release build?

Intermediate

Answer

Signing credentials such as an Android keystore file, its associated passwords, or an iOS distribution certificate are highly sensitive and must never be committed directly into a source code repository, and CI/CD platforms instead provide a mechanism for securely storing these kinds of sensitive values as encrypted secrets, which are then injected into the build environment only at the moment they are actually needed during the automated signing process, keeping them safely hidden from anyone browsing the actual repository code or configuration files themselves.
# Referencing a GitHub Actions encrypted secret
echo "${{ secrets.ANDROID_KEYSTORE_BASE64 }}" | base64 -d > release.keystore
Real-world example A team stores their Android release keystore as a base64 encoded encrypted secret within their CI platform's settings, decoding and using it only momentarily during the actual automated signing step, without that sensitive file ever being visible anywhere within their source code repository.

Common follow-ups: What happens if a signing secret is accidentally leaked or exposed?;How does managing iOS signing credentials in CI differ from managing Android signing credentials?