trigger:
  batch: true
  branches:
    include:
    - master
    - dev*
    - refs/tags/*

pr:
  - master
  - dev*

jobs:
- template: azure-pipelines.template.yml
  parameters:
    name: linux
    vmImage: 'ubuntu-latest'

- template: azure-pipelines.template.yml
  parameters:
    name: windows
    vmImage: 'windows-latest'

- template: azure-pipelines.template.yml
  parameters:
    name: macos
    vmImage: 'macOS-latest'

- job: linux_coverage
  dependsOn: linux
  condition: and(succeeded(), ne(variables['Build.Reason'], 'PullRequest'))
  timeoutInMinutes: 30

  pool:
    vmImage: 'ubuntu-latest'

#variables:
#    CODECOV_TOKEN: '$(coverage.token)'


  steps:
  - checkout: self
  - task: GoTool@0
    inputs:
      version: '1.14.1'
  - script: |
      bash ./testing/coverage/coverall
    workingDirectory: '$(Build.SourcesDirectory)'
    displayName: 'Coverage'

- job: make_release
  dependsOn: linux
  condition: and(succeeded(), ne(variables['Build.Reason'], 'PullRequest'))
  timeoutInMinutes: 60

  pool:
    vmImage: 'ubuntu-latest'
  variables:
    - group: GithubToken
    - name: GOPATH
      value: '$(system.defaultWorkingDirectory)/gopath'
    - name: BAZEL_VER
      value: '0.23.0'

  steps:
  - checkout: self
  - task: GoTool@0
    inputs:
      version: '1.14.1'
  - script: |
      mkdir triggersrc
      ls -I "triggersrc" | xargs cp -rf -t triggersrc
      mkdir gopath
    displayName: Prepare Environment
    workingDirectory: '$(system.defaultWorkingDirectory)'
  - script: |
      sudo apt-get -y update
      sudo apt-get -y install jq git file pkg-config zip g++ zlib1g-dev unzip python openssl tree
    displayName: Apt Install
  - script: |
      go version
      unset GOPATH
      mkdir ./src
      mkdir ./src/v2ray.com
      ln -s $(pwd)/../triggersrc ./src/v2ray.com/core
      go get -v -t -d ./src/v2ray.com/core/...
      tree
    workingDirectory: '$(GOPATH)'
    displayName: 'Fetch sources'
  - script: |
      mkdir release
      cd src
      zip -9 -r ../release/src_all.zip * -x '*.git*'
    workingDirectory: '$(GOPATH)'
    displayName: 'Dump sources'
  - script: |
      curl -L -o bazel-installer.sh https://github.com/bazelbuild/bazel/releases/download/${BAZEL_VER}/bazel-${BAZEL_VER}-installer-linux-x86_64.sh
      chmod +x bazel-installer.sh
      ./bazel-installer.sh --user
    workingDirectory: '$(GOPATH)'
    displayName: 'Install Bazel'
  - script: |
      cd ./src/v2ray.com/core
      ./release/updatedat.sh
      $HOME/bin/bazel build --action_env=GOPATH=$GOPATH --action_env=PATH=$PATH --action_env=GPG_PASS=${SIGN_KEY_PASS} --action_env=SPWD=$PWD --action_env=GOCACHE=$(go env GOCACHE) --spawn_strategy local //release:all
    workingDirectory: '$(GOPATH)'
    displayName: 'Build Binaries'
  - script: |
      cp ./src/v2ray.com/core/bazel-bin/release/*.zip ./release/
    workingDirectory: '$(GOPATH)'
    displayName: 'Dump Binaries'
  - script: |
      cd ./src/v2ray.com/core
      echo $RELEASE_TAG
      ./release/bleedingrelease.sh
    workingDirectory: '$(GOPATH)'
    displayName: 'Generate Bleeding Edge Release'
    env:
      GITHUB_TOKEN: $(GITHUB_TOKEN)
      PRERELEASE: true
      RELEASE_TAG: unstable-$(Build.SourceVersion)
  - script: |
      cd ./src/v2ray.com/core
      echo $RELEASE_TAG
      ./release/tagrelease.sh
    workingDirectory: '$(GOPATH)'
    displayName: 'Generate Tag Release'
    env:
      GITHUB_TOKEN: $(GITHUB_TOKEN)
      PRERELEASE: true
      RELEASE_TAG: unstable-$(Build.SourceVersion)
      TRIGGER_REASON: $(Build.SourceBranch)