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 }