| /* |
| * 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. |
| */ |
| |
| ext.dockerImageName = "wskdeploy" |
| ext.dockerContainerName = "wskdeploy" |
| ext.dockerBuildArgs = getDockerBuildArgs() |
| apply from: 'gradle/docker.gradle' |
| |
| |
| task removeBinary(type: Delete) { |
| delete "${projectDir}/bin/wskdeploy" |
| delete "${projectDir}/bin/mac" |
| delete "${projectDir}/bin/linux" |
| delete "${projectDir}/bin/windows" |
| } |
| |
| task distBinary(dependsOn: [removeBinary, distDocker]) { |
| doLast { |
| run(dockerBinary + ["rm", "-f", dockerContainerName], true) |
| run(dockerBinary + ["run", "--name", dockerContainerName, dockerTaggedImageName]) |
| |
| // Copy all Go binaries from Docker into openwhisk/bin folder |
| run(dockerBinary + ["cp", dockerContainerName + |
| ":/src/github.com/apache/incubator-openwhisk-wskdeploy/build/.", "${projectDir}/bin"]) |
| |
| run(dockerBinary + ["rm", "-f", dockerContainerName]) |
| } |
| } |
| |
| task dumpOSInfo { |
| doLast { |
| println "os.name = "+getOsName() |
| println "os.arch = "+getOsArch() |
| println "go.name = "+mapOsNameToGoName(getOsName()) |
| println "go.arch = "+mapOsArchToGoArch(getOsArch()) |
| } |
| } |
| |
| task copyWSKDEPLOYShortcut(type: Copy, dependsOn: [distBinary, dumpOSInfo]) { |
| String go_osname = mapOsNameToGoName(getOsName()) |
| String go_osarch = mapOsArchToGoArch(getOsArch()) |
| String from_path_wsk = "${projectDir}/bin/${go_osname}/${go_osarch}/wskdeploy" |
| String to_path_dir = "${projectDir}/bin" |
| |
| from from_path_wsk |
| into to_path_dir |
| } |
| |
| pushImage.finalizedBy copyWSKDEPLOYShortcut |
| |
| // Returns the Go CLI docker build args |
| def getDockerBuildArgs() { |
| String local_os = mapOsNameToGoName(getOsName()) |
| String local_arch = mapOsArchToGoArch(getOsArch()) |
| def res = [] |
| |
| if(!project.hasProperty('crossCompileWSKDEPLOY') || project.crossCompileWSKDEPLOY == "false") { |
| res = ["WSKDEPLOY_OS=${local_os}", "WSKDEPLOY_ARCH=${local_arch}"] |
| } else { |
| res = ["WSKDEPLOY_OS=mac linux windows", "WSKDEPLOY_ARCH=386 amd64"] |
| } |
| |
| return res |
| } |
| |
| def run(cmd, ignoreError = false) { |
| println("Executing '${cmd.join(" ")}'") |
| def proc = cmd.execute() |
| proc.waitFor() |
| if(!ignoreError && proc.exitValue() != 0) { |
| println("Command '${cmd.join(" ")}' failed with exitCode ${proc.exitValue()}") |
| } |
| } |
| |
| def getOsName() { |
| return System.properties['os.name'] |
| } |
| |
| def getOsArch() { |
| return System.properties['os.arch'] |
| } |
| |
| def mapOsNameToGoName(String osname) { |
| String osname_l = osname.toLowerCase() |
| if (osname_l.contains("nux") || osname.contains("nix")) return "linux" |
| if (osname_l.contains("mac")) return "mac" |
| if (osname_l.contains("windows")) return "windows" |
| return osname_l |
| } |
| |
| def mapOsArchToGoArch(String osarch) { |
| String osarch_l = osarch.toLowerCase() |
| if (osarch_l.contains("x86_64") || osarch_l == "amd64") return "amd64" |
| if (osarch_l.contains("i386") || osarch_l.contains("x86_32")) return "386" |
| return osarch_l |
| } |