#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
#

language: java C++ ruby
jdk:
  - oraclejdk8

sudo: required

services:
  - docker

cache:
  directories:
  - $HOME/.m2
  - $HOME/pulsar-dep
  - "$HOME/apache-maven-3.5.0"

# Reconstruct the gpg keys to sign the artifacts
before_deploy:
  - echo $GPG_SECRET_KEYS | base64 --decode | $GPG_EXECUTABLE --import --batch || true
  - echo $GPG_OWNERTRUST | base64 --decode | $GPG_EXECUTABLE --import-ownertrust --batch || true

# Upgrade to maven 3.5.0
before_install:
  - export M2_HOME=$HOME/apache-maven-3.5.0
  - if [ ! -d $M2_HOME/bin ]; then curl https://archive.apache.org/dist/maven/maven-3/3.5.0/binaries/apache-maven-3.5.0-bin.tar.gz | tar zxf - -C $HOME; fi
  - export PATH=$M2_HOME/bin:$PATH

install:
  - sudo bash -x $TRAVIS_BUILD_DIR/pulsar-client-cpp/travis-build.sh $HOME/pulsar-dep $TRAVIS_BUILD_DIR dep
  - (cd site && make travis_setup)

script:
    # Build Java and C++
    - mvn license:check test package && sudo bash -x $TRAVIS_BUILD_DIR/pulsar-client-cpp/travis-build.sh $HOME/pulsar-dep $TRAVIS_BUILD_DIR compile
    # Build docker images
    - docker/build.sh
    # Generate website
    - (cd site && make travis_build)

deploy:
  -
     provider: script
     skip_cleanup: true
     script: mvn deploy -DskipTests --settings .travis/settings.xml
     on:
       tags: false
  -
    provider: script
    skip_cleanup: true
    script: mvn install deploy -Papache-release -DskipTests --settings .travis/settings.xml
    on:
      repo: apache/incubator-pulsar
      tags: true
  -
    provider: releases
    skip_cleanup: true
    api_key:
      secure: cmjsJ43FwlwWUVh+4TJ/V+yKu/bd78ov0Olm0BFao0tco5ZYNfbRB5jxWD9X4AxpRN4Rfn+u/17oRavUSfv1M/CKMj6mTzXl8gQ6gieIWrgGYfdZrpBxEY0mccaEbaXSGNEWFj/e8oJixdeBeFCp3AkUSTO9DS5f+yoKeF1XibeJIhDLY0xWgeLMkUimzizsiplQBhrPmHExM8DRwSEojs4np56QgcJHdpU9snxkKzjCW5kKcQ6vPXzWpRLBRxLNU0MzYf6HRSqsGE5M3oG8PXNi+WuMS+4pKfxhcw7vS7642/8dWV28Flvet9E+rXutaM7I+jd5ZQG+/jTo2IOTUJ164ZaxYl6rjsf94d8u51AxDPLer+/C19DfrjiYGOLX8Cad+dLWT+otVISie76oNTeThqyG/5W+PpX9cTP/yBeZs5j/mgYJI4mVU4z0fACgyh+Gc3SyBwPvc3eePsFoVS4CvksgoMJJzgtN6to5hh8Pl4dM3FtpWnhjS3Zm2ieu8CUiC3HKCB1DzeNXXRkgcL+D8CXrxcfeOtBs34MEwua7C3fmSagyt1e1/PeYPE4F9Oi6Tiu59jGA5mnx27TDiPCEsf0a5UBHIY95ducB/BBKsXrACmnzAgPSP321fDNKBWMveTw3h2dKLC6PIf78LJ3Rln/i4okCQ8PkgEOz1A0=
    file_glob: true
    file: "all/target/pulsar-*.tar.gz"
    on:
      repo: apache/incubator-pulsar
      tags: true
  -
    provider: script
    skip_cleanup: true
    script: (cd site && make travis_publish)
    on:
        repo: apache/incubator-pulsar
        branch: master
  -
    provider: script
    skip_cleanup: true
    script: docker/publish.sh
    on:
       tags: true
