/*
 * 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.
 */


plugins {
  id "com.gradle.enterprise" version "3.4.1" apply false
}


// Plugins which require online access should not be enabled when running in offline mode.
if (!gradle.startParameter.isOffline()) {
  apply plugin: "com.gradle.enterprise"
}

// JENKINS_HOME and BUILD_ID set automatically during Jenkins execution
def isJenkinsBuild = ['JENKINS_HOME', 'BUILD_ID'].every System.&getenv
// GITHUB_REPOSITORY and GITHUB_RUN_ID set automatically during Github Actions run
def isGithubActionsBuild = ['GITHUB_REPOSITORY', 'GITHUB_RUN_ID'].every System.&getenv
if (isJenkinsBuild || isGithubActionsBuild) {
  gradleEnterprise {
    buildScan {
      // Build Scan enabled and TOS accepted for Jenkins lab build. This does not apply to builds on
      // non-Jenkins machines. Developers need to separately enable and accept TOS to use build scans.
      termsOfServiceUrl = 'https://gradle.com/terms-of-service'
      termsOfServiceAgree = 'yes'
      publishAlways()
    }
  }
}

rootProject.name = "beam"

include ":release"
include ":release:go-licenses:go"
include ":release:go-licenses:java"
include ":release:go-licenses:py"

