image: cirrusci/flutter:latest

stages:
  - update
  - build-debug
  - build-release
  - deploy

update:
  stage: update
  script:
    - flutter packages get
    - flutter packages upgrade
  interruptible: true

android:build-debug:
  stage: build-debug
  script:
    # Flutter local configuration
    - echo flutter.sdk=$FLUTTER_PATH > android/local.properties
    - echo sdk.dir=$ANDROID_SDK_PATH >> android/local.properties
    - echo flutter.buildMode=debug >> android/local.properties
    # Android signing
    - echo "$ANDROID_DEBUG_KEYSTORE_FILE" | base64 -d > android/app/my.keystore
    - echo storeFile=my.keystore > android/key.properties
    - echo storePassword=$ANDROID_DEBUG_KEYSTORE_PASSWORD >> android/key.properties
    - echo keyAlias=$ANDROID_DEBUG_KEY_ALIAS >> android/key.properties
    - echo keyPassword=$ANDROID_DEBUG_KEY_PASSWORD >> android/key.properties
    # build flutter app
    - flutter packages get
    - flutter clean
    - flutter build apk --debug
    # prepare artifact
    - find . -name "*.apk" # where is my apk?
  artifacts:
    paths:
      - build/app/outputs/apk/debug
    expire_in: 1 week
  interruptible: true

android:build-release:
  stage: build-release
  only:
    - master
  dependencies:
    - android:build-debug
  script:
    # Flutter local configuration
    - echo flutter.sdk=$FLUTTER_PATH > android/local.properties
    - echo sdk.dir=$ANDROID_SDK_PATH >> android/local.properties
    - echo flutter.buildMode=release >> android/local.properties
    # Android signing
    - echo "$ANDROID_KEYSTORE_FILE" | base64 -d > android/app/my.keystore
    - echo storeFile=my.keystore > android/key.properties
    - echo storePassword=$ANDROID_KEYSTORE_PASSWORD >> android/key.properties
    - echo keyAlias=$ANDROID_KEY_ALIAS >> android/key.properties
    - echo keyPassword=$ANDROID_KEY_PASSWORD >> android/key.properties
    # build flutter app
    - flutter packages get
    - flutter clean
    - flutter build apk --release
    # prepare artifact
    - find . -name "*.apk" # where is my apk?
  artifacts:
    paths:
      - build/app/outputs/apk/release
    expire_in: 1 week
  interruptible: true

android:deploy:
  stage: deploy
  only:
    - master
  dependencies:
    - android:build-release
  script:
    - wget ${REPOSITORY_UPDATE_WEBHOOK}?token=${REPOSITORY_TOKEN}