---
variables:
  GIT_CLONE_PATH: $CI_BUILDS_DIR/2c952829/0/gluon/site
stages:
  - dependencies
  - lint
  - patch
  - parameters
  - build
  - sign
  - deploy
  - cleanup

# check all needed dependencies.
dependencies:
  stage: dependencies
  tags:
    - firmware
  script:
    - ./.ci/dependencies.sh

# lint all common shell scripts
shelllint:
  stage: lint
  tags:
    - firmware
  script:
    - ./.ci/shelllint.sh

# lint all common yamel files
yamllint:
  stage: lint
  tags:
    - firmware
  script:
    - ./.ci/yamllint.sh

# update and patch gluon
prepare_gluon:
  stage: patch
  tags:
    - firmware
  artifacts:
    paths:
      - .patched
    expire_in: 1 day
  before_script:
    - ( cd ..; [ $(git status | grep -c am) -eq 0 ] || git am --abort; )
  script:
    - touch .patched
    - ./buildscript.sh clean_patches
    - ( cd ..; git pull; git checkout $UPSTREAM_GLUON_BRANCH )
    - ./buildscript.sh patch

parameters:
  stage: parameters
  tags:
    - firmware
  artifacts:
    paths:
      - .GLUON_BRANCH
      - .GLUON_RELEASE
    expire_in: 1 day
  script:
    - ./buildscript.sh prepare GLUON_BRANCH nightly_master
    - ./buildscript.sh prepare GLUON_RELEASE $(date +%Y%m%d)

build:
  stage: build
  only:
    - master
  tags:
    - firmware
  script:
    - touch .prepare
    - ./buildscript.sh build all

sign:
  stage: sign
  only:
    - master
  tags:
    - firmware
  script:
    - ./.ci/sign.sh $ECDSA_PRIVAT_KEY

deploy:
  stage: deploy
  only:
    - master
  tags:
    - firmware
  script:
    - ./.ci/deploy.sh $CI_BUILD_REF_NAME

cleanup:
  stage: cleanup
  only:
    - master
  tags:
    - firmware
  script:
    - touch .patched
    - ./buildscript.sh clean_patches
    - rm -rf ../output