From 20de7069bdbbcf0cfa6e17cec88ccdec367f971c Mon Sep 17 00:00:00 2001 From: Andri Joos <andri@joos.io> Date: Wed, 24 Apr 2024 22:58:11 +0200 Subject: [PATCH] add flutter-android.gitlab-ci.yml --- flutter/flutter-android.gitlab-ci.yml | 60 +++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 flutter/flutter-android.gitlab-ci.yml diff --git a/flutter/flutter-android.gitlab-ci.yml b/flutter/flutter-android.gitlab-ci.yml new file mode 100644 index 0000000..44de25f --- /dev/null +++ b/flutter/flutter-android.gitlab-ci.yml @@ -0,0 +1,60 @@ +# Required variables: +## SIGNING_KEYSTORE: The keystore, base64 encoded +## SIGNING_STORE_FILE: The path to the keystore, storeFile property in the signing.properties file +## SIGNING_STORE_PW: The password for the keystore, keyPassword property in the signing.properties file +## SIGNING_KEY_PW: The password for the key, keyPassword property in the signing.properties file +## SIGNING_KEY_ALIAS: The alias for the key, keyAlias property in the signing.properties file +## APP_DIRECTORY: The directory of the app +## APP_NAME: The name of the output aab, the resulting apk will be named ${APP_NAME}_${APPLICATION_VERSION}.apk +## APPLICATION_VERSION: The build name of the application +## APPLICATION_BUILD_NUMBER: The build number of the application + +stages: + - build + +variables: + SIGNING_PROPERTIES_FILE: android/signing.properties + SINGING_KEYSTORE_FILE: android/signing-keystore.jks + FLUTTER_ANDROID_IMAGE: registry.420joos.dev/flutter:3.19.0-android + +android_build: + stage: build + image: + name: ${FLUTTER_ANDROID_IMAGE} + pull_policy: always + tags: + - amd64 + artifacts: + paths: + - ${APP_NAME}.aab + expire_in: 1 day + script: + - cd ${APP_DIRECTORY} + - echo "storePassword=$SIGNING_STORE_PW" >> $SIGNING_PROPERTIES_FILE + - echo "keyPassword=$SIGNING_KEY_PW" >> $SIGNING_PROPERTIES_FILE + - echo "keyAlias=$SIGNING_KEY_ALIAS" >> $SIGNING_PROPERTIES_FILE + - echo "storeFile=$SIGNING_STORE_FILE" >> $SIGNING_PROPERTIES_FILE + - echo $SIGNING_KEYSTORE | base64 -d > $SINGING_KEYSTORE_FILE + - flutter build appbundle --release --target-platform android-arm,android-arm64,android-x64 --build-name ${APPLICATION_VERSION} --build-number ${APPLICATION_BUILD_NUMBER} + after_script: + - mv ${APP_DIRECTORY}/build/app/outputs/bundle/release/app-release.aab ./{APP_NAME}.aab + +apks: + stage: build + image: + name: ${FLUTTER_ANDROID_IMAGE} + pull_policy: always + tags: + - amd64 + when: manual + needs: + - android_build + artifacts: + paths: + - ${APP_NAME}_${APPLICATION_VERSION}.apk + expire_in: 1 day + script: + - echo $SIGNING_KEYSTORE | base64 -d > keystore.jks + - java -jar /app/bundletool.jar build-apks --bundle=${APP_NAME}.aab --output=apks.apks --mode=universal --ks=keystore.jks --ks-pass=pass:$SIGNING_STORE_PW --ks-key-alias=$SIGNING_KEY_ALIAS --key-pass=pass:$SIGNING_KEY_PW + - unzip -q apks.apks -d apks + - mv apks/universal.apk ./${APP_NAME}_${APPLICATION_VERSION}.apk -- GitLab