github.com/apache/beam/sdks/v2@v2.48.2/java/expansion-service/container/build.gradle (about)

     1  /*
     2   * Licensed to the Apache Software Foundation (ASF) under one
     3   * or more contributor license agreements.  See the NOTICE file
     4   * distributed with this work for additional information
     5   * regarding copyright ownership.  The ASF licenses this file
     6   * to you under the Apache License, Version 2.0 (the
     7   * License); you may not use this file except in compliance
     8   * with the License.  You may obtain a copy of the License at
     9   *
    10   *     http://www.apache.org/licenses/LICENSE-2.0
    11   *
    12   * Unless required by applicable law or agreed to in writing, software
    13   * distributed under the License is distributed on an AS IS BASIS,
    14   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    15   * See the License for the specific language governing permissions and
    16   * limitations under the License.
    17   */
    18  
    19  plugins {
    20      id 'org.apache.beam.module'
    21      id 'com.github.jk1.dependency-license-report' version '1.16'
    22  }
    23  
    24  applyDockerNature()
    25  applyGoNature()
    26  
    27  evaluationDependsOn(":sdks:java:extensions:schemaio-expansion-service")
    28  evaluationDependsOn(":sdks:java:io:expansion-service")
    29  evaluationDependsOn(":sdks:java:io:google-cloud-platform:expansion-service")
    30  
    31  description = "Apache Beam :: SDKs :: Java :: Expansion-service :: Container"
    32  
    33  configurations {
    34      dockerDependency
    35      expansionServiceLauncher
    36  }
    37  
    38  dependencies {
    39      dockerDependency project(path: ":sdks:java:extensions:schemaio-expansion-service", configuration: "shadow")
    40      dockerDependency project(path: ":sdks:java:io:expansion-service", configuration: "shadow")
    41      dockerDependency project(path: ":sdks:java:io:google-cloud-platform:expansion-service", configuration: "shadow")
    42  }
    43  
    44  goBuild {
    45      goTargets = '*.go' // only build the immediate directory.
    46      outputLocation = './build/target/launcher/${GOOS}_${GOARCH}/boot'
    47  }
    48  
    49  task copyDockerfileDependencies(type: Copy) {
    50      from configurations.dockerDependency
    51      rename 'beam-sdks-java-extensions-schemaio-expansion-service-.*.jar', 'beam-sdks-java-extensions-schemaio-expansion-service.jar'
    52      rename 'beam-sdks-java-io-expansion-service-.*.jar', 'beam-sdks-java-io-expansion-service.jar'
    53      rename 'beam-sdks-java-io-google-cloud-platform-expansion-service-.*.jar', 'beam-sdks-java-io-google-cloud-platform-expansion-service.jar'
    54      setDuplicatesStrategy(DuplicatesStrategy.INCLUDE)
    55      into "build/target"
    56  }
    57  
    58  task copyConfigFile(type: Copy) {
    59      from "expansion_service_config.yml"
    60      into "build/target"
    61  }
    62  
    63  docker {
    64      name containerImageName(
    65              name: project.docker_image_default_repo_prefix + "java_expansion_service",
    66              root: project.rootProject.hasProperty(["docker-repository-root"]) ?
    67                      project.rootProject["docker-repository-root"] :
    68                      project.docker_image_default_repo_root,
    69              tag: project.rootProject.hasProperty(["docker-tag"]) ?
    70                      project.rootProject["docker-tag"] : project.sdk_version)
    71      // tags used by dockerTag task
    72      tags containerImageTags()
    73      files "./build"
    74      buildx project.containerPlatforms() != [project.nativeArchitecture()]
    75      platform(*project.containerPlatforms())
    76  }
    77  
    78  dockerPrepare.dependsOn goBuild
    79  dockerPrepare.dependsOn copyConfigFile
    80  dockerPrepare.dependsOn copyDockerfileDependencies
    81  
    82  if (project.rootProject.hasProperty(["docker-pull-licenses"])) {
    83      def copyGolangLicenses = tasks.register("copyGolangLicenses", Copy) {
    84          from "${project(':release:go-licenses:py').buildDir}/output"
    85          into "build/target/go-licenses"
    86          dependsOn ':release:go-licenses:py:createLicenses'
    87      }
    88      dockerPrepare.dependsOn copyGolangLicenses
    89  } else {
    90      def skipPullLicenses = tasks.register("skipPullLicenses", Exec) {
    91          executable "sh"
    92          // Touch a dummy file to ensure the directory exists.
    93          args "-c", "mkdir -p build/target/go-licenses && touch build/target/go-licenses/skip"
    94      }
    95      dockerPrepare.dependsOn skipPullLicenses
    96  }
    97  
    98  task pushAll {
    99      dependsOn dockerPush
   100  }