Skip to content

Commit

Permalink
Merge pull request #14 from fogfish/upgrade-version
Browse files Browse the repository at this point in the history
Upgrade mods + arm64 support
  • Loading branch information
fogfish committed Mar 7, 2023
2 parents e271d7e + 1152690 commit aafdd61
Show file tree
Hide file tree
Showing 9 changed files with 234 additions and 105 deletions.
3 changes: 1 addition & 2 deletions .github/workflows/check-code.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,9 @@ jobs:

- uses: actions/setup-go@v3
with:
go-version: 1.18
go-version: "1.20"
cache: true

- uses: dominikh/staticcheck-action@v1.2.0
with:
version: "2022.1"
install-go: false
2 changes: 1 addition & 1 deletion .github/workflows/check-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ jobs:

- uses: actions/setup-go@v3
with:
go-version: 1.18
go-version: "1.20"
cache: true

- name: go build
Expand Down
12 changes: 12 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,18 @@ Please see the RESTful API templates, clone them to draft a new microservice in
* [blueprint-serverless-golang](https://github.com/fogfish/blueprint-serverless-golang)


### Example ARM64 functions

```go
myfun := scud.NewFunctionGo(scope, jsii.String("test"),
&scud.FunctionGoProps{
SourceCodePackage: "github.com/mygithub/myservice",
SourceCodeLambda: "aws/lambda/example",
GoEnv: map[string]string{"GOARCH": "arm64"},
},
)
```

### Example RESTful API with Domain Name

Supply custom domain name and ARN of Certificate
Expand Down
20 changes: 13 additions & 7 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,21 @@ module github.com/fogfish/scud
go 1.18

require (
github.com/aws/aws-cdk-go/awscdk/v2 v2.51.1
github.com/aws/aws-lambda-go v1.35.0
github.com/aws/constructs-go/constructs/v10 v10.1.165
github.com/aws/jsii-runtime-go v1.71.0
github.com/aws/aws-cdk-go/awscdk/v2 v2.67.0
github.com/aws/aws-lambda-go v1.38.0
github.com/aws/constructs-go/constructs/v10 v10.1.264
github.com/aws/jsii-runtime-go v1.76.0
)

require (
github.com/Masterminds/semver/v3 v3.1.1 // indirect
github.com/cdklabs/awscdk-asset-awscli-go/awscliv1/v2 v2.2.13 // indirect
github.com/Masterminds/semver/v3 v3.2.0 // indirect
github.com/cdklabs/awscdk-asset-awscli-go/awscliv1/v2 v2.2.85 // indirect
github.com/cdklabs/awscdk-asset-kubectl-go/kubectlv20/v2 v2.1.1 // indirect
github.com/cdklabs/awscdk-asset-node-proxy-agent-go/nodeproxyagentv5/v2 v2.0.19 // indirect
github.com/cdklabs/awscdk-asset-node-proxy-agent-go/nodeproxyagentv5/v2 v2.0.71 // indirect
github.com/mattn/go-isatty v0.0.17 // indirect
github.com/yuin/goldmark v1.4.13 // indirect
golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 // indirect
golang.org/x/mod v0.8.0 // indirect
golang.org/x/sys v0.5.0 // indirect
golang.org/x/tools v0.6.0 // indirect
)
76 changes: 40 additions & 36 deletions go.sum
Original file line number Diff line number Diff line change
@@ -1,41 +1,45 @@
github.com/Masterminds/semver/v3 v3.1.1 h1:hLg3sBzpNErnxhQtUy/mmLR2I9foDujNK030IGemrRc=
github.com/Masterminds/semver/v3 v3.1.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs=
github.com/aws/aws-cdk-go/awscdk/v2 v2.29.1 h1:OVlD924ncu8lMWt8jQsTktzcrwFTjleqeaUdg8Gp9M0=
github.com/aws/aws-cdk-go/awscdk/v2 v2.29.1/go.mod h1:EY8h/zcTgdfcg4YCjraAvbKnT8YWplL8mLQutTnIj+M=
github.com/aws/aws-cdk-go/awscdk/v2 v2.51.1 h1:aDC5ntye0/OyPvODHHEDbYkA0PCnRaNXbDXo1/3a9/E=
github.com/aws/aws-cdk-go/awscdk/v2 v2.51.1/go.mod h1:oNPG1TfQIQgTGEBHqoi9rNZzzSoFfC9kYk5V0h5d3/M=
github.com/aws/aws-lambda-go v1.32.1 h1:ls0FU8Mt7ayJszb945zFkUfzxhkQTli8mpJstVcDtCY=
github.com/aws/aws-lambda-go v1.32.1/go.mod h1:jwFe2KmMsHmffA1X2R09hH6lFzJQxzI8qK17ewzbQMM=
github.com/aws/aws-lambda-go v1.35.0 h1:iocVDy5Cw5SCRrKOPHwarkdFwwy48OkfmHoE6SJ3ATg=
github.com/aws/aws-lambda-go v1.35.0/go.mod h1:jwFe2KmMsHmffA1X2R09hH6lFzJQxzI8qK17ewzbQMM=
github.com/aws/constructs-go/constructs/v10 v10.1.33/go.mod h1:qbIG6z4lreP1aYvcZjAGx6fGTSAZtDdeo5p8XPWbMb0=
github.com/aws/constructs-go/constructs/v10 v10.1.43 h1:3cUr7zHzund4vwCLsnwludODa+SCF9L+QXzke+ltYzs=
github.com/aws/constructs-go/constructs/v10 v10.1.43/go.mod h1:bzi/H67zKyeYqPtYwukrmY4fqIvNOE9Ts9QsnXaahiM=
github.com/aws/constructs-go/constructs/v10 v10.1.165 h1:AnTsYHg1ZrhqED+NudpsmGKFI4saZhQNhR7knoDAtwc=
github.com/aws/constructs-go/constructs/v10 v10.1.165/go.mod h1:UXHdJzEYgQPF75bdwT+sWUqMKhXQgW/65MIxFI/ulmE=
github.com/aws/jsii-runtime-go v1.60.0/go.mod h1:OPeobFzUctDjq8EXbRZbIphpzQg3lzMs8KH09xuHyk0=
github.com/aws/jsii-runtime-go v1.60.1/go.mod h1:OPeobFzUctDjq8EXbRZbIphpzQg3lzMs8KH09xuHyk0=
github.com/aws/jsii-runtime-go v1.61.0 h1:mK3dLs+KYSsFL8tx3/WbZ3Mi9xT+M4l8C41J7YBr9/4=
github.com/aws/jsii-runtime-go v1.61.0/go.mod h1:YUEgRT35HJwwzAHWLnjekEXHfyxNaEKESsU8XUlVeCs=
github.com/aws/jsii-runtime-go v1.71.0 h1:WkTwbKy0Id2UHDUYOB2VDDeXuvShAIW4dUpzBcy7+t8=
github.com/aws/jsii-runtime-go v1.71.0/go.mod h1:Rwfj+tA+2/1/QfJTq1uXHm4UYaeTRc+zP7lZuEfg8cE=
github.com/cdklabs/awscdk-asset-awscli-go/awscliv1/v2 v2.2.13 h1:9h55XbHwDbJtDRDpfdql/H9SvAmuPq00mybH4N7M6wI=
github.com/cdklabs/awscdk-asset-awscli-go/awscliv1/v2 v2.2.13/go.mod h1:im+SNRt9JTLJtF1ge5zWoC/wK7BVu+Wqj7jq3v49m0c=
github.com/Masterminds/semver/v3 v3.2.0 h1:3MEsd0SM6jqZojhjLWWeBY+Kcjy9i6MQAeY7YgDP83g=
github.com/Masterminds/semver/v3 v3.2.0/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ=
github.com/aws/aws-cdk-go/awscdk/v2 v2.67.0 h1:fKxY8oYygqp5rScwd6SaPLVM85uK3WrFDOcknn/zo3Q=
github.com/aws/aws-cdk-go/awscdk/v2 v2.67.0/go.mod h1:VUgy7k4jFLyep9Mm4f1aKLpji2w5nQs7mxDrw49SN40=
github.com/aws/aws-lambda-go v1.38.0 h1:4CUdxGzvuQp0o8Zh7KtupB9XvCiiY8yKqJtzco+gsDw=
github.com/aws/aws-lambda-go v1.38.0/go.mod h1:jwFe2KmMsHmffA1X2R09hH6lFzJQxzI8qK17ewzbQMM=
github.com/aws/constructs-go/constructs/v10 v10.1.264 h1:9rSZpmOV65fSAUtSiLLi0T9gvLIJApm2p/JgNiryVd4=
github.com/aws/constructs-go/constructs/v10 v10.1.264/go.mod h1:H7d+FYvledkYjLK+8cUqu+gMD5sA6VoMMbvVzLNzu98=
github.com/aws/jsii-runtime-go v1.76.0 h1:LGkSEhyVgZTAN2axMdGNwpVk+DIJ8jg7iUn9gy7h74k=
github.com/aws/jsii-runtime-go v1.76.0/go.mod h1:1YWJ9VJ3bwe03Nsq2rsGFA0uQIiJZo0FEKfxK6j7cGg=
github.com/cdklabs/awscdk-asset-awscli-go/awscliv1/v2 v2.2.85 h1:jBShDV9n1+A4UBPL/C6j8i5r5/CTdu6sfDY/AC3kn2g=
github.com/cdklabs/awscdk-asset-awscli-go/awscliv1/v2 v2.2.85/go.mod h1:nvX6KMbARCyDZKawXh7LoWP4GYtKNQs2gzl9OPOKCq8=
github.com/cdklabs/awscdk-asset-kubectl-go/kubectlv20/v2 v2.1.1 h1:l5N27aCCjAB5cgW5pI4/ujnasPL8hUcJ9KBxrKk6UiQ=
github.com/cdklabs/awscdk-asset-kubectl-go/kubectlv20/v2 v2.1.1/go.mod h1:CvFHBo0qcg8LUkJqIxQtP1rD/sNGv9bX3L2vHT2FUAo=
github.com/cdklabs/awscdk-asset-node-proxy-agent-go/nodeproxyagentv5/v2 v2.0.19 h1:lH/wlvor6U4auw+cNm+BlnmchXAipun7yLCef9564mc=
github.com/cdklabs/awscdk-asset-node-proxy-agent-go/nodeproxyagentv5/v2 v2.0.19/go.mod h1:fySkTp26Lq45/0mhkXEetgR+xxbDEtsJtbGxOozvjjU=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/cdklabs/awscdk-asset-node-proxy-agent-go/nodeproxyagentv5/v2 v2.0.71 h1:w+FklmvxhlhA+lUbruXHNdLXqBhPBXZ0ZoFso++H1/8=
github.com/cdklabs/awscdk-asset-node-proxy-agent-go/nodeproxyagentv5/v2 v2.0.71/go.mod h1:ZB4c64jFJQ+AlbT/4PyAXD0tBKtHijCYPuTn7x7NKro=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng=
github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.7.2 h1:4jaiDzPyXQvSd7D0EjG45355tLlV3VOECpq10pLC+8s=
github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk=
github.com/yuin/goldmark v1.4.13 h1:fVcFKWvrslecOb/tg+Cc05dkeYx540o0FuFt3nUVDoE=
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug=
golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
golang.org/x/mod v0.8.0 h1:LUYupSeNrTNCGzR/hVBk2NHZO4hXcVaW1k4Qx7rjPx8=
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU=
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.6.0 h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM=
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
105 changes: 105 additions & 0 deletions gocc.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
package scud

import (
"log"
"os"
"os/exec"
"path/filepath"
"time"

"github.com/aws/aws-cdk-go/awscdk/v2"
"github.com/aws/jsii-runtime-go"
)

type GoCompiler struct {
sourceCode string
sourceCodePackage string
sourceCodeLambda string
env map[string]string
}

func NewGoCompiler(
sourceCodePackage string,
sourceCodeLambda string,
env map[string]string,
) *GoCompiler {
if env == nil {
env = map[string]string{}
}

return &GoCompiler{
sourceCode: filepath.Join(sourceCodePackage, sourceCodeLambda),
sourceCodePackage: sourceCodePackage,
sourceCodeLambda: sourceCodeLambda,
env: env,
}
}

func (g *GoCompiler) SourceCodePackage() string { return g.sourceCodePackage }
func (g *GoCompiler) SourceCodeLambda() string { return g.sourceCodeLambda }

func (g *GoCompiler) TryBundle(outputDir *string, options *awscdk.BundlingOptions) *bool {
t := time.Now()

cmd := exec.Command("go", "build", "-o", filepath.Join(*outputDir, "main"), filepath.Join(g.sourceCode))
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
cmd.Env = g.cmdEnv()

if err := cmd.Run(); err != nil {
log.Printf("%s", err)
return jsii.Bool(false)
}

d := time.Since(t)
log.Printf("==> go build %s (%v)\n", g.sourceCode, d)
return jsii.Bool(true)
}

func (g *GoCompiler) goCache() string {
gha := os.Getenv("GITHUB_ACTION")
gocache := os.Getenv("GOCACHE")

if gha != "" && gocache != "" {
return gocache
}

return "/tmp/go.amd64"
}

func (g *GoCompiler) cmdEnv() []string {
for _, envvar := range []string{
"PATH",
"GOPATH",
"GOROOT",
"GOMODCACHE",
} {
if _, exists := g.env[envvar]; !exists {
g.env[envvar] = os.Getenv(envvar)
}
}

for envvar, defval := range map[string]string{
"GOOS": "linux",
"GOARCH": "amd64",
"CGO_ENABLED": "0",
} {
if _, exists := g.env[envvar]; !exists {
g.env[envvar] = defval
}
}

for envvar, gen := range map[string]func() string{
"GOCACHE": g.goCache,
} {
if _, exists := g.env[envvar]; !exists {
g.env[envvar] = gen()
}
}

env := make([]string, 0)
for key, val := range g.env {
env = append(env, key+"="+val)
}
return env
}
23 changes: 14 additions & 9 deletions handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,20 +19,15 @@ import (
"github.com/aws/jsii-runtime-go"
)

/*
FunctionGoProps is properties of the function
*/
// FunctionGoProps is properties of the function
type FunctionGoProps struct {
*awslambda.FunctionProps
SourceCodePackage string
SourceCodeLambda string
GoEnv map[string]string
}

/*
NewFunctionGo creates Golang Lambda Function from "inline" code
*/
// NewFunctionGo creates Golang Lambda Function from "inline" code
func NewFunctionGo(scope constructs.Construct, id *string, spec *FunctionGoProps) awslambda.Function {
var props awslambda.FunctionProps
if spec.FunctionProps != nil {
Expand All @@ -52,7 +47,17 @@ func NewFunctionGo(scope constructs.Construct, id *string, spec *FunctionGoProps
*awscdk.Aws_STACK_NAME(), filepath.Base(filepath.Join(spec.SourceCodePackage, spec.SourceCodeLambda))))
}

props.Code = AssetCodeGo(spec.SourceCodePackage, spec.SourceCodeLambda)
if spec.GoEnv != nil {
switch spec.GoEnv["GOARCH"] {
case "amd64":
props.Architecture = awslambda.Architecture_X86_64()
case "arm64":
props.Architecture = awslambda.Architecture_ARM_64()
}
}

gocc := NewGoCompiler(spec.SourceCodePackage, spec.SourceCodeLambda, spec.GoEnv)
props.Code = AssetCodeGo(gocc)
props.Handler = jsii.String("main")
props.Runtime = awslambda.Runtime_GO_1_X()

Expand Down
60 changes: 10 additions & 50 deletions runtime.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ import (
"io/fs"
"log"
"os"
"os/exec"
"path/filepath"
"regexp"
"time"
Expand All @@ -27,19 +26,23 @@ import (
"github.com/aws/jsii-runtime-go"
)

/*
type Compiler interface {
awscdk.ILocalBundling
SourceCodePackage() string
SourceCodeLambda() string
}

AssetCodeGo bundles lambda function from source code
*/
func AssetCodeGo(sourceCodePackage, sourceCodeLambda string) awslambda.Code {
// AssetCodeGo bundles lambda function from source code
func AssetCodeGo(compiler Compiler) awslambda.Code {
hash := hashpkg(compiler.SourceCodePackage(), compiler.SourceCodeLambda())
return awslambda.NewAssetCode(
jsii.String(""),
&awss3assets.AssetOptions{
AssetHashType: awscdk.AssetHashType_CUSTOM,
AssetHash: jsii.String(hashpkg(sourceCodePackage, sourceCodeLambda)),
AssetHash: jsii.String(hash),
Bundling: &awscdk.BundlingOptions{
Image: awscdk.DockerImage_FromRegistry(jsii.String("golang")),
Local: &gocc{filepath.Join(sourceCodePackage, sourceCodeLambda)},
Local: compiler.(awscdk.ILocalBundling),
// Note: it make no sense to build Golang code inside container
},
})
Expand Down Expand Up @@ -109,46 +112,3 @@ func hashfile(hash hash.Hash, file string) error {

return nil
}

type gocc struct {
sourceCode string
}

func (g gocc) TryBundle(outputDir *string, options *awscdk.BundlingOptions) *bool {
t := time.Now()

cmd := exec.Command("go", "build", "-o", filepath.Join(*outputDir, "main"), filepath.Join(g.sourceCode))
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
cmd.Env = make([]string, 0)

cmd.Env = append(cmd.Env,
fmt.Sprintf("PATH=%s", os.Getenv("PATH")),
fmt.Sprintf("GOPATH=%s", os.Getenv("GOPATH")),
fmt.Sprintf("GOROOT=%s", os.Getenv("GOROOT")),
fmt.Sprintf("GOMODCACHE=%s", os.Getenv("GOMODCACHE")),
fmt.Sprintf("GOCACHE=%s", g.goCache()),
fmt.Sprintf("GOOS=%s", "linux"),
fmt.Sprintf("GOARCH=%s", "amd64"),
)

if err := cmd.Run(); err != nil {
log.Printf("%s", err)
return jsii.Bool(false)
}

d := time.Since(t)
log.Printf("==> go build %s (%v)\n", g.sourceCode, d)
return jsii.Bool(true)
}

func (g gocc) goCache() string {
gha := os.Getenv("GITHUB_ACTION")
gocache := os.Getenv("GOCACHE")

if gha != "" && gocache != "" {
return gocache
}

return "/tmp/go.amd64"
}

0 comments on commit aafdd61

Please sign in to comment.