| 1 |
|
| 2 |
|
| 3 |
|
| 4 |
|
| 5 |
|
| 6 |
|
| 7 |
|
| 8 |
|
| 9 |
|
| 10 |
|
| 11 |
set -euo pipefail |
| 12 |
cd "$(dirname "$0")/.." |
| 13 |
b64=${KEYSTORE_B64:-/run/secrets/android-keystore} |
| 14 |
password=${PASSWORD_FILE:-/run/secrets/android-keystore-password} |
| 15 |
|
| 16 |
|
| 17 |
firebase=${FIREBASE_CONFIG:-/run/secrets/firebase-config} |
| 18 |
for f in "$b64" "$password"; do |
| 19 |
[ -s "$f" ] || { echo "release: no $f: the job needs the android-keystore secrets" >&2; exit 1; } |
| 20 |
done |
| 21 |
|
| 22 |
KEYSTORE_B64="$b64" PASSWORD_FILE="$password" FIREBASE_CONFIG="$firebase" bash scripts/release-check.sh |
| 23 |
version=$(sed -n 's/^oxygenhub\.version=//p' gradle.properties) |
| 24 |
[ -n "$version" ] || { echo "release: no oxygenhub.version in gradle.properties" >&2; exit 1; } |
| 25 |
|
| 26 |
|
| 27 |
jdks=$( (ls -d /opt/gradle-home/jdks/*/ 2>/dev/null || true) | sed 's:/$::' | paste -sd, -) |
| 28 |
if [ -n "$jdks" ] && [ -n "${GRADLE_USER_HOME:-}" ]; then |
| 29 |
mkdir -p "$GRADLE_USER_HOME" |
| 30 |
{ |
| 31 |
echo "org.gradle.java.installations.paths=$jdks" |
| 32 |
echo "org.gradle.java.installations.auto-download=false" |
| 33 |
} >> "$GRADLE_USER_HOME/gradle.properties" |
| 34 |
fi |
| 35 |
|
| 36 |
|
| 37 |
keys=$(mktemp -d) |
| 38 |
trap 'rm -rf "$keys"' EXIT |
| 39 |
chmod 700 "$keys" |
| 40 |
base64 -d "$b64" > "$keys/release.p12" |
| 41 |
export OXYGENHUB_KEYSTORE="$keys/release.p12" OXYGENHUB_KEYSTORE_PASSWORD_FILE="$password" |
| 42 |
if [ -s "$firebase" ]; then |
| 43 |
cp "$firebase" app/google-services.json |
| 44 |
trap 'rm -rf "$keys" app/google-services.json' EXIT |
| 45 |
else |
| 46 |
echo "release: no $firebase: this release takes no alerts" >&2 |
| 47 |
fi |
| 48 |
gradle=$(command -v gradle || echo ./gradlew) |
| 49 |
"$gradle" --offline --no-daemon :app:assembleRelease |
| 50 |
|
| 51 |
apk=app/build/outputs/apk/release/app-release.apk |
| 52 |
[ -f "$apk" ] || { echo "release: no $apk (was it signed? an unsigned build is app-release-unsigned.apk)" >&2; exit 1; } |
| 53 |
sdk=${ANDROID_HOME:-${ANDROID_SDK_ROOT:-}} |
| 54 |
apksigner=$(ls -d "$sdk"/build-tools/*/apksigner 2>/dev/null | sort -V | tail -1) |
| 55 |
"$apksigner" verify --print-certs "$apk" | grep -E '^Signer #1 certificate (DN|SHA-256)' |
| 56 |
|
| 57 |
|
| 58 |
|
| 59 |
rm -rf dist |
| 60 |
mkdir -p dist |
| 61 |
|
| 62 |
mv "$apk" dist/oxygenhub-android-universal.apk |
| 63 |
echo "$(sha256sum < dist/oxygenhub-android-universal.apk | cut -d' ' -f1) oxygenhub-android-$version-universal.apk" > dist/SHA256SUMS |
| 64 |
echo "release: oxygenhub-android-$version-universal.apk" |