stages:
  - build
  - deploy
  - release

build apk:
  stage: build
  image: lbry/android-base:platform-28
  before_script:
    - apt-get -y update && apt-get -y install build-essential ca-certificates curl git gpg-agent openjdk-8-jdk software-properties-common wget zipalign
    - wget -q https://nodejs.org/dist/latest-v10.x/node-v10.19.0-linux-x64.tar.gz && tar xf node-v10.19.0-linux-x64.tar.gz -C /opt
    - ln -fs /opt/node-v10.19.0-linux-x64/bin/node /usr/bin/node
    - ln -fs /opt/node-v10.19.0-linux-x64/bin/npm /usr/bin/npm
    - ln -fs /opt/node-v10.19.0-linux-x64/bin/npx /usr/bin/npx
    - chmod u+x $CI_PROJECT_DIR/gradlew
    - export ANDROID_SDK_ROOT=~/.buildozer/android/platform/android-sdk-23
    - export BUILD_VERSION=$($CI_PROJECT_DIR/gradlew -q printVersionName --console=plain | tail -1)  
  artifacts:
    paths:
      - bin/browser-*-release__arm.apk
      - bin/browser-*-release__arm64.apk
    expire_in: 1 week
  script:
    - export PATH=/usr/bin:$PATH
    - echo "$PGP_PRIVATE_KEY" | gpg --batch --import
    - curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
    - echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
    - echo "deb https://dl.bintray.com/sobolevn/deb git-secret main" | tee -a /etc/apt/sources.list
    - wget -O - https://api.bintray.com/users/sobolevn/keys/gpg/public.key | apt-key add -
    - apt-get -y update && apt-get -y install yarn git-secret
    - git secret reveal
    - npm install -g react-native-cli
    - cd ~/
    - git clone https://github.com/lbryio/lbry-react-native
    - cd lbry-react-native
    - chmod u+x bundle-android.sh
    - yarn
    - rm -rf android # temporary, should be a submodule init?
    - cp -rf $CI_PROJECT_DIR/ android/
    - cd android
    - chmod u+x ./release.sh
    - ./release.sh
    - mkdir -p $CI_PROJECT_DIR/bin/ && cp bin/*.apk $CI_PROJECT_DIR/bin/
    - cd $CI_PROJECT_DIR
    - cp bin/browser-$BUILD_VERSION-release__arm.apk /dev/null
    - cp bin/browser-$BUILD_VERSION-release__arm64.apk /dev/null
    
deploy build.lbry.io:
  image: python:stretch
  stage: deploy
  dependencies:
    - build apk
  before_script:
    - apt-get -y update && apt-get -y install openjdk-8-jdk
    - pip install awscli
    - chmod u+x $CI_PROJECT_DIR/gradlew
    - export BUILD_VERSION=$($CI_PROJECT_DIR/gradlew -q printVersionName --console=plain | tail -1)
    - export BUILD_APK_FILENAME__32=browser-$BUILD_VERSION-release__arm.apk
    - export BUILD_APK_FILENAME__64=browser-$BUILD_VERSION-release__arm64.apk
  script:
    - aws s3 cp bin/$BUILD_APK_FILENAME__64 s3://build.lbry.io/android/build-${CI_PIPELINE_IID}_commit-${CI_COMMIT_SHA:0:7}/$BUILD_APK_FILENAME__64
    - aws s3 cp bin/$BUILD_APK_FILENAME__32 s3://build.lbry.io/android/build-${CI_PIPELINE_IID}_commit-${CI_COMMIT_SHA:0:7}/$BUILD_APK_FILENAME__32
    - aws s3 cp bin/$BUILD_APK_FILENAME__64 s3://build.lbry.io/android/push.apk

release apk:
  image: python:stretch
  stage: release
  only:
    - tags
  dependencies:
    - build apk
  before_script:
    - apt-get -y update && apt-get -y install openjdk-8-jdk
    - pip install awscli githubrelease
    - chmod u+x $CI_PROJECT_DIR/gradlew
    - export BUILD_VERSION=$($CI_PROJECT_DIR/gradlew -q printVersionName --console=plain | tail -1)
    - export BUILD_APK_FILENAME__32=browser-$BUILD_VERSION-release__arm.apk
    - export BUILD_APK_FILENAME__64=browser-$BUILD_VERSION-release__arm64.apk
  script:
    - githubrelease release lbryio/lbry-android create $CI_COMMIT_TAG --publish bin/$BUILD_APK_FILENAME__64 bin/$BUILD_APK_FILENAME__32
    - githubrelease release lbryio/lbry-android edit $CI_COMMIT_TAG --draft
    - aws s3 cp bin/$BUILD_APK_FILENAME__64 s3://build.lbry.io/android/latest.apk