# 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.
#
---
dist: xenial
language: python
env:
  global:
    - BUILD_ID=${TRAVIS_BUILD_ID}
    - AIRFLOW_CONTAINER_MOUNT_HOST_VOLUMES="false"
    - FORCE_ANSWER_TO_QUESTIONS="yes"
    - AIRFLOW_CI_SILENT="true"
    - CI="true"
python: "3.6"
stages:
  - pre-test
  - test
jobs:
  include:
    - name: "Tests postgres python 3.6"
      env: BACKEND=postgres ENV=docker
      python: "3.6"
      stage: test
    - name: "Tests sqlite python 3.5"
      env: BACKEND=sqlite ENV=docker
      python: "3.5"
      stage: test
    - name: "Tests mysql python 2.7"
      env: BACKEND=mysql ENV=docker
      python: "2.7"
      stage: test
    - name: "Tests postgres kubernetes python 3.6 (persistent)"
      env: BACKEND=postgres ENV=kubernetes KUBERNETES_VERSION=v1.13.0 KUBERNETES_MODE=persistent_mode
      python: "3.6"
      stage: test
    - name: "Tests postgres kubernetes python 3.6 (git)"
      env: BACKEND=postgres ENV=kubernetes KUBERNETES_VERSION=v1.13.0 KUBERNETES_MODE=git_mode
      python: "3.6"
      stage: test
    - name: "Tests postgres kubernetes python 2.7 (persistent)"
      env: BACKEND=postgres ENV=kubernetes KUBERNETES_VERSION=v1.13.0 KUBERNETES_MODE=persistent_mode
      python: "2.7"
      stage: test
    - name: "Tests postgres kubernetes python 2.7 (git)"
      env: BACKEND=postgres ENV=kubernetes KUBERNETES_VERSION=v1.9.0 KUBERNETES_MODE=git_mode
      python: "2.7"
      stage: test
    - name: "Static checks (no licence check)"
      stage: pre-test
      script: ./scripts/ci/ci_run_all_static_tests_except_licence.sh
    - name: "Check licence compliance for Apache"
      stage: pre-test
      script: ./scripts/ci/ci_check_license.sh
    - name: "Build documentation"
      stage: pre-test
      script: ./scripts/ci/ci_docs.sh
services:
  - docker
before_install:
  - ./scripts/ci/ci_before_install.sh
script: "./scripts/ci/ci_run_airflow_testing.sh"
