加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
build.gradle.kts 28.24 KB
一键复制 编辑 原始数据 按行查看 历史
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730
/*
* 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 {
base
// Apply one top level rat plugin to perform any required license enforcement analysis
id("org.nosphere.apache.rat") version "0.8.0"
// Enable gradle-based release management
id("net.researchgate.release") version "2.8.1"
id("org.apache.beam.module")
id("org.sonarqube") version "3.0"
}
/*************************************************************************************************/
// Configure the root project
tasks.rat {
// Set input directory to that of the root project instead of the CWD. This
// makes .gitignore rules (added below) work properly.
inputDir.set(project.rootDir)
val exclusions = mutableListOf(
// Ignore files we track but do not distribute
"**/.github/**/*",
"**/.gitkeep",
"gradlew",
"gradlew.bat",
"gradle/wrapper/gradle-wrapper.properties",
"**/package-list",
"**/test.avsc",
"**/user.avsc",
"**/test/resources/**/*.txt",
"**/test/resources/**/*.csv",
"**/test/**/.placeholder",
// Default eclipse excludes neglect subprojects
// Proto/grpc generated wrappers
"**/apache_beam/portability/api/**/*_pb2*.py",
"**/go/pkg/beam/**/*.pb.go",
// Ignore go.sum files, which don't permit headers
"**/go.sum",
// Ignore Go test data files
"**/go/data/**",
// VCF test files
"**/apache_beam/testing/data/vcf/*",
// JDBC package config files
"**/META-INF/services/java.sql.Driver",
// Website build files
"**/Gemfile.lock",
"**/Rakefile",
"**/.htaccess",
"website/www/site/assets/scss/_bootstrap.scss",
"website/www/site/assets/scss/bootstrap/**/*",
"website/www/site/assets/js/**/*",
"website/www/site/static/images/mascot/*.ai",
"website/www/site/static/js/bootstrap*.js",
"website/www/site/static/js/bootstrap/**/*",
"website/www/site/themes",
"website/www/yarn.lock",
"website/www/package.json",
"website/www/site/static/js/hero/lottie-light.min.js",
"website/www/site/static/js/keen-slider.min.js",
"website/www/site/assets/scss/_keen-slider.scss",
// Release automation files
"release/src/main/scripts/*.txt",
// Ignore ownership files
"ownership/**/*",
"**/OWNERS",
// Ignore CPython LICENSE file
"LICENSE.python",
// Json doesn't support comments.
"**/*.json",
// Katas files
"learning/katas/**/course-info.yaml",
"learning/katas/**/task-info.yaml",
"learning/katas/**/course-remote-info.yaml",
"learning/katas/**/section-remote-info.yaml",
"learning/katas/**/lesson-remote-info.yaml",
"learning/katas/**/task-remote-info.yaml",
"learning/katas/**/*.txt",
// Tour Of Beam learning-content metadata and its samples
"learning/tour-of-beam/**/content-info.yaml",
"learning/tour-of-beam/**/module-info.yaml",
"learning/tour-of-beam/**/group-info.yaml",
"learning/tour-of-beam/**/unit-info.yaml",
"learning/tour-of-beam/backend/samples/**/*.md",
// Tour Of Beam example logs
"learning/tour-of-beam/learning-content/**/*.log",
// Tour Of Beam example txt files
"learning/tour-of-beam/learning-content/**/*.txt",
// Tour Of Beam example csv files
"learning/tour-of-beam/learning-content/**/*.csv",
// Tour Of Beam backend autogenerated Datastore indexes
"learning/tour-of-beam/backend/internal/storage/index.yaml",
// Tour Of Beam backend autogenerated Playground GRPC API stubs and mocks
"learning/tour-of-beam/backend/playground_api/api/v1/api.pb.go",
"learning/tour-of-beam/backend/playground_api/api/v1/api_grpc.pb.go",
"learning/tour-of-beam/backend/playground_api/api/v1/mock.go",
// Playground backend autogenerated GRPC API stubs and mocks
"playground/backend/internal/api/v1/api.pb.go",
"playground/backend/internal/api/v1/api_grpc.pb.go",
// Playground infrastructure autogenerated GRPC API stubs and mocks
"playground/infrastructure/api/v1/api_pb2.py",
"playground/infrastructure/api/v1/api_pb2.pyi",
"playground/infrastructure/api/v1/api_pb2_grpc.py",
// test p8 file for SnowflakeIO
"sdks/java/io/snowflake/src/test/resources/invalid_test_rsa_key.p8",
"sdks/java/io/snowflake/src/test/resources/valid_encrypted_test_rsa_key.p8",
"sdks/java/io/snowflake/src/test/resources/valid_unencrypted_test_rsa_key.p8",
// Mockito extensions
"sdks/java/io/amazon-web-services2/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker",
"sdks/java/io/azure/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker",
"sdks/java/extensions/ml/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker",
// JupyterLab extensions
"sdks/python/apache_beam/runners/interactive/extensions/apache-beam-jupyterlab-sidepanel/yarn.lock",
// Autogenerated apitools clients.
"sdks/python/apache_beam/runners/dataflow/internal/clients/*/**/*.py",
// Sample text file for Java quickstart
"sdks/java/maven-archetypes/examples/sample.txt",
// Ignore Flutter autogenerated files for Playground
"playground/frontend/**/*.g.dart",
"playground/frontend/**/*.g.yaml",
"playground/frontend/**/*.gen.dart",
"playground/frontend/**/*.golden.yaml",
"playground/frontend/**/*.mocks.dart",
"playground/frontend/.metadata",
"playground/frontend/pubspec.lock",
// Ignore Flutter autogenerated files for Playground Components
"playground/frontend/**/*.pb.dart",
"playground/frontend/**/*.pbenum.dart",
"playground/frontend/**/*.pbgrpc.dart",
"playground/frontend/**/*.pbjson.dart",
"playground/frontend/playground_components/.metadata",
"playground/frontend/playground_components/pubspec.lock",
// Ignore Flutter autogenerated files for Tour of Beam
"learning/tour-of-beam/frontend/**/*.g.dart",
"learning/tour-of-beam/frontend/**/*.gen.dart",
"learning/tour-of-beam/frontend/.metadata",
"learning/tour-of-beam/frontend/pubspec.lock",
"learning/tour-of-beam/frontend/lib/firebase_options.dart",
// Ignore .gitkeep file
"**/.gitkeep",
// Ignore Flutter localization .arb files (doesn't support comments)
"playground/frontend/lib/l10n/**/*.arb",
// Ignore LICENSES copied onto containers
"sdks/java/container/license_scripts/manual_licenses",
"sdks/python/container/license_scripts/manual_licenses",
// Ignore autogenrated proto files.
"sdks/typescript/src/apache_beam/proto/**/*.ts",
// Ignore typesciript package management.
"sdks/typescript/package-lock.json",
"sdks/typescript/node_modules/**/*",
)
// Add .gitignore excludes to the Apache Rat exclusion list. We re-create the behavior
// of the Apache Maven Rat plugin since the Apache Ant Rat plugin doesn't do this
// automatically.
val gitIgnore = project(":").file(".gitignore")
if (gitIgnore.exists()) {
val gitIgnoreExcludes = gitIgnore.readLines().filter { it.isNotEmpty() && !it.startsWith("#") }
exclusions.addAll(gitIgnoreExcludes)
}
verbose.set(true)
failOnError.set(true)
setExcludes(exclusions)
}
tasks.check.get().dependsOn(tasks.rat)
// Define root pre/post commit tasks simplifying what is needed
// to be specified on the commandline when executing locally.
// This indirection also makes Jenkins use the branch of the PR
// for the test definitions.
tasks.register("javaPreCommit") {
// We need to list the model/* builds since sdks/java/core doesn't
// depend on any of the model.
dependsOn(":model:pipeline:build")
dependsOn(":model:job-management:build")
dependsOn(":model:fn-execution:build")
dependsOn(":runners:google-cloud-dataflow-java:worker:build")
dependsOn(":sdks:java:core:buildNeeded")
// Inline :sdks:java:core:buildDependents so we can carve out pieces at a time
dependsOn(":beam-validate-runner:build")
dependsOn(":examples:java:build")
dependsOn(":examples:java:twitter:build")
dependsOn(":examples:kotlin:build")
dependsOn(":examples:multi-language:build")
dependsOn(":model:fn-execution:build")
dependsOn(":model:job-management:build")
dependsOn(":model:pipeline:build")
dependsOn(":runners:core-construction-java:build")
dependsOn(":runners:core-java:build")
dependsOn(":runners:direct-java:build")
dependsOn(":runners:extensions-java:metrics:build")
dependsOn(":runners:flink:1.12:build")
dependsOn(":runners:flink:1.12:job-server:build")
dependsOn(":runners:flink:1.13:build")
dependsOn(":runners:flink:1.13:job-server:build")
dependsOn(":runners:flink:1.14:build")
dependsOn(":runners:flink:1.14:job-server:build")
dependsOn(":runners:flink:1.15:build")
dependsOn(":runners:flink:1.15:job-server:build")
dependsOn(":runners:flink:1.16:build")
dependsOn(":runners:flink:1.16:job-server:build")
dependsOn(":runners:google-cloud-dataflow-java:build")
dependsOn(":runners:google-cloud-dataflow-java:examples-streaming:build")
dependsOn(":runners:google-cloud-dataflow-java:examples:build")
dependsOn(":runners:google-cloud-dataflow-java:worker:build")
dependsOn(":runners:google-cloud-dataflow-java:worker:windmill:build")
dependsOn(":runners:java-fn-execution:build")
dependsOn(":runners:java-job-service:build")
dependsOn(":runners:jet:build")
dependsOn(":runners:local-java:build")
dependsOn(":runners:portability:java:build")
dependsOn(":runners:samza:build")
dependsOn(":runners:samza:job-server:build")
dependsOn(":runners:spark:3:build")
dependsOn(":runners:spark:3:job-server:build")
dependsOn(":runners:twister2:build")
dependsOn(":sdks:java:build-tools:build")
dependsOn(":sdks:java:core:build")
dependsOn(":sdks:java:core:jmh:build")
dependsOn(":sdks:java:expansion-service:build")
dependsOn(":sdks:java:expansion-service:app:build")
dependsOn(":sdks:java:extensions:arrow:build")
dependsOn(":sdks:java:extensions:avro:build")
dependsOn(":sdks:java:extensions:euphoria:build")
dependsOn(":sdks:java:extensions:google-cloud-platform-core:build")
dependsOn(":sdks:java:extensions:jackson:build")
dependsOn(":sdks:java:extensions:join-library:build")
dependsOn(":sdks:java:extensions:kryo:build")
dependsOn(":sdks:java:extensions:ml:build")
dependsOn(":sdks:java:extensions:protobuf:build")
dependsOn(":sdks:java:extensions:python:build")
dependsOn(":sdks:java:extensions:sbe:build")
dependsOn(":sdks:java:extensions:schemaio-expansion-service:build")
dependsOn(":sdks:java:extensions:sketching:build")
dependsOn(":sdks:java:extensions:sorter:build")
dependsOn(":sdks:java:extensions:sql:build")
dependsOn(":sdks:java:extensions:sql:datacatalog:build")
dependsOn(":sdks:java:extensions:sql:expansion-service:build")
dependsOn(":sdks:java:extensions:sql:hcatalog:build")
dependsOn(":sdks:java:extensions:sql:jdbc:build")
dependsOn(":sdks:java:extensions:sql:perf-tests:build")
dependsOn(":sdks:java:extensions:sql:shell:build")
dependsOn(":sdks:java:extensions:sql:udf-test-provider:build")
dependsOn(":sdks:java:extensions:sql:udf:build")
dependsOn(":sdks:java:extensions:sql:zetasql:build")
dependsOn(":sdks:java:extensions:timeseries:build")
dependsOn(":sdks:java:extensions:zetasketch:build")
dependsOn(":sdks:java:fn-execution:build")
dependsOn(":sdks:java:harness:build")
dependsOn(":sdks:java:harness:jmh:build")
dependsOn(":sdks:java:io:azure:build")
dependsOn(":sdks:java:io:bigquery-io-perf-tests:build")
dependsOn(":sdks:java:io:common:build")
dependsOn(":sdks:java:io:contextualtextio:build")
dependsOn(":sdks:java:io:expansion-service:build")
dependsOn(":sdks:java:io:file-based-io-tests:build")
dependsOn(":sdks:java:io:sparkreceiver:2:build")
dependsOn(":sdks:java:io:synthetic:build")
dependsOn(":sdks:java:io:xml:build")
dependsOn(":sdks:java:testing:expansion-service:build")
dependsOn(":sdks:java:testing:jpms-tests:build")
dependsOn(":sdks:java:testing:load-tests:build")
dependsOn(":sdks:java:testing:nexmark:build")
dependsOn(":sdks:java:testing:test-utils:build")
dependsOn(":sdks:java:testing:tpcds:build")
dependsOn(":sdks:java:testing:watermarks:build")
dependsOn(":examples:java:preCommit")
dependsOn(":examples:java:twitter:preCommit")
dependsOn(":sdks:java:extensions:sql:jdbc:preCommit")
dependsOn(":sdks:java:javadoc:allJavadoc")
dependsOn(":runners:direct-java:needsRunnerTests")
dependsOn(":sdks:java:container:java8:docker")
}
// a precommit task build multiple IOs (except those splitting into single jobs)
tasks.register("javaioPreCommit") {
dependsOn(":sdks:java:io:amqp:build")
dependsOn(":sdks:java:io:cassandra:build")
dependsOn(":sdks:java:io:csv:build")
dependsOn(":sdks:java:io:cdap:build")
dependsOn(":sdks:java:io:clickhouse:build")
dependsOn(":sdks:java:io:debezium:expansion-service:build")
dependsOn(":sdks:java:io:debezium:build")
dependsOn(":sdks:java:io:elasticsearch-tests:elasticsearch-tests-5:build")
dependsOn(":sdks:java:io:elasticsearch-tests:elasticsearch-tests-6:build")
dependsOn(":sdks:java:io:elasticsearch-tests:elasticsearch-tests-7:build")
dependsOn(":sdks:java:io:elasticsearch-tests:elasticsearch-tests-8:build")
dependsOn(":sdks:java:io:elasticsearch-tests:elasticsearch-tests-common:build")
dependsOn(":sdks:java:io:elasticsearch:build")
dependsOn(":sdks:java:io:file-schema-transform:build")
dependsOn(":sdks:java:io:hbase:build")
dependsOn(":sdks:java:io:hcatalog:build")
dependsOn(":sdks:java:io:influxdb:build")
dependsOn(":sdks:java:io:jdbc:build")
dependsOn(":sdks:java:io:jms:build")
dependsOn(":sdks:java:io:kafka:build")
dependsOn(":sdks:java:io:kudu:build")
dependsOn(":sdks:java:io:mongodb:build")
dependsOn(":sdks:java:io:mqtt:build")
dependsOn(":sdks:java:io:neo4j:build")
dependsOn(":sdks:java:io:parquet:build")
dependsOn(":sdks:java:io:rabbitmq:build")
dependsOn(":sdks:java:io:redis:build")
dependsOn(":sdks:java:io:singlestore:build")
dependsOn(":sdks:java:io:solr:build")
dependsOn(":sdks:java:io:splunk:build")
dependsOn(":sdks:java:io:thrift:build")
dependsOn(":sdks:java:io:tika:build")
}
tasks.register("sqlPreCommit") {
dependsOn(":sdks:java:extensions:sql:runBasicExample")
dependsOn(":sdks:java:extensions:sql:runPojoExample")
dependsOn(":sdks:java:extensions:sql:build")
dependsOn(":sdks:java:extensions:sql:buildDependents")
}
tasks.register("javaPreCommitPortabilityApi") {
dependsOn(":runners:google-cloud-dataflow-java:worker:build")
}
tasks.register("javaPostCommit") {
dependsOn(":sdks:java:extensions:google-cloud-platform-core:postCommit")
dependsOn(":sdks:java:extensions:zetasketch:postCommit")
dependsOn(":sdks:java:extensions:ml:postCommit")
}
tasks.register("javaPostCommitSickbay") {
dependsOn(":runners:samza:validatesRunnerSickbay")
dependsOn(":runners:flink:1.12:validatesRunnerSickbay")
dependsOn(":runners:flink:1.13:validatesRunnerSickbay")
dependsOn(":runners:flink:1.14:validatesRunnerSickbay")
dependsOn(":runners:flink:1.15:validatesRunnerSickbay")
dependsOn(":runners:flink:1.16:validatesRunnerSickbay")
dependsOn(":runners:spark:3:job-server:validatesRunnerSickbay")
dependsOn(":runners:direct-java:validatesRunnerSickbay")
dependsOn(":runners:portability:java:validatesRunnerSickbay")
}
tasks.register("javaHadoopVersionsTest") {
dependsOn(":sdks:java:io:hadoop-common:hadoopVersionsTest")
dependsOn(":sdks:java:io:hadoop-file-system:hadoopVersionsTest")
dependsOn(":sdks:java:io:hadoop-format:hadoopVersionsTest")
dependsOn(":sdks:java:io:hcatalog:hadoopVersionsTest")
dependsOn(":sdks:java:io:parquet:hadoopVersionsTest")
dependsOn(":sdks:java:extensions:sorter:hadoopVersionsTest")
dependsOn(":runners:spark:3:hadoopVersionsTest")
}
tasks.register("javaAvroVersionsTest") {
dependsOn(":sdks:java:extensions:avro:avroVersionsTest")
}
tasks.register("sqlPostCommit") {
dependsOn(":sdks:java:extensions:sql:postCommit")
dependsOn(":sdks:java:extensions:sql:jdbc:postCommit")
dependsOn(":sdks:java:extensions:sql:datacatalog:postCommit")
dependsOn(":sdks:java:extensions:sql:hadoopVersionsTest")
}
tasks.register("goPreCommit") {
// Ensure the Precommit builds run after the tests, in order to avoid the
// flake described in BEAM-11918. This is done by splitting them into two
// tasks and using "mustRunAfter" to enforce ordering.
dependsOn(":goPrecommitTest")
dependsOn(":goPrecommitBuild")
}
tasks.register("goPrecommitTest") {
dependsOn(":sdks:go:goTest")
}
tasks.register("goPrecommitBuild") {
mustRunAfter(":goPrecommitTest")
dependsOn(":sdks:go:goBuild")
dependsOn(":sdks:go:examples:goBuild")
dependsOn(":sdks:go:test:goBuild")
// Ensure all container Go boot code builds as well.
dependsOn(":sdks:java:container:goBuild")
dependsOn(":sdks:python:container:goBuild")
dependsOn(":sdks:go:container:goBuild")
}
tasks.register("goPortablePreCommit") {
dependsOn(":sdks:go:test:ulrValidatesRunner")
}
tasks.register("goPostCommitDataflowARM") {
dependsOn(":sdks:go:test:dataflowValidatesRunnerARM64")
}
tasks.register("goPostCommit") {
dependsOn(":goIntegrationTests")
}
tasks.register("goIntegrationTests") {
doLast {
exec {
executable("sh")
args("-c", "./sdks/go/test/run_validatesrunner_tests.sh --runner dataflow")
}
}
dependsOn(":sdks:go:test:build")
dependsOn(":runners:google-cloud-dataflow-java:worker:shadowJar")
}
tasks.register("playgroundPreCommit") {
dependsOn(":playground:lintProto")
dependsOn(":playground:backend:precommit")
dependsOn(":playground:frontend:precommit")
}
tasks.register("pythonPreCommit") {
dependsOn(":sdks:python:test-suites:tox:pycommon:preCommitPyCommon")
dependsOn(":sdks:python:test-suites:tox:py38:preCommitPy38")
dependsOn(":sdks:python:test-suites:tox:py39:preCommitPy39")
dependsOn(":sdks:python:test-suites:tox:py310:preCommitPy310")
dependsOn(":sdks:python:test-suites:tox:py311:preCommitPy311")
}
tasks.register("pythonPreCommitIT") {
dependsOn(":sdks:python:test-suites:tox:pycommon:preCommitPyCommon")
dependsOn(":sdks:python:test-suites:dataflow:preCommitIT")
}
tasks.register("pythonDocsPreCommit") {
dependsOn(":sdks:python:test-suites:tox:pycommon:docs")
}
tasks.register("pythonDockerBuildPreCommit") {
dependsOn(":sdks:python:container:py38:docker")
dependsOn(":sdks:python:container:py39:docker")
dependsOn(":sdks:python:container:py310:docker")
dependsOn(":sdks:python:container:py311:docker")
}
tasks.register("pythonLintPreCommit") {
// TODO(https://github.com/apache/beam/issues/20209): Find a better way to specify lint and formatter tasks without hardcoding py version.
dependsOn(":sdks:python:test-suites:tox:py38:lint")
}
tasks.register("pythonFormatterPreCommit") {
dependsOn("sdks:python:test-suites:tox:py38:formatter")
}
tasks.register("python38PostCommit") {
dependsOn(":sdks:python:test-suites:dataflow:py38:postCommitIT")
dependsOn(":sdks:python:test-suites:direct:py38:postCommitIT")
dependsOn(":sdks:python:test-suites:direct:py38:hdfsIntegrationTest")
dependsOn(":sdks:python:test-suites:portable:py38:postCommitPy38")
// TODO: https://github.com/apache/beam/issues/22651
// The default container uses Python 3.8. The goal here is to
// duild Docker images for TensorRT tests during run time for python versions
// other than 3.8 and add these tests in other python postcommit suites.
dependsOn(":sdks:python:test-suites:dataflow:py38:inferencePostCommitIT")
dependsOn(":sdks:python:test-suites:direct:py38:inferencePostCommitIT")
}
tasks.register("python39PostCommit") {
dependsOn(":sdks:python:test-suites:dataflow:py39:postCommitIT")
dependsOn(":sdks:python:test-suites:direct:py39:postCommitIT")
dependsOn(":sdks:python:test-suites:direct:py39:hdfsIntegrationTest")
dependsOn(":sdks:python:test-suites:portable:py39:postCommitPy39")
// TODO (https://github.com/apache/beam/issues/23966)
// Move this to Python 3.10 test suite once tfx-bsl has python 3.10 wheel.
dependsOn(":sdks:python:test-suites:direct:py39:inferencePostCommitIT")
}
tasks.register("python310PostCommit") {
dependsOn(":sdks:python:test-suites:dataflow:py310:postCommitIT")
dependsOn(":sdks:python:test-suites:direct:py310:postCommitIT")
dependsOn(":sdks:python:test-suites:direct:py310:hdfsIntegrationTest")
dependsOn(":sdks:python:test-suites:portable:py310:postCommitPy310")
}
tasks.register("python311PostCommit") {
dependsOn(":sdks:python:test-suites:dataflow:py311:postCommitIT")
dependsOn(":sdks:python:test-suites:direct:py311:postCommitIT")
dependsOn(":sdks:python:test-suites:direct:py311:hdfsIntegrationTest")
dependsOn(":sdks:python:test-suites:portable:py311:postCommitPy311")
}
tasks.register("portablePythonPreCommit") {
dependsOn(":sdks:python:test-suites:portable:py38:preCommitPy38")
dependsOn(":sdks:python:test-suites:portable:py311:preCommitPy311")
}
tasks.register("pythonSparkPostCommit") {
dependsOn(":sdks:python:test-suites:portable:py38:sparkValidatesRunner")
dependsOn(":sdks:python:test-suites:portable:py39:sparkValidatesRunner")
dependsOn(":sdks:python:test-suites:portable:py311:sparkValidatesRunner")
}
tasks.register("websitePreCommit") {
dependsOn(":website:preCommit")
}
tasks.register("communityMetricsPreCommit") {
dependsOn(":beam-test-infra-metrics:preCommit")
}
tasks.register("communityMetricsProber") {
dependsOn(":beam-test-infra-metrics:checkProber")
}
tasks.register("javaExamplesDataflowPrecommit") {
dependsOn(":runners:google-cloud-dataflow-java:examples:preCommit")
dependsOn(":runners:google-cloud-dataflow-java:examples-streaming:preCommit")
}
tasks.register("whitespacePreCommit") {
// TODO(https://github.com/apache/beam/issues/20209): Find a better way to specify the tasks without hardcoding py version.
dependsOn(":sdks:python:test-suites:tox:py38:archiveFilesToLint")
dependsOn(":sdks:python:test-suites:tox:py38:unpackFilesToLint")
dependsOn(":sdks:python:test-suites:tox:py38:whitespacelint")
}
tasks.register("typescriptPreCommit") {
// TODO(https://github.com/apache/beam/issues/20209): Find a better way to specify the tasks without hardcoding py version.
dependsOn(":sdks:python:test-suites:tox:py38:eslint")
dependsOn(":sdks:python:test-suites:tox:py38:jest")
}
tasks.register("pushAllRunnersDockerImages") {
dependsOn(":runners:spark:3:job-server:container:dockerPush")
for (version in project.ext.get("allFlinkVersions") as Array<*>) {
dependsOn(":runners:flink:${version}:job-server-container:dockerPush")
}
doLast {
if (project.hasProperty("prune-images")) {
exec {
executable("docker")
args("system", "prune", "-a", "--force")
}
}
}
}
tasks.register("pushAllSdkDockerImages") {
// Enforce ordering to allow the prune step to happen between runs.
// This will ensure we don't use up too much space (especially in CI environments)
mustRunAfter(":pushAllRunnersDockerImages")
dependsOn(":sdks:java:container:pushAll")
dependsOn(":sdks:python:container:pushAll")
dependsOn(":sdks:go:container:pushAll")
dependsOn(":sdks:typescript:container:pushAll")
doLast {
if (project.hasProperty("prune-images")) {
exec {
executable("docker")
args("system", "prune", "-a", "--force")
}
}
}
}
tasks.register("pushAllXlangDockerImages") {
// Enforce ordering to allow the prune step to happen between runs.
// This will ensure we don't use up too much space (especially in CI environments)
mustRunAfter(":pushAllSdkDockerImages")
dependsOn(":sdks:java:expansion-service:container:dockerPush")
dependsOn(":sdks:java:transform-service:controller-container:dockerPush")
dependsOn(":sdks:python:expansion-service-container:dockerPush")
doLast {
if (project.hasProperty("prune-images")) {
exec {
executable("docker")
args("system", "prune", "-a", "--force")
}
}
}
}
tasks.register("pushAllDockerImages") {
dependsOn(":pushAllRunnersDockerImages")
dependsOn(":pushAllSdkDockerImages")
dependsOn(":pushAllXlangDockerImages")
}
// Use this task to validate the environment set up for Go, Python and Java
tasks.register("checkSetup") {
dependsOn(":sdks:go:examples:wordCount")
dependsOn(":sdks:python:wordCount")
dependsOn(":examples:java:wordCount")
}
// Configure the release plugin to do only local work; the release manager determines what, if
// anything, to push. On failure, the release manager can reset the branch without pushing.
release {
revertOnFail = false
tagTemplate = "v${version}"
// workaround from https://github.com/researchgate/gradle-release/issues/281#issuecomment-466876492
release {
with (propertyMissing("git") as net.researchgate.release.GitAdapter.GitConfig) {
requireBranch = "release-.*|master"
pushToRemote = ""
}
}
}
// Reports linkage errors across multiple Apache Beam artifact ids.
//
// To use (from the root of project):
// ./gradlew -Ppublishing -PjavaLinkageArtifactIds=artifactId1,artifactId2,... :checkJavaLinkage
//
// For example:
// ./gradlew -Ppublishing -PjavaLinkageArtifactIds=beam-sdks-java-core,beam-sdks-java-io-jdbc :checkJavaLinkage
//
// Note that this task publishes artifacts into your local Maven repository.
if (project.hasProperty("javaLinkageArtifactIds")) {
if (!project.hasProperty("publishing")) {
throw GradleException("You can only check linkage of Java artifacts if you specify -Ppublishing on the command line as well.")
}
val linkageCheckerJava by configurations.creating
dependencies {
linkageCheckerJava("com.google.cloud.tools:dependencies:1.5.6")
}
// We need to evaluate all the projects first so that we can find depend on all the
// publishMavenJavaPublicationToMavenLocal tasks below.
for (p in rootProject.subprojects) {
if (p.path != project.path) {
evaluationDependsOn(p.path)
}
}
project.tasks.register<JavaExec>("checkJavaLinkage") {
dependsOn(project.getTasksByName("publishMavenJavaPublicationToMavenLocal", true /* recursively */))
classpath = linkageCheckerJava
mainClass.value("com.google.cloud.tools.opensource.classpath.LinkageCheckerMain")
val javaLinkageArtifactIds: String = project.property("javaLinkageArtifactIds") as String? ?: ""
var arguments = arrayOf("-a", javaLinkageArtifactIds.split(",").joinToString(",") {
if (it.contains(":")) {
"${project.ext.get("mavenGroupId")}:${it}"
} else {
// specify the version if not provided
"${project.ext.get("mavenGroupId")}:${it}:${project.version}"
}
})
// Exclusion file filters out existing linkage errors before a change
if (project.hasProperty("javaLinkageWriteBaseline")) {
arguments += "--output-exclusion-file"
arguments += project.property("javaLinkageWriteBaseline") as String
} else if (project.hasProperty("javaLinkageReadBaseline")) {
arguments += "--exclusion-file"
arguments += project.property("javaLinkageReadBaseline") as String
}
args(*arguments)
doLast {
println("NOTE: This task published artifacts into your local Maven repository. You may want to remove them manually.")
}
}
}
if (project.hasProperty("compileAndRunTestsWithJava11")) {
tasks.getByName("javaPreCommitPortabilityApi").dependsOn(":sdks:java:testing:test-utils:verifyJavaVersion")
tasks.getByName("javaExamplesDataflowPrecommit").dependsOn(":sdks:java:testing:test-utils:verifyJavaVersion")
tasks.getByName("sqlPreCommit").dependsOn(":sdks:java:testing:test-utils:verifyJavaVersion")
} else if (project.hasProperty("compileAndRunTestsWithJava17")) {
tasks.getByName("javaPreCommitPortabilityApi").dependsOn(":sdks:java:testing:test-utils:verifyJavaVersion17")
tasks.getByName("javaExamplesDataflowPrecommit").dependsOn(":sdks:java:testing:test-utils:verifyJavaVersion17")
tasks.getByName("sqlPreCommit").dependsOn(":sdks:java:testing:test-utils:verifyJavaVersion17")
} else {
allprojects {
tasks.withType(Test::class).configureEach {
exclude("**/JvmVerification.class")
}
}
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化