我正在迁移到CircleCI 2.0,在成功构建后,当执行测试时,它们会随机失败,并显示以下错误消息:
/usr/local/go/pkg/tool/linux_amd64/link: signal: killed
/usr/local/go/pkg/tool/linux_amd64/link: flushing $WORK/b462/payment_step_svc.test: write $WORK/b462/svc.test: cannot allocate memory
我使用了以下配置。
jobs:
build:
docker:
- image: circleci/golang:latest
- image: rabbitmq:3.5.4
- image: redis
working_directory: /go/src/github.com/soniabhishek/taskrunner
environment:
GOOS: linux
GOARCH: amd64
GOPATH: /go
steps:
- checkout
- run:
name: Get dependencies
command: go get -t -d -v ./...
- run:
name: Build all
command: go build ./...
- run:
name: Test all
command: go test -v ./...
我尝试了很多go语言版本,除了最新版本(1.10.3)以外。
虽然我找到了解决方法,但我不确定为什么会出现这个问题, 只要使用CGO_ENABLED=0,我的所有测试都可以运行。
想知道为什么会出现这个问题,以及永久的解决方案。
dmesg
无法在Docker镜像上工作。除非你找到了一种使其工作的方法?... - Sardathrion - against SE abusedmesg
命令。如果容器中的某个进程超出了内存限制,那么这个进程会被主机或Docker“kill”掉,我的理解是正确的吗? - halfersleep
语句有时会使构建通过。我可以在一个比“正常”容量小得多的玩具 VM 上轻松构建代码(使用相同的命令),所以认为添加sleep
会有所帮助。然而,这会创建一个可怕的 Heisenbug,不值得这样做。我现在正在支付 CircleCI 并转移到“xlarge”机器,问题已经消失了。 - Sardathrion - against SE abuse