stages:
- build
- cleanup-build
- deploy

variables:
  GIT_STRATEGY: fetch

  UNITY_VERSION: 2020.2.2f1

  SRC_DIR: ./game
  BUILD_DIR: ./game/Build
  DEV_BRANCH: main
  PROD_BRANCH: release

build:
  stage: build
  variables:
    # instance the build job to avoid multiple jobs running in the same project folder
    GIT_CLONE_PATH: $CI_BUILDS_DIR/$CI_RUNNER_SHORT_TOKEN/$CI_PROJECT_NAME-build-$CI_PIPELINE_ID
  script:
  - echo "cloned to $GIT_CLONE_PATH"
  - chmod +x ./ci/build.sh
  - ./ci/build.sh $UNITY_VERSION
  - cp ./readme.txt $BUILD_DIR
  
  artifacts:
    name: $CI_PROJECT_NAME-$CI_PIPELINE_ID
    paths:
    - $BUILD_DIR
    
# remove the directory created by the build job. in a separate job 
cleanup-build:
  stage: cleanup-build
  variables:
    CLEANUP_PATH: $CI_BUILDS_DIR/$CI_RUNNER_SHORT_TOKEN/$CI_PROJECT_NAME-build-$CI_PIPELINE_ID
  script:
  - echo "cleaning up build directory"
  - rm -r $CLEANUP_PATH $CLEANUP_PATH.tmp
  dependencies:
  - build
  when: always

# deploy to internal testing track
deploy-dev:
  stage: deploy
  rules:
  - if: $CI_COMMIT_BRANCH == $DEV_BRANCH
  variables:
    ITCH_USER: "cyndrdev"
    ITCH_GAME: "revival-internal-track"
    ITCH_TRACK: "windows-unstable"
  script:
  - chmod +x ./ci/deploy.sh
  - ./ci/deploy.sh $BUILD_DIR $ITCH_USER $ITCH_GAME $ITCH_TRACK
  dependencies:
  - build

# deploy to production
deploy-release:
  stage: deploy
  rules:
  - if: $CI_COMMIT_BRANCH == $PROD_BRANCH
  variables:
    ITCH_USER: "cyndrdev"
    ITCH_GAME: "revival"
    ITCH_TRACK: "windows"
  script:
  - chmod +x ./ci/deploy.sh
  - ./ci/deploy.sh $BUILD_DIR $ITCH_USER $ITCH_GAME $ITCH_TRACK
  dependencies:
  - build
