image: registry.gitlab.com/satoshilabs/trezor/trezor-firmware/trezor-firmware-env.nix

# Releases

release core fw regular deploy:
  stage: deploy
  variables:
    DEPLOY_DIRECTORY: "releases/firmwares"
  before_script: []  # no pipenv
  dependencies:
    - core fw regular build
  script:
    - export VERSION=$(./tools/version.sh core/embed/firmware/version.h)
    - export NAME="trezor-fw-regular-$VERSION-$CI_COMMIT_SHORT_SHA.bin"
    - echo "Deploying to ${DEPLOY_DIRECTORY}/$NAME"
    - mkdir -p "${DEPLOY_BASE_DIR}/${DEPLOY_DIRECTORY}"
    - rsync --delete -va $NAME "${DEPLOY_BASE_DIR}/${DEPLOY_DIRECTORY}/$NAME"
  only:
    - /^core\//
  except:
    - branches  # run for tags only
  tags:
    - deploy

release core fw btconly deploy:
  stage: deploy
  variables:
    DEPLOY_DIRECTORY: "releases/firmwares"
  before_script: []  # no pipenv
  dependencies:
    - core fw btconly build
  script:
    - export VERSION=$(./tools/version.sh core/embed/firmware/version.h)
    - export NAME="trezor-fw-btconly-$VERSION-$CI_COMMIT_SHORT_SHA.bin"
    - echo "Deploying to ${DEPLOY_DIRECTORY}/$NAME"
    - mkdir -p "${DEPLOY_BASE_DIR}/${DEPLOY_DIRECTORY}"
    - rsync --delete -va $NAME "${DEPLOY_BASE_DIR}/${DEPLOY_DIRECTORY}/$NAME"
  only:
    - /^core\//
  except:
    - branches  # run for tags only
  tags:
    - deploy

release legacy fw regular deploy:
  stage: deploy
  variables:
    DEPLOY_DIRECTORY: "releases/firmwares"
  before_script: []  # no pipenv
  dependencies:
    - legacy fw regular build
  script:
    - export VERSION=$(./tools/version.sh legacy/firmware/version.h)
    - export NAME="trezor-fw-regular-$VERSION-$CI_COMMIT_SHORT_SHA.bin"
    - echo "Deploying to ${DEPLOY_DIRECTORY}/$NAME"
    - mkdir -p "${DEPLOY_BASE_DIR}/${DEPLOY_DIRECTORY}"
    - rsync --delete -va $NAME "${DEPLOY_BASE_DIR}/${DEPLOY_DIRECTORY}/$NAME"
  only:
    - /^legacy\//
  except:
    - branches  # run for tags only
  tags:
    - deploy

release legacy fw btconly deploy:
  stage: deploy
  variables:
    DEPLOY_DIRECTORY: "releases/firmwares"
  before_script: []  # no pipenv
  dependencies:
    - legacy fw btconly build
  script:
    - export VERSION=$(./tools/version.sh legacy/firmware/version.h)
    - export NAME="trezor-fw-btconly-$VERSION-$CI_COMMIT_SHORT_SHA.bin"
    - echo "Deploying to ${DEPLOY_DIRECTORY}/$NAME"
    - mkdir -p "${DEPLOY_BASE_DIR}/${DEPLOY_DIRECTORY}"
    - rsync --delete -va $NAME "${DEPLOY_BASE_DIR}/${DEPLOY_DIRECTORY}/$NAME"
  only:
    - /^legacy\//
  except:
    - branches  # run for tags only
  tags:
    - deploy

