# Copyright 2022 Ververica Inc.
#
# Licensed 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.

# Maven
# Build your Java project and run tests with Apache Maven.
# Add steps that analyze code, save build artifacts, deploy, and more:
# https://docs.microsoft.com/azure/devops/pipelines/languages/java

trigger:
  branches:
    include:
      - '*'  # must quote since "*" is a YAML reserved character; we want a string
# Define variables:
# - See tools/azure-pipelines/jobs-template.yml for a short summary of the caching
# - See https://stackoverflow.com/questions/60742105/how-can-i-access-a-secret-value-from-an-azure-pipelines-expression
#   to understand why the secrets are handled like this
variables:
  MAVEN_CACHE_FOLDER: $(Pipeline.Workspace)/.m2/repository
  E2E_CACHE_FOLDER: $(Pipeline.Workspace)/e2e_cache
  E2E_TARBALL_CACHE: $(Pipeline.Workspace)/e2e_artifact_cache
  MAVEN_OPTS: '-Dmaven.repo.local=$(MAVEN_CACHE_FOLDER)'
  CACHE_KEY: maven | $(Agent.OS) | **/pom.xml, !**/target/**
  CACHE_FALLBACK_KEY: maven | $(Agent.OS)
  FLINK_ARTIFACT_DIR: $(Pipeline.Workspace)/flink_artifact

stages:
  # CI / PR triggered stage:
  - stage: ci
    displayName: "CI build (custom builders)"
    jobs:
      - template: tools/azure-pipelines/jobs-template.yml
        parameters: # see template file for a definition of the parameters.
          stage_name: ci_build
          test_pool_definition:
            vmImage: 'ubuntu-20.04'
          run_end_to_end: false
          jdk: 8
      - template: tools/azure-pipelines/jobs-template-for-self-hosted-agent.yml
        parameters: # see template file for a definition of the parameters.
          stage_name: ci_build_on_self_hosted_agent
          test_pool_definition:
            name: Flink_CDC_CI
          run_end_to_end: false
          jdk: 8