blob: 1cf4798b71a931a93f0ac806871820c6e69e2a86 [file] [log] [blame]
/*
* 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
}