language: node_js
node_js:
  - 10.16.0
services:
  - docker

before_install:
  - export MAJOR_VERSION="2"
  - export VSCODE_VERSION="1.39.2"
  - export VERSION="$MAJOR_VERSION.$TRAVIS_BUILD_NUMBER"
  - export TAG="$VERSION-vsc$VSCODE_VERSION"
  - if [[ "$TRAVIS_BRANCH" == "master" ]]; then export MINIFY="true"; fi
  - if [[ "$TRAVIS_BRANCH" == "master" ]]; then export PACKAGE="true"; fi

# Don't build on tags because we'll already have built the commit.
jobs:
  include:
    - name: "Linux build"
      os: linux
      dist: trusty
      env: TARGET="linux" PUSH_DOCKER="true"
      if: tag IS blank
      script: scripts/ci.bash
    - name: "Alpine build"
      os: linux
      dist: trusty
      env: TARGET="alpine"
      if: tag IS blank
      script: scripts/ci.bash
    - name: "MacOS build"
      os: osx
      if: tag IS blank
      script: travis_wait 60 scripts/ci.bash

git:
  depth: 3

before_deploy:
  - echo "$TAG" "$TRAVIS_COMMIT"
  - git config --local user.name "$USER_NAME"
  - git config --local user.email "$USER_EMAIL"
  - if ! git tag "$TAG" "$TRAVIS_COMMIT" ; then echo "$TAG already exists"; fi
  - if [[ -n "$PUSH_DOCKER" ]] ; then echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin ; fi

deploy:
  - provider: releases
    file_glob: true
    draft: true
    tag_name: "$TAG"
    target_commitish: "$TRAVIS_COMMIT"
    name: "$TAG"
    skip_cleanup: true
    api_key:
      secure: YL/x24KjYjgYXPcJWk3FV7FGxI79Mh6gBECQEcdlf3fkLEoKFVgzHBoUNWrFPzyR4tgLyWNAgcpD9Lkme1TRWTom7UPjXcwMNyLcLa+uec7ciSAnYD9ntLTpiCuPDD1u0LtRGclSi/EHQ+F8YVq+HZJpXTsJeAmOmihma3GVbGKSZr+BRum+0YZSG4w+o4TOlYzw/4bLWS52MogZcwpjd+hemBbgXLuGU2ziKv2vEKCZFbEeA16II4x1WLI4mutDdCeh7+3aLzGLwDa49NxtsVYNjyNFF75JhCTCNA55e2YMiLz9Uq69IXe/mi5F7xUaFfhIqqLNyKBnKeEOzu3dYnc+8n3LjnQ+00PmkF05nx9kBn3UfV1kwQGh6QbyDmTtBP07rtUMyI14aeQqHjxsaVRdMnwj9Q2DjXRr8UDqESZF0rmK3pHCXS2fBhIzLE8tLVW5Heiba2pQRFMHMZW+KBE97FzcFh7is90Ait3T8enfcd/PWFPYoBejDAdjwxwOkezh5N5ZkYquEfDYuWrFi6zRFCktsruaAcA+xGtTf9oilBBzUqu8Ie+YFWH5me83xakcblJWdaW/D2rLJAJH3m6LFm8lBqyUgDX5t/etob6CpDuYHu5D1J3XINOj/+aLAcadq6qlh70PMZS3zYffUu3JlzaD2amlSHIT8b5YXFc=
    file:
      - release/*.tar.gz
      - release/*.zip
    on:
      repo: cdr/code-server
      branch: master

  - provider: script
    skip_cleanup: true
    script: docker build -f ./scripts/ci.dockerfile -t codercom/code-server:"$TAG" -t codercom/code-server:v2 -t codercom/code-server . && docker push codercom/code-server:"$TAG" && docker push codercom/code-server:v2 && docker push codercom/code-server
    on:
      repo: cdr/code-server
      branch: master
      condition: -n "$PUSH_DOCKER"

cache:
  yarn: true
  directories:
    - source
