Home › Build error fixes › CI (GitHub Actions, EAS, fastlane)
CI could not recreate the keystore
CI (GitHub Actions, EAS, fastlane) · last reviewed 2026-11-10
The error looks like this
base64: invalid input
Why it happens
The keystore secret is missing, empty on forked PRs, or was not decoded to the path gradle expects.
How to fix it
- Encode once: base64 -i upload.keystore | pbcopy and store as a repo secret.
- In the workflow: echo "$KEYSTORE_B64" | base64 --decode > android/app/upload.keystore
- Secrets are not available to pull requests from forks.
Not sure this is your error? Let ReleaseMedic read the whole log
Build logs are long and the last line is rarely the real cause. ReleaseMedic finds the first real error, explains it and gives the steps — free, and the log never leaves your computer.
$ npx releasemedic log build.logOr pipe a build straight in: cd android && ./gradlew bundleRelease 2>&1 | npx releasemedic log -
Catch it before you build
Most release errors come from project settings you can check in seconds — signing, SDK levels, privacy manifests, permissions, push and login setup.
$ npx releasemedic