This is an automated email from the ASF dual-hosted git repository. msciabarra pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/openwhisk-runtime-go.git
The following commit(s) were added to refs/heads/master by this push: new 21dedfe drop golang1.13 and golang1.15 (#167) 21dedfe is described below commit 21dedfee0ecf572f33f9b9e6d743f5a598c3a80d Author: David Grove <dgrove-...@users.noreply.github.com> AuthorDate: Fri May 13 08:27:27 2022 -0400 drop golang1.13 and golang1.15 (#167) --- .travis.yml | 2 +- docs/BUILD.md | 4 +- docs/DEPLOY.md | 2 +- golang1.13/Dockerfile | 48 ------- golang1.13/Makefile | 45 ------- golang1.13/bin/compile | 138 --------------------- golang1.13/build.gradle | 38 ------ golang1.13/lib/launcher.go | 122 ------------------ golang1.15/Dockerfile | 54 -------- golang1.15/Makefile | 44 ------- golang1.15/bin/compile | 138 --------------------- golang1.15/build.gradle | 38 ------ golang1.15/lib/launcher.go | 122 ------------------ settings.gradle | 2 - .../ActionLoopBasicGo13Tests.scala | 31 ----- .../ActionLoopBasicGo15Tests.scala | 31 ----- .../ActionLoopGo13ContainerTests.scala | 31 ----- .../ActionLoopGo15ContainerTests.scala | 31 ----- 18 files changed, 4 insertions(+), 917 deletions(-) diff --git a/.travis.yml b/.travis.yml index f295134..6cad132 100644 --- a/.travis.yml +++ b/.travis.yml @@ -51,7 +51,7 @@ deploy: repo: apache/openwhisk-runtime-go - provider: script skip_cleanup: true - script: "./tools/travis/publish.sh openwhisk 1.13 nightly && ./tools/travis/publish.sh openwhisk 1.15 nightly && ./tools/travis/publish.sh openwhisk 1.16 nightly && ./tools/travis/publish.sh openwhisk 1.17 nightly && ./tools/travis/publish.sh openwhisk 1.18 nightly" + script: "./tools/travis/publish.sh openwhisk 1.16 nightly && ./tools/travis/publish.sh openwhisk 1.17 nightly && ./tools/travis/publish.sh openwhisk 1.18 nightly" on: branch: master repo: apache/openwhisk-runtime-go diff --git a/docs/BUILD.md b/docs/BUILD.md index bef4bc2..14b5841 100644 --- a/docs/BUILD.md +++ b/docs/BUILD.md @@ -43,9 +43,9 @@ To build the docker images, after compiling go proxy: This will build the images: -* `action-golang-v1.13`: an image supporting Go 1.13 sources (does expect an ack) -* `action-golang-v1.15`: an image supporting Go 1.15 sources (does expect an ack) * `action-golang-v1.16`: an image supporting Go 1.16 sources (does expect an ack) +* `action-golang-v1.17`: an image supporting Go 1.17 sources (does expect an ack) +* `action-golang-v1.18`: an image supporting Go 1.18 sources (does expect an ack) * `actionloop-base`: the base image, supporting generic executables ans shell script (does not expect an ack) The `actionloop-base` image can be used for supporting other compiled programming languages as long as they implement a `compile` script and the *action loop* protocol described below. Please check [ENVVARS.md](ENVVARS.md) for configuration options diff --git a/docs/DEPLOY.md b/docs/DEPLOY.md index 4f928b8..a784bd0 100644 --- a/docs/DEPLOY.md +++ b/docs/DEPLOY.md @@ -19,7 +19,7 @@ # Deployment options -There are a few images provided: the `actionloop-base` and the `action-golang-v1.13`, `action-golang-v1.15` and `action-golang-v1.16` are available. Each image accepts different input in the deployment. +There are a few images provided: the `actionloop-base` and the `action-golang-v1.16`, `action-golang-v1.17` and `action-golang-v1.18` are available. Each image accepts different input in the deployment. <a name="actionloop"> diff --git a/golang1.13/Dockerfile b/golang1.13/Dockerfile deleted file mode 100644 index 59f7da7..0000000 --- a/golang1.13/Dockerfile +++ /dev/null @@ -1,48 +0,0 @@ -# -# 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. -# -FROM golang:1.13.15 -RUN echo "deb http://deb.debian.org/debian buster-backports main contrib non-free" \ - >>/etc/apt/sources.list &&\ - echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections &&\ - apt-get update &&\ - # Upgrade installed packages to get latest security fixes if the base image does not contain them already. - apt-get upgrade -y --no-install-recommends &&\ - apt-get install -y apt-utils &&\ - apt-get install -y \ - curl \ - jq \ - git \ - vim &&\ - apt-get -y install \ - librdkafka1=0.11.6-1.1 \ - librdkafka++1=0.11.6-1.1 &&\ - apt-get -y install \ - librdkafka-dev=0.11.6-1.1 &&\ - # Cleanup apt data, we do not need them later on. - apt-get clean && rm -rf /var/lib/apt/lists/* &&\ - go get -u github.com/go-delve/delve/cmd/dlv &&\ - mkdir /action - -WORKDIR /action -ADD proxy /bin/proxy -ADD bin/compile /bin/compile -ADD lib/launcher.go /lib/launcher.go -ENV OW_COMPILER=/bin/compile -ENV OW_LOG_INIT_ERROR=1 -ENV OW_WAIT_FOR_ACK=1 -ENV OW_EXECUTION_ENV=openwhisk/action-golang-v1.13 -ENTRYPOINT [ "/bin/proxy" ] diff --git a/golang1.13/Makefile b/golang1.13/Makefile deleted file mode 100644 index 5f86e0a..0000000 --- a/golang1.13/Makefile +++ /dev/null @@ -1,45 +0,0 @@ -# -# 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. -# -IMG=action-golang-v1.13:latest - -build: - ../gradlew distDocker - -localbuild: - GOOS=linux GOARCH=amd64 go build -o proxy -a -ldflags '-extldflags "-static"' ../main/proxy.go - docker build -t $(IMG) . - docker tag $(IMG) whisk/$(IMG) - -push: build - docker tag $(IMG) actionloop/$(IMG) - docker push actionloop/$(IMG) - -clean: - docker rmi -f whisk/$(IMG) actionloop/$(IMG) - -.PHONY: debug -debug: - docker run -p 8080:8080 -p 8079:8079 \ - --name go-action --rm -ti --entrypoint=/bin/bash \ - -e OW_COMPILER=/mnt/bin/compile \ - -v $(PWD):/mnt whisk/$(IMG) - -enter: -enter: - docker exec -ti go-action bash - -.PHONY: build clean debug diff --git a/golang1.13/bin/compile b/golang1.13/bin/compile deleted file mode 100755 index 9b1217f..0000000 --- a/golang1.13/bin/compile +++ /dev/null @@ -1,138 +0,0 @@ -#!/usr/bin/python -u -"""Golang Action Compiler -# -# 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. -# -""" -from __future__ import print_function -import os, os.path, sys, re, shutil, subprocess, traceback, codecs -from os.path import dirname, exists -from time import sleep - -# write a file creating intermediate directories -def write_file(file, body, executable=False): - try: os.makedirs(dirname(file), mode=0o755) - except: pass - with open(file, mode="wb") as f: - f.write(body) - if executable: - os.chmod(file, 0o755) - -# copy a file eventually replacing a substring -def copy_replace(src, dst, match=None, replacement=""): - with open(src, 'rb') as s: - body = s.read() - if match: - body = body.replace(match, replacement) - write_file(dst, body) - - -def sources(launcher, source_dir, main): - func = main.capitalize() - has_main = None - - # copy the exec to exec.go - # also check if it has a main in it - src = "%s/exec" % source_dir - dst = "%s/exec__.go" % source_dir - if os.path.isfile(src): - with codecs.open(src, 'r', 'utf-8') as s: - with codecs.open(dst, 'w', 'utf-8') as d: - body = s.read() - has_main = re.match(r".*package\s+main\W.*func\s+main\s*\(\s*\)", body, flags=re.DOTALL) - d.write(body) - - # copy the launcher fixing the main - if not has_main: - dst = "%s/main__.go" % source_dir - if os.path.isdir("%s/main" % source_dir): - dst = "%s/main/main__.go" % source_dir - with codecs.open(dst, 'w', 'utf-8') as d: - with codecs.open(launcher, 'r', 'utf-8') as e: - code = e.read() - code = code.replace("Main", func) - d.write(code) - -def build(source_dir, target_dir): - # compile... - source_dir = os.path.abspath(source_dir) - parent = dirname(source_dir) - target = os.path.abspath("%s/exec" % target_dir) - if os.environ.get("__OW_EXECUTION_ENV"): - write_file("%s.env" % target, os.environ["__OW_EXECUTION_ENV"]) - - env = { - "GOROOT": "/usr/local/go", - "GOPATH": "/home/go", - "PATH": os.environ["PATH"], - "GOCACHE": "/tmp", - "GO111MODULE": "on" - } - - gomod = "%s/go.mod" % source_dir - with open(os.devnull, "w") as dn: - if exists(gomod): - ret = subprocess.call(["go", "mod", "download"], cwd=source_dir, env=env, stderr=dn, stdout=dn) - if ret != 0: - print("cannot download modules") - return - else: - ret = subprocess.call(["go", "mod", "init", "exec"], cwd=source_dir, env=env, stdout=dn, stderr=dn) - if ret != 0: - print("cannot init modules") - return - - ldflags = "-s -w" - gobuild = ["go", "build", "-o", target, "-ldflags", ldflags] - if os.environ.get("__OW_EXECUTION_ENV"): - ldflags += " -X main.OwExecutionEnv=%s" % os.environ["__OW_EXECUTION_ENV"] - ret = subprocess.call(gobuild, cwd=source_dir, env=env) - if ret != 0: - print("failed", " ".join(gobuild), "\nin", source_dir, "\nenv", env) - -def debug(source_dir, target_dir, port): - source_dir = os.path.abspath(source_dir) - target = os.path.abspath("%s/exec" % target_dir) - if os.environ.get("__OW_EXECUTION_ENV"): - write_file("%s/exec.env" % source_dir, os.environ["__OW_EXECUTION_ENV"]) - shutil.rmtree(target_dir) - shutil.move(source_dir, target_dir) - write_file(target, """#!/bin/bash -cd "$(dirname $0)" -export GOCACHE=/tmp -export PATH=%s -exec script -q -c '/go/bin/dlv debug --headless --listen=127.0.0.1:%s --continue --accept-multiclient --log-dest /tmp/delve.log' -""" % (os.environ["PATH"], port) , True) - -def main(argv): - if len(argv) < 4: - print("usage: <main-file> <source-dir> <target-dir>") - sys.exit(1) - - main = argv[1] - source_dir = argv[2] - target_dir = argv[3] - launcher = dirname(dirname(argv[0]))+"/lib/launcher.go" - sources(launcher, source_dir, main) - - # if the debug port is present and not empty build with debug - if os.environ.get("__OW_DEBUG_PORT"): - debug(source_dir, target_dir, os.environ["__OW_DEBUG_PORT"]) - else: - build(source_dir, target_dir) - -if __name__ == '__main__': - main(sys.argv) diff --git a/golang1.13/build.gradle b/golang1.13/build.gradle deleted file mode 100644 index 5323ec2..0000000 --- a/golang1.13/build.gradle +++ /dev/null @@ -1,38 +0,0 @@ -/* - * 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 = 'action-golang-v1.13' -apply from: '../gradle/docker.gradle' - -distDocker.dependsOn 'staticBuildProxy' -distDocker.finalizedBy('cleanup') - -task staticBuildProxy(type: Exec) { - environment CGO_ENABLED: "0" - environment GOOS: "linux" - environment GOARCH: "amd64" - environment GO111MODULE: "on" - - commandLine 'go', 'build', - '-o', 'proxy', '-a', - '-ldflags', '-extldflags "-static"', - '../main/proxy.go' -} - -task cleanup(type: Delete) { - delete 'proxy' -} diff --git a/golang1.13/lib/launcher.go b/golang1.13/lib/launcher.go deleted file mode 100644 index 3f95c15..0000000 --- a/golang1.13/lib/launcher.go +++ /dev/null @@ -1,122 +0,0 @@ -/* - * 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. - */ - -package main - -import ( - "bufio" - "bytes" - "encoding/json" - "fmt" - "io" - "log" - "os" - "strings" -) - -// OwExecutionEnv is the execution environment set at compile time -var OwExecutionEnv = "" - -func main() { - // check if the execution environment is correct - if OwExecutionEnv != "" && OwExecutionEnv != os.Getenv("__OW_EXECUTION_ENV") { - fmt.Println("Execution Environment Mismatch") - fmt.Println("Expected: ", OwExecutionEnv) - fmt.Println("Actual: ", os.Getenv("__OW_EXECUTION_ENV")) - os.Exit(1) - } - - // debugging - var debug = os.Getenv("OW_DEBUG") != "" - if debug { - f, err := os.OpenFile("/tmp/action.log", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666) - if err == nil { - log.SetOutput(f) - } - log.Printf("Environment: %v", os.Environ()) - } - - // assign the main function - type Action func(event map[string]interface{}) map[string]interface{} - var action Action - action = Main - - // input - out := os.NewFile(3, "pipe") - defer out.Close() - reader := bufio.NewReader(os.Stdin) - - // acknowledgement of started action - fmt.Fprintf(out, `{ "ok": true}%s`, "\n") - if debug { - log.Println("action started") - } - - // read-eval-print loop - for { - // read one line - inbuf, err := reader.ReadBytes('\n') - if err != nil { - if err != io.EOF { - log.Println(err) - } - break - } - if debug { - log.Printf(">>>'%s'>>>", inbuf) - } - // parse one line - var input map[string]interface{} - err = json.Unmarshal(inbuf, &input) - if err != nil { - log.Println(err.Error()) - fmt.Fprintf(out, "{ error: %q}\n", err.Error()) - continue - } - if debug { - log.Printf("%v\n", input) - } - // set environment variables - for k, v := range input { - if k == "value" { - continue - } - if s, ok := v.(string); ok { - os.Setenv("__OW_"+strings.ToUpper(k), s) - } - } - // get payload if not empty - var payload map[string]interface{} - if value, ok := input["value"].(map[string]interface{}); ok { - payload = value - } - // process the request - result := action(payload) - // encode the answer - output, err := json.Marshal(&result) - if err != nil { - log.Println(err.Error()) - fmt.Fprintf(out, "{ error: %q}\n", err.Error()) - continue - } - output = bytes.Replace(output, []byte("\n"), []byte(""), -1) - if debug { - log.Printf("<<<'%s'<<<", output) - } - fmt.Fprintf(out, "%s\n", output) - } -} diff --git a/golang1.15/Dockerfile b/golang1.15/Dockerfile deleted file mode 100644 index e8de9c0..0000000 --- a/golang1.15/Dockerfile +++ /dev/null @@ -1,54 +0,0 @@ -# -# 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. -# - -# Do not fix the patch level for golang:1.15 to automatically get security fixes. -FROM golang:1.15 - -ENV GO111MODULE=on - -RUN echo "deb http://deb.debian.org/debian buster-backports main contrib non-free" \ - >>/etc/apt/sources.list &&\ - echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections &&\ - apt-get update &&\ - # Upgrade installed packages to get latest security fixes if the base image does not contain them already. - apt-get upgrade -y --no-install-recommends &&\ - apt-get install -y apt-utils &&\ - apt-get install -y \ - curl \ - jq \ - git \ - zip \ - vim &&\ - apt-get -y install \ - librdkafka1=0.11.6-1.1 \ - librdkafka++1=0.11.6-1.1 &&\ - apt-get -y install \ - librdkafka-dev=0.11.6-1.1 &&\ - # Cleanup apt data, we do not need them later on. - apt-get clean && rm -rf /var/lib/apt/lists/* &&\ - go get -u github.com/go-delve/delve/cmd/dlv@v1.8.1 &&\ - mkdir /action - -WORKDIR /action -ADD proxy /bin/proxy -ADD bin/compile /bin/compile -ADD lib/launcher.go /lib/launcher.go -ENV OW_COMPILER=/bin/compile -ENV OW_LOG_INIT_ERROR=1 -ENV OW_WAIT_FOR_ACK=1 -ENV OW_EXECUTION_ENV=openwhisk/action-golang-v1.15 -ENTRYPOINT [ "/bin/proxy" ] diff --git a/golang1.15/Makefile b/golang1.15/Makefile deleted file mode 100644 index 989ed11..0000000 --- a/golang1.15/Makefile +++ /dev/null @@ -1,44 +0,0 @@ -# -# 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. -# -IMG=action-golang-v1.15 - -build: - ../gradlew distDocker - -localbuild: - GOOS=linux GOARCH=amd64 go build -o proxy -a -ldflags '-extldflags "-static"' ../main/proxy.go - docker build -t $(IMG) . - docker tag $(IMG) whisk/$(IMG) - -push: build - docker tag $(IMG) actionloop/$(IMG) - docker push actionloop/$(IMG):nightly - -clean: - docker rmi -f whisk/$(IMG) actionloop/$(IMG) - -debug: build - docker run -p 8080:8080 \ - --name go-action --rm -ti --entrypoint=/bin/bash \ - -e OW_COMPILER=/mnt/bin/compile \ - -v $(PWD):/mnt whisk/$(IMG) - -enter: - docker exec -ti go-action bash - - -.PHONY: build push clean debug enter diff --git a/golang1.15/bin/compile b/golang1.15/bin/compile deleted file mode 100755 index 9b1217f..0000000 --- a/golang1.15/bin/compile +++ /dev/null @@ -1,138 +0,0 @@ -#!/usr/bin/python -u -"""Golang Action Compiler -# -# 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. -# -""" -from __future__ import print_function -import os, os.path, sys, re, shutil, subprocess, traceback, codecs -from os.path import dirname, exists -from time import sleep - -# write a file creating intermediate directories -def write_file(file, body, executable=False): - try: os.makedirs(dirname(file), mode=0o755) - except: pass - with open(file, mode="wb") as f: - f.write(body) - if executable: - os.chmod(file, 0o755) - -# copy a file eventually replacing a substring -def copy_replace(src, dst, match=None, replacement=""): - with open(src, 'rb') as s: - body = s.read() - if match: - body = body.replace(match, replacement) - write_file(dst, body) - - -def sources(launcher, source_dir, main): - func = main.capitalize() - has_main = None - - # copy the exec to exec.go - # also check if it has a main in it - src = "%s/exec" % source_dir - dst = "%s/exec__.go" % source_dir - if os.path.isfile(src): - with codecs.open(src, 'r', 'utf-8') as s: - with codecs.open(dst, 'w', 'utf-8') as d: - body = s.read() - has_main = re.match(r".*package\s+main\W.*func\s+main\s*\(\s*\)", body, flags=re.DOTALL) - d.write(body) - - # copy the launcher fixing the main - if not has_main: - dst = "%s/main__.go" % source_dir - if os.path.isdir("%s/main" % source_dir): - dst = "%s/main/main__.go" % source_dir - with codecs.open(dst, 'w', 'utf-8') as d: - with codecs.open(launcher, 'r', 'utf-8') as e: - code = e.read() - code = code.replace("Main", func) - d.write(code) - -def build(source_dir, target_dir): - # compile... - source_dir = os.path.abspath(source_dir) - parent = dirname(source_dir) - target = os.path.abspath("%s/exec" % target_dir) - if os.environ.get("__OW_EXECUTION_ENV"): - write_file("%s.env" % target, os.environ["__OW_EXECUTION_ENV"]) - - env = { - "GOROOT": "/usr/local/go", - "GOPATH": "/home/go", - "PATH": os.environ["PATH"], - "GOCACHE": "/tmp", - "GO111MODULE": "on" - } - - gomod = "%s/go.mod" % source_dir - with open(os.devnull, "w") as dn: - if exists(gomod): - ret = subprocess.call(["go", "mod", "download"], cwd=source_dir, env=env, stderr=dn, stdout=dn) - if ret != 0: - print("cannot download modules") - return - else: - ret = subprocess.call(["go", "mod", "init", "exec"], cwd=source_dir, env=env, stdout=dn, stderr=dn) - if ret != 0: - print("cannot init modules") - return - - ldflags = "-s -w" - gobuild = ["go", "build", "-o", target, "-ldflags", ldflags] - if os.environ.get("__OW_EXECUTION_ENV"): - ldflags += " -X main.OwExecutionEnv=%s" % os.environ["__OW_EXECUTION_ENV"] - ret = subprocess.call(gobuild, cwd=source_dir, env=env) - if ret != 0: - print("failed", " ".join(gobuild), "\nin", source_dir, "\nenv", env) - -def debug(source_dir, target_dir, port): - source_dir = os.path.abspath(source_dir) - target = os.path.abspath("%s/exec" % target_dir) - if os.environ.get("__OW_EXECUTION_ENV"): - write_file("%s/exec.env" % source_dir, os.environ["__OW_EXECUTION_ENV"]) - shutil.rmtree(target_dir) - shutil.move(source_dir, target_dir) - write_file(target, """#!/bin/bash -cd "$(dirname $0)" -export GOCACHE=/tmp -export PATH=%s -exec script -q -c '/go/bin/dlv debug --headless --listen=127.0.0.1:%s --continue --accept-multiclient --log-dest /tmp/delve.log' -""" % (os.environ["PATH"], port) , True) - -def main(argv): - if len(argv) < 4: - print("usage: <main-file> <source-dir> <target-dir>") - sys.exit(1) - - main = argv[1] - source_dir = argv[2] - target_dir = argv[3] - launcher = dirname(dirname(argv[0]))+"/lib/launcher.go" - sources(launcher, source_dir, main) - - # if the debug port is present and not empty build with debug - if os.environ.get("__OW_DEBUG_PORT"): - debug(source_dir, target_dir, os.environ["__OW_DEBUG_PORT"]) - else: - build(source_dir, target_dir) - -if __name__ == '__main__': - main(sys.argv) diff --git a/golang1.15/build.gradle b/golang1.15/build.gradle deleted file mode 100644 index 67da25b..0000000 --- a/golang1.15/build.gradle +++ /dev/null @@ -1,38 +0,0 @@ -/* - * 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 = 'action-golang-v1.15' -apply from: '../gradle/docker.gradle' - -distDocker.dependsOn 'staticBuildProxy' -distDocker.finalizedBy('cleanup') - -task staticBuildProxy(type: Exec) { - environment CGO_ENABLED: "0" - environment GOOS: "linux" - environment GOARCH: "amd64" - environment GO111MODULE: "on" - - commandLine 'go', 'build', - '-o', 'proxy', '-a', - '-ldflags', '-extldflags "-static"', - '../main/proxy.go' -} - -task cleanup(type: Delete) { - delete 'proxy' -} diff --git a/golang1.15/lib/launcher.go b/golang1.15/lib/launcher.go deleted file mode 100644 index 3f95c15..0000000 --- a/golang1.15/lib/launcher.go +++ /dev/null @@ -1,122 +0,0 @@ -/* - * 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. - */ - -package main - -import ( - "bufio" - "bytes" - "encoding/json" - "fmt" - "io" - "log" - "os" - "strings" -) - -// OwExecutionEnv is the execution environment set at compile time -var OwExecutionEnv = "" - -func main() { - // check if the execution environment is correct - if OwExecutionEnv != "" && OwExecutionEnv != os.Getenv("__OW_EXECUTION_ENV") { - fmt.Println("Execution Environment Mismatch") - fmt.Println("Expected: ", OwExecutionEnv) - fmt.Println("Actual: ", os.Getenv("__OW_EXECUTION_ENV")) - os.Exit(1) - } - - // debugging - var debug = os.Getenv("OW_DEBUG") != "" - if debug { - f, err := os.OpenFile("/tmp/action.log", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666) - if err == nil { - log.SetOutput(f) - } - log.Printf("Environment: %v", os.Environ()) - } - - // assign the main function - type Action func(event map[string]interface{}) map[string]interface{} - var action Action - action = Main - - // input - out := os.NewFile(3, "pipe") - defer out.Close() - reader := bufio.NewReader(os.Stdin) - - // acknowledgement of started action - fmt.Fprintf(out, `{ "ok": true}%s`, "\n") - if debug { - log.Println("action started") - } - - // read-eval-print loop - for { - // read one line - inbuf, err := reader.ReadBytes('\n') - if err != nil { - if err != io.EOF { - log.Println(err) - } - break - } - if debug { - log.Printf(">>>'%s'>>>", inbuf) - } - // parse one line - var input map[string]interface{} - err = json.Unmarshal(inbuf, &input) - if err != nil { - log.Println(err.Error()) - fmt.Fprintf(out, "{ error: %q}\n", err.Error()) - continue - } - if debug { - log.Printf("%v\n", input) - } - // set environment variables - for k, v := range input { - if k == "value" { - continue - } - if s, ok := v.(string); ok { - os.Setenv("__OW_"+strings.ToUpper(k), s) - } - } - // get payload if not empty - var payload map[string]interface{} - if value, ok := input["value"].(map[string]interface{}); ok { - payload = value - } - // process the request - result := action(payload) - // encode the answer - output, err := json.Marshal(&result) - if err != nil { - log.Println(err.Error()) - fmt.Fprintf(out, "{ error: %q}\n", err.Error()) - continue - } - output = bytes.Replace(output, []byte("\n"), []byte(""), -1) - if debug { - log.Printf("<<<'%s'<<<", output) - } - fmt.Fprintf(out, "%s\n", output) - } -} diff --git a/settings.gradle b/settings.gradle index 4dfbe80..810aef6 100644 --- a/settings.gradle +++ b/settings.gradle @@ -18,8 +18,6 @@ include 'tests' include 'actionloop' -include 'golang1.13' -include 'golang1.15' include 'golang1.16' include 'golang1.17' include 'golang1.18' diff --git a/tests/src/test/scala/runtime/actionContainers/ActionLoopBasicGo13Tests.scala b/tests/src/test/scala/runtime/actionContainers/ActionLoopBasicGo13Tests.scala deleted file mode 100644 index 19d461f..0000000 --- a/tests/src/test/scala/runtime/actionContainers/ActionLoopBasicGo13Tests.scala +++ /dev/null @@ -1,31 +0,0 @@ -/* - * 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. - */ -package runtime.actionContainers - -import common.WskActorSystem -import org.junit.runner.RunWith -import org.scalatest.junit.JUnitRunner - -@RunWith(classOf[JUnitRunner]) -class ActionLoopBasicGo13Tests - extends ActionLoopBasicGoTests - with WskActorSystem { - - override lazy val goCompiler = "action-golang-v1.13" - override lazy val image = goCompiler - override lazy val requireAck = true -} diff --git a/tests/src/test/scala/runtime/actionContainers/ActionLoopBasicGo15Tests.scala b/tests/src/test/scala/runtime/actionContainers/ActionLoopBasicGo15Tests.scala deleted file mode 100644 index 738c76f..0000000 --- a/tests/src/test/scala/runtime/actionContainers/ActionLoopBasicGo15Tests.scala +++ /dev/null @@ -1,31 +0,0 @@ -/* - * 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. - */ -package runtime.actionContainers - -import common.WskActorSystem -import org.junit.runner.RunWith -import org.scalatest.junit.JUnitRunner - -@RunWith(classOf[JUnitRunner]) -class ActionLoopBasicGo15Tests - extends ActionLoopBasicGoTests - with WskActorSystem { - - override lazy val goCompiler = "action-golang-v1.15" - override lazy val image = goCompiler - override lazy val requireAck = true -} diff --git a/tests/src/test/scala/runtime/actionContainers/ActionLoopGo13ContainerTests.scala b/tests/src/test/scala/runtime/actionContainers/ActionLoopGo13ContainerTests.scala deleted file mode 100644 index ec4aae5..0000000 --- a/tests/src/test/scala/runtime/actionContainers/ActionLoopGo13ContainerTests.scala +++ /dev/null @@ -1,31 +0,0 @@ -/* - * 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. - */ - -package runtime.actionContainers - -import common.WskActorSystem -import org.junit.runner.RunWith -import org.scalatest.junit.JUnitRunner -@RunWith(classOf[JUnitRunner]) -class ActionLoopGo13ContainerTests - extends ActionLoopGoContainerTests - with WskActorSystem { - - override lazy val goCompiler = "action-golang-v1.13" - override lazy val image = goCompiler - -} diff --git a/tests/src/test/scala/runtime/actionContainers/ActionLoopGo15ContainerTests.scala b/tests/src/test/scala/runtime/actionContainers/ActionLoopGo15ContainerTests.scala deleted file mode 100644 index b85ca33..0000000 --- a/tests/src/test/scala/runtime/actionContainers/ActionLoopGo15ContainerTests.scala +++ /dev/null @@ -1,31 +0,0 @@ -/* - * 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. - */ - -package runtime.actionContainers - -import common.WskActorSystem -import org.junit.runner.RunWith -import org.scalatest.junit.JUnitRunner -@RunWith(classOf[JUnitRunner]) -class ActionLoopGo15ContainerTests - extends ActionLoopGoContainerTests - with WskActorSystem { - - override lazy val goCompiler = "action-golang-v1.15" - override lazy val image = goCompiler - -}