os: linux
dist: trusty
node_js: 14

git:
  depth: 3

before_cache:
  - rm -f  $HOME/.gradle/caches/modules-2/modules-2.lock
  - rm -fr $HOME/.gradle/caches/*/plugin-resolution/

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

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

before_script:
  - npx gulp

script:
  - scripts/build.sh

jobs:
  include:
  - stage: build
    name: "Build Android"
    if: env(DEPLOY) = 1 OR (env(DEPLOY) = 2 AND tag IS NOT blank)
    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
    before_install:
      - nvm install
      - npm install npm@^7 -g
      - node --version
      - npm --version
      - nvm --version
      - npm ci
      - yes | sdkmanager "build-tools;30.0.3"
    addons:
      apt:
        packages:
        - libsecret-1-dev
        - php5-cli
        - php5-common
  - stage: build
    name: "Build iOS"
    language: node_js
    if: env(BUILD_IOS) = 1 AND (env(DEPLOY) = 1 OR (env(DEPLOY) = 2 AND tag IS NOT blank))
    os: osx
    osx_image: xcode13.1
    addons:
      homebrew:
        packages:
        - jq
  - 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"