release core fw regular debug deploy:
  stage: deploy
  variables:
    DEPLOY_DIRECTORY: "releases/firmwares"
  before_script: []  # no pipenv
  dependencies:
    - core fw regular debug build
  script:
    - export VERSION=$(./tools/version.sh core/embed/firmware/version.h)
    - export NAME="trezor-fw-regular-debug-$VERSION-$CI_COMMIT_SHORT_SHA.bin"
    - echo "Deploying to ${DEPLOY_DIRECTORY}/$NAME"
    - mkdir -p "${DEPLOY_BASE_DIR}/${DEPLOY_DIRECTORY}"
    - rsync --delete -va $NAME "${DEPLOY_BASE_DIR}/${DEPLOY_DIRECTORY}/$NAME"
  only:
    - /^core\//
  except:
    - branches  # run for tags only
  tags:
    - deploy

release legacy fw regular debug deploy:
  stage: deploy
  variables:
    DEPLOY_DIRECTORY: "releases/firmwares"
  before_script: []  # no pipenv
  dependencies:
    - legacy fw regular debug build
  script:
    - export VERSION=$(./tools/version.sh legacy/firmware/version.h)
    - export NAME="trezor-fw-regular-debug-$VERSION-$CI_COMMIT_SHORT_SHA.bin"
    - echo "Deploying to ${DEPLOY_DIRECTORY}/$NAME"
    - mkdir -p "${DEPLOY_BASE_DIR}/${DEPLOY_DIRECTORY}"
    - rsync --delete -va $NAME "${DEPLOY_BASE_DIR}/${DEPLOY_DIRECTORY}/$NAME"
  only:
    - /^legacy\//
  except:
    - branches  # run for tags only
  tags:
    - deploy

release legacy fw btconly debug deploy:
  stage: deploy
  variables:
    DEPLOY_DIRECTORY: "releases/firmwares"
  before_script: []  # no pipenv
  dependencies:
    - legacy fw btconly debug build
  script:
    - export VERSION=$(./tools/version.sh legacy/firmware/version.h)
    - export NAME="trezor-fw-btconly-debug-$VERSION-$CI_COMMIT_SHORT_SHA.bin"
    - echo "Deploying to ${DEPLOY_DIRECTORY}/$NAME"
    - mkdir -p "${DEPLOY_BASE_DIR}/${DEPLOY_DIRECTORY}"
    - rsync --delete -va $NAME "${DEPLOY_BASE_DIR}/${DEPLOY_DIRECTORY}/$NAME"
  only:
    - /^legacy\//
  except:
    - branches  # run for tags only
  tags:
    - deploy


# Release candidates

rc core fw regular deploy:
  stage: deploy
  before_script: []  # no pipenv
  dependencies:
    - core fw regular build
  script:
    - export DEPLOY_DIRECTORY="release_candidates/${CI_COMMIT_REF_NAME:8}/firmwares"  # stripping 'release/'
    - export VERSION=$(./tools/version.sh core/embed/firmware/version.h)
    - export NAME="trezor-fw-regular-$VERSION-$CI_COMMIT_SHORT_SHA.bin"
    - echo "Deploying to ${DEPLOY_DIRECTORY}/$NAME"
    - mkdir -p "${DEPLOY_BASE_DIR}/${DEPLOY_DIRECTORY}"
    - rsync --delete -va $NAME "${DEPLOY_BASE_DIR}/${DEPLOY_DIRECTORY}/$NAME"
  only:
    - /^release\//
  tags:
    - deploy

rc core fw btconly deploy:
  stage: deploy
  before_script: []  # no pipenv
  dependencies:
    - core fw btconly build
  script:
    - export DEPLOY_DIRECTORY="release_candidates/${CI_COMMIT_REF_NAME:8}/firmwares"  # stripping 'release/'
    - export VERSION=$(./tools/version.sh core/embed/firmware/version.h)
    - export NAME="trezor-fw-btconly-$VERSION-$CI_COMMIT_SHORT_SHA.bin"
    - echo "Deploying to ${DEPLOY_DIRECTORY}/$NAME"
    - mkdir -p "${DEPLOY_BASE_DIR}/${DEPLOY_DIRECTORY}"
    - rsync --delete -va $NAME "${DEPLOY_BASE_DIR}/${DEPLOY_DIRECTORY}/$NAME"
  only:
    - /^release\//
  tags:
    - deploy

