os: linux
dist: trusty
node_js: 12

git:
  depth: 3

before_cache:
  - rm -rf $HOME/.cache/electron-builder/wine
  - rm -f  $HOME/.gradle/caches/modules-2/modules-2.lock
  - rm -fr $HOME/.gradle/caches/*/plugin-resolution/

cache:
  npm: true
  directories:
    - $HOME/.npm
    - $HOME/.cache/electron
    - $HOME/.cache/electron-builder
    - $HOME/.gradle/caches/
    - $HOME/.gradle/wrapper/
    - $HOME/.android/build-cache

before_install:
  - nvm install 12
  - node --version
  - npm --version
  - nvm --version
  - npm ci
  - npm install npm@^6 -g

before_script:
  - npx gulp

script:
  - scripts/build.sh

jobs:
  include:
  - stage: build
    name: "Build Android"
    if: env(DEPLOY) = 1
    language: android
    android:
      components:
      - tools
      - platform-tools
      - build-tools-29.0.3
      - android-29
      - extra-google-google_play_services
      - extra-google-m2repository
      - extra-android-m2repository
  - stage: build
    name: "Build iOS"
    language: node_js
    if: env(DEPLOY) = 1 AND env(BUILD_IOS) = 1
    os: osx
    osx_image: xcode12.4
  - stage: test
    name: "End to end tests (mod_forum and mod_messages)"
    services:
    - docker
    if: type = cron
    script: scripts/test_e2e.sh "@app&&@mod_forum" "@app&&@mod_messages"
  - stage: test
    name: "End to end tests (mod_course, core_course and mod_courses)"
    services:
    - docker
    if: type = cron
    script: scripts/test_e2e.sh "@app&&@mod_course" "@app&&@core_course" "@app&&@mod_courses"
  - stage: test
    name: "End to end tests (others)"
    services:
    - docker
    if: type = cron
    script: scripts/test_e2e.sh "@app&&~@mod_forum&&~@mod_messages&&~@mod_course&&~@core_course&&~@mod_courses"