include ":examples:java"
include ":examples:kotlin"
include ":model:fn-execution"
include ":model:job-management"
include ":model:pipeline"
include ":runners:core-construction-java"
include ":runners:core-java"
include ":runners:direct-java"
include ":runners:extensions-java:metrics"
/* Begin Flink Runner related settings */
// Flink 1.8
include ":runners:flink:1.8"
include ":runners:flink:1.8:job-server"
include ":runners:flink:1.8:job-server-container"
// Flink 1.9
include ":runners:flink:1.9"
include ":runners:flink:1.9:job-server"
include ":runners:flink:1.9:job-server-container"
// Flink 1.10
include ":runners:flink:1.10"
include ":runners:flink:1.10:job-server"
include ":runners:flink:1.10:job-server-container"
// Flink 1.11
include ":runners:flink:1.11"
include ":runners:flink:1.11:job-server"
include ":runners:flink:1.11:job-server-container"
// Flink 1.12
include ":runners:flink:1.12"
include ":runners:flink:1.12:job-server"
include ":runners:flink:1.12:job-server-container"
/* End Flink Runner related settings */
include ":runners:twister2"
include ":runners:google-cloud-dataflow-java"
include ":runners:google-cloud-dataflow-java:examples"
include ":runners:google-cloud-dataflow-java:examples-streaming"
include ":runners:java-fn-execution"
include ":runners:java-job-service"
include ":runners:jet"
include ":runners:local-java"
include ":runners:portability:java"
include ":runners:spark"
include ":runners:spark:job-server"
include ":runners:spark:job-server:container"
include ":runners:samza"
include ":runners:samza:job-server"
include ":sdks:go"
include ":sdks:go:container"
include ":sdks:go:examples"
include ":sdks:go:test"
include ":sdks:go:test:load"
include ":sdks:java:bom"
include ":sdks:java:bom:gcp"
include ":sdks:java:build-tools"
include ":sdks:java:container"
include ":sdks:java:container:java8"
include ":sdks:java:container:java11"
include ":sdks:java:core"
include ":sdks:java:expansion-service"
include ":sdks:java:extensions:euphoria"
include ":sdks:java:extensions:kryo"
include ":sdks:java:extensions:google-cloud-platform-core"
include ":sdks:java:extensions:jackson"
include ":sdks:java:extensions:join-library"
include ":sdks:java:extensions:ml"
include ":sdks:java:extensions:protobuf"
include ":sdks:java:extensions:schemaio-expansion-service"
include ":sdks:java:extensions:sketching"
include ":sdks:java:extensions:sorter"
include ":sdks:java:extensions:sql"
include ":sdks:java:extensions:sql:perf-tests"
include ":sdks:java:extensions:sql:jdbc"
include ":sdks:java:extensions:sql:shell"
include ":sdks:java:extensions:sql:hcatalog"
include ":sdks:java:extensions:sql:datacatalog"
include ":sdks:java:extensions:sql:zetasql"
include ":sdks:java:extensions:sql:expansion-service"
include ":sdks:java:extensions:sql:udf"
include ":sdks:java:extensions:sql:udf-test-provider"
include ":sdks:java:extensions:zetasketch"
include ":sdks:java:fn-execution"
include ":sdks:java:harness"
include ":sdks:java:io:amazon-web-services"
include ":sdks:java:io:amazon-web-services2"
include ":sdks:java:io:amqp"
include ":sdks:java:io:azure"
include ":sdks:java:io:cassandra"
include ":sdks:java:io:clickhouse"
include ":sdks:java:io:common"
include ":sdks:java:io:contextualtextio"
include ":sdks:java:io:elasticsearch"
include ":sdks:java:io:elasticsearch-tests:elasticsearch-tests-2"
include ":sdks:java:io:elasticsearch-tests:elasticsearch-tests-5"
include ":sdks:java:io:elasticsearch-tests:elasticsearch-tests-6"
include ":sdks:java:io:elasticsearch-tests:elasticsearch-tests-7"
include ":sdks:java:io:elasticsearch-tests:elasticsearch-tests-common"
include ":sdks:java:io:expansion-service"
include ":sdks:java:io:file-based-io-tests"
include ':sdks:java:io:bigquery-io-perf-tests'
include ":sdks:java:io:google-cloud-platform"
include ":sdks:java:io:google-cloud-platform:expansion-service"
include ":sdks:java:io:hadoop-common"
include ":sdks:java:io:hadoop-file-system"
include ":sdks:java:io:hadoop-format"
include ":sdks:java:io:hbase"
include ":sdks:java:io:hcatalog"
include ":sdks:java:io:jdbc"
include ":sdks:java:io:jms"
include ":sdks:java:io:kafka"
include ":sdks:java:io:kinesis"
include ":sdks:java:io:kinesis:expansion-service"
include ":sdks:java:io:kudu"
include ":sdks:java:io:mongodb"
include ":sdks:java:io:mqtt"
include ":sdks:java:io:parquet"
include ":sdks:java:io:rabbitmq"
include ":sdks:java:io:redis"
include ":sdks:java:io:solr"
include ":sdks:java:io:snowflake"
include ":sdks:java:io:snowflake:expansion-service"
include ":sdks:java:io:splunk"
include ":sdks:java:io:thrift"
include ":sdks:java:io:tika"
include ":sdks:java:io:xml"
include ":sdks:java:io:synthetic"
include ":sdks:java:io:influxdb"
include ":sdks:java:javadoc"
include ":sdks:java:maven-archetypes:examples"
include ":sdks:java:maven-archetypes:gcp-bom-examples"
include ":sdks:java:maven-archetypes:starter"
include ":sdks:java:testing:nexmark"
include ":sdks:java:testing:expansion-service"
include ":sdks:java:testing:jpms-tests"
include ":sdks:java:testing:kafka-service"
include ":sdks:java:testing:load-tests"
include ":sdks:java:testing:test-utils"
include ":sdks:java:testing:tpcds"
include ":sdks:python"
include ":sdks:python:apache_beam:testing:load_tests"
include ":sdks:python:container"
include ":sdks:python:container:py36"
include ":sdks:python:container:py37"
include ":sdks:python:container:py38"
include ":sdks:python:test-suites:dataflow"
include ":sdks:python:test-suites:dataflow:py36"
include ":sdks:python:test-suites:dataflow:py37"
include ":sdks:python:test-suites:dataflow:py38"
include ":sdks:python:test-suites:direct"
include ":sdks:python:test-suites:direct:py36"
include ":sdks:python:test-suites:direct:py37"
include ":sdks:python:test-suites:direct:py38"
include ":sdks:python:test-suites:direct:xlang"
include ":sdks:python:test-suites:portable:py36"
include ":sdks:python:test-suites:portable:py37"
include ":sdks:python:test-suites:portable:py38"
include ":sdks:python:test-suites:tox:pycommon"
include ":sdks:python:test-suites:tox:py36"
include ":sdks:python:test-suites:tox:py37"
include ":sdks:python:test-suites:tox:py38"
include ":vendor:grpc-1_26_0"
include ":vendor:bytebuddy-1_10_8"
include ":vendor:calcite-1_20_0"
include ":vendor:guava-26_0-jre"
include ":vendor:sdks-java-extensions-protobuf"
include ":website"
include ":runners:google-cloud-dataflow-java:worker:legacy-worker"
include ":runners:google-cloud-dataflow-java:worker"
include ":runners:google-cloud-dataflow-java:worker:windmill"
// no dots allowed for project paths
include "beam-test-infra-metrics"
project(":beam-test-infra-metrics").dir = file(".test-infra/metrics")
include "beam-test-tools"
project(":beam-test-tools").dir = file(".test-infra/tools")
include "beam-test-jenkins"
project(":beam-test-jenkins").dir = file(".test-infra/jenkins")