rc legacy fw regular deploy:
  stage: deploy
  before_script: []  # no pipenv
  dependencies:
    - legacy fw regular build
  script:
    - export DEPLOY_DIRECTORY="release_candidates/${CI_COMMIT_REF_NAME:8}/firmwares"  # stripping 'release/'
    - export VERSION=$(./tools/version.sh legacy/firmware/version.h)
    - export NAME="trezor-fw-regular-$VERSION-$CI_COMMIT_SHORT_SHA.bin"
    - echo "Deploying to ${DEPLOY_DIRECTORY}/$NAME"
    - mkdir -p "${DEPLOY_BASE_DIR}/${DEPLOY_DIRECTORY}"
    - rsync --delete -va $NAME "${DEPLOY_BASE_DIR}/${DEPLOY_DIRECTORY}/$NAME"
  only:
    - /^release\//
  tags:
    - deploy

rc legacy fw btconly deploy:
  stage: deploy
  before_script: []  # no pipenv
  dependencies:
    - legacy fw btconly build
  script:
    - export DEPLOY_DIRECTORY="release_candidates/${CI_COMMIT_REF_NAME:8}/firmwares"  # stripping 'release/'
    - export VERSION=$(./tools/version.sh legacy/firmware/version.h)
    - export NAME="trezor-fw-btconly-$VERSION-$CI_COMMIT_SHORT_SHA.bin"
    - echo "Deploying to ${DEPLOY_DIRECTORY}/$NAME"
    - mkdir -p "${DEPLOY_BASE_DIR}/${DEPLOY_DIRECTORY}"
    - rsync --delete -va $NAME "${DEPLOY_BASE_DIR}/${DEPLOY_DIRECTORY}/$NAME"
  only:
    - /^release\//
  tags:
    - deploy

# Upgrade tests

upgrade tests core deploy:
  stage: deploy
  variables:
    DEPLOY_PATH: "${DEPLOY_BASE_DIR}/upgrade_tests"
  before_script: []  # no pipenv
  dependencies:
    - core unix frozen debug build
  script:
    - TAG=`git tag --points-at HEAD | grep "core" | sed "s/\//-/"`
    - "[[ $TAG == '' ]] && echo 'Tag is not core/*: exiting.' && exit 1"
    - DEST=${DEPLOY_PATH}/trezor-emu-$TAG
    - echo "Deploying to $DEST"
    - rsync --delete -va core/build/unix/trezor-emu-core "$DEST"
  only:
    - /^core\//
  except:
    - branches  # run for tags only
  tags:
    - deploy

upgrade tests legacy deploy:
  stage: deploy
  variables:
    DEPLOY_PATH: "${DEPLOY_BASE_DIR}/upgrade_tests"
  before_script: []  # no pipenv
  dependencies:
    - legacy emu regular build
  script:
    - TAG=`git tag --points-at HEAD | grep "legacy" | sed "s/\//-/"`
    - "[[ $TAG == '' ]] && echo 'Tag is not legacy/*: exiting.' && exit 1"
    - DEST=${DEPLOY_PATH}/trezor-emu-$TAG
    - echo "Deploying to $DEST"
    - rsync --delete -va legacy/firmware/trezor.elf "$DEST"
  only:
    - /^legacy\//
  except:
    - branches  # run for tags only
  tags:
    - deploy

# UI tests

ui tests core fixtures deploy:
  stage: deploy
  variables:
    DEPLOY_PATH: "${DEPLOY_BASE_DIR}/ui_tests/"
  before_script: []  # no pipenv
  dependencies:
    - core device ui test
  script:
    - echo "Deploying to $DEPLOY_PATH"
    - rsync --delete -va ci/ui_test_records/* "$DEPLOY_PATH"
  tags:
    - deploy
