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