mirror of
https://github.com/zalando/postgres-operator.git
synced 2026-09-30 10:41:44 +02:00
Linux race-enabled builds inside Docker. (#123)
Cross-platform go builds with linux as a target platform and race enabled require to link against the linux so and have the cross platform compiler installed, which is a pain. To avoid this we build everything in Linux-native environment in a container. Note that running such builds requires replacing the operator Docker base image from Alpine to something with a real glibc (i.e. ubuntu), since the target binary needs a dynamic linker. Use -a flag in order to rebuild all packages, since we might have built them on a wrong platform.
This commit is contained in:
committed by
Murat Kabilov
parent
18700b9ef7
commit
24638de665
@@ -1,12 +1,13 @@
|
||||
.PHONY: clean local linux macos docker push scm-source.json
|
||||
|
||||
BINARY ?= postgres-operator
|
||||
BUILD_FLAGS ?= -v -i
|
||||
ifeq ($(RACE),1)
|
||||
GOFLAGS=-race
|
||||
BUILD_FLAGS += -race -a
|
||||
CGO_ENABLED=1
|
||||
endif
|
||||
|
||||
BINARY ?= postgres-operator
|
||||
BUILD_FLAGS ?= -v
|
||||
LOCAL_BUILD_FLAGS ?= $(BUILD_FLAGS) -i
|
||||
LOCAL_BUILD_FLAGS ?= $(BUILD_FLAGS)
|
||||
LDFLAGS ?= -X=main.version=$(VERSION)
|
||||
DOCKERFILE = docker/Dockerfile
|
||||
IMAGE ?= pierone.example.com/acid/$(BINARY)
|
||||
@@ -33,13 +34,13 @@ linux: build/linux/${BINARY}
|
||||
macos: build/macos/${BINARY}
|
||||
|
||||
build/${BINARY}: ${SOURCES}
|
||||
go build -o $@ $(LOCAL_BUILD_FLAGS) -ldflags "$(LDFLAGS)" $^
|
||||
CGO_ENABLED=${CGO_ENABLED} go build -o $@ $(LOCAL_BUILD_FLAGS) -ldflags "$(LDFLAGS)" $^
|
||||
|
||||
build/linux/${BINARY}: ${SOURCES}
|
||||
GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o $@ ${BUILD_FLAGS} -ldflags "$(LDFLAGS)" $^
|
||||
GOOS=linux GOARCH=amd64 CGO_ENABLED=${CGO_ENABLED} go build -o $@ ${BUILD_FLAGS} -ldflags "$(LDFLAGS)" $^
|
||||
|
||||
build/macos/${BINARY}: ${SOURCES}
|
||||
GOOS=darwin GOARCH=amd64 go build -o $@ ${BUILD_FLAGS} -ldflags "$(LDFLAGS)" $^
|
||||
GOOS=darwin GOARCH=amd64 CGO_ENABLED=${CGO_ENABLED} go build -o $@ ${BUILD_FLAGS} -ldflags "$(LDFLAGS)" $^
|
||||
|
||||
docker-context: scm-source.json linux
|
||||
mkdir -p docker/build/
|
||||
@@ -48,6 +49,9 @@ docker-context: scm-source.json linux
|
||||
docker: ${DOCKERFILE} docker-context
|
||||
cd docker && docker build --rm -t "$(IMAGE):$(TAG)" .
|
||||
|
||||
indocker-race:
|
||||
docker run --rm -v "${GOPATH}":"${GOPATH}" -e GOPATH="${GOPATH}" -e RACE=1 -w ${PWD} golang:1.8.1 bash -c "make linux"
|
||||
|
||||
push:
|
||||
docker push "$(IMAGE):$(TAG)"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user