image: briar/ci-image-android:latest

stages:
  - test
  - build

variables:
  GIT_SUBMODULE_STRATEGY: recursive
  JAVA_HOME: /usr/lib/jvm/java-17-openjdk-amd64

before_script:
  - set -e
  - export GRADLE_USER_HOME=$PWD/.gradle

after_script:
  # these file change every time and should not be cached
  - rm -f $GRADLE_USER_HOME/caches/modules-2/modules-2.lock
  - rm -fr $GRADLE_USER_HOME/caches/*/plugin-resolution/

cache:
  key: "$CI_COMMIT_REF_SLUG"
  paths:
    - .gradle/wrapper
    - .gradle/caches

ktlint:
  stage: test
  script:
    - git submodule update
    - ./gradlew --no-daemon :check
  rules:
    - if: '$CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS'
      when: never # avoids duplicate jobs for branch and MR
    - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
      when: always
    - when: always

build_jar:
  stage: build
  script:
    - ./gradlew -Dorg.gradle.java.home=/usr/lib/jvm/java-11-openjdk-amd64 --no-daemon kaptKotlin
    - ./gradlew -Dorg.gradle.java.home=/usr/lib/jvm/java-17-openjdk-amd64 --no-daemon -x kaptKotlin packageUberJarForCurrentOS
    - mv build/compose/jars/Briar-*.jar ./briar-desktop.jar
  artifacts:
    paths:
      - briar-desktop.jar
    expire_in: 2 days
  rules:
    - if: $CI_PIPELINE_SOURCE == "schedule"

build_deb:
  stage: build
  script:
    - ./gradlew -Dorg.gradle.java.home=/usr/lib/jvm/java-11-openjdk-amd64 --no-daemon kaptKotlin
    - ./gradlew -Dorg.gradle.java.home=/usr/lib/jvm/java-17-openjdk-amd64 --no-daemon -x kaptKotlin packageDeb
    - mv build/compose/binaries/main/deb/*.deb ./briar-desktop.deb
  artifacts:
    paths:
      - briar-desktop.deb
    expire_in: 2 days
  rules:
    - if: $CI_PIPELINE_SOURCE == "schedule"
