TL;DR
如何使用AWS提供的映像(Go 1.12)在代码构建中缓存模块?
背景
我试图使用AWS的go映像(1.12)在代码构建中缓存go模块。
试图缓存/go/pkg/mod
在深入挖掘之后,我发现该图像中没有/go/pkg文件夹。因此,当我尝试缓存/go/pkg时,它会抛出一个错误。
安装/go/pkg/mod:符号链接/码构建/本地-缓存/自定义/go/pkg/mod /go/pkg/mod:没有这样的文件或目录
即使在我运行go mod download之后(这将创建/go/pkg/mod,它也不会缓存文件夹,因为代码构建不能更早地挂载它)。
这是我的codebuild.yml
version: 0.2
phases:
install:
runtime-versions:
golang: 1.12
nodejs: 10
commands:
- npm install
build:
commands:
- go build -ldflags="-s -w" -o api/bin/main api/main.go
cache:
paths:
- /go/src/**/*
- /go/pkg/mod/**/*试图缓存./供应商
我还尝试了缓存./供应商文件夹,它不会在代码构建中抛出任何错误。但是,我认为它没有缓存任何东西,因为构建时间并没有减少。它还说它忽略了符号链接。
警告:忽略/codebuild/output/src074479210/src/github.com/kkesley/myrepo/vendor go:查找github.com/aws/aws-lambda-go v1.11.1 go:查找github.com/ stretchr/testv1.2.1 go:查找github.com/pmezard/go-difflib v1.0.0 go:查找github.com/davecgh/go-spew v1.1.0 go:查找gopkg.in/urfave/cli.v1 v1.20.0 go:下载github.com/pmezard/go-spew v1.1.0 goaws/aws-lambda-go v1.11.1 go:提取github.com/aws/aws go v1.11.1
这是我这个版本的codebuild.yml:
version: 0.2
phases:
install:
runtime-versions:
golang: 1.12
nodejs: 10
commands:
- npm install
- go mod vendor
build:
commands:
- go build -mod vendor -ldflags="-s -w" -o api/bin/main api/main.go
cache:
paths:
- /go/src/**/*
- vendor/**/*问题
如何在不使用自定义停靠映像的情况下在代码构建中缓存go模块?有可能吗?
发布于 2020-05-03 10:47:42
要让它使用默认的CodeBuild Ubuntu映像(我使用的是v4)

/go/pkg/**.*cache:
paths:
- '/go/pkg/**/*'go mod download之前包括一个步骤。在我执行此缓存之前,似乎无法工作,因此这似乎是关键一步。这是我的完整buildspec.yml供参考
version: 0.2
phases:
install:
runtime-versions:
golang: latest
commands:
- "git config --global credential.helper '!aws codecommit credential-helper $@'"
- "git config --global credential.UseHttpPath true"
build:
commands:
- 'go mod edit -dropreplace git-codecommit.ap-southeast-2.amazonaws.com/v1/repos/xyz'
- 'go mod download'
# Use latest from develop for the build (test env only)
- 'go get git-codecommit.ap-southeast-2.amazonaws.com/v1/repos/xyz@develop'
- 'rm -rf "dist"'
- 'cp -r "eb-template" "dist"'
- 'env GOOS=linux GOARCH=amd64 go build -o "dist/bin/server"'
- 'go mod edit -replace git-codecommit.ap-southeast-2.amazonaws.com/v1/repos/xyz=../xyz'
- 'echo -n ${CODEBUILD_RESOLVED_SOURCE_VERSION} > dist/commithash'
artifacts:
base-directory: dist
files:
- '**/*'
cache:
paths:
- '/go/pkg/**/*'https://stackoverflow.com/questions/57050660
复制相似问题