build: docker-build as the first-class citizen

This commit is contained in:
Yousong Zhou
2019-06-29 04:56:25 +00:00
parent 2b877aa155
commit a5d13a3c81
2 changed files with 47 additions and 29 deletions
+47 -10
View File
@@ -133,13 +133,50 @@ mod:
%:
@:
# Use docker build binaries
# Args:
# WHAT: Directory names to build
#
#
# Example:
# make docker_build
# make docker_build WHAT='cmd/climc cmd/region'
docker_build:
$(ROOT_DIR)/build/docker_build.sh $(WHAT)
DOCKER_BUILD_IMAGE_VERSION?=latest
define dockerBuildCmd
set -o errexit
set -o pipefail
cd /home/build/onecloud
export GOFLAGS=-mod=vendor
make $(1)
endef
docker-build: export dockerBuildCmd:=$(call dockerBuildCmd,$(F))
docker-build:
echo "$$dockerBuildCmd"
docker rm --force onecloud-ci-build &>/dev/null || true
docker run \
--name onecloud-ci-build \
--rm \
--volume $(CURDIR):/home/build/onecloud \
yunionio/onecloud-ci:$(DOCKER_BUILD_IMAGE_VERSION) \
/bin/bash -c "$$dockerBuildCmd"
chown -R $$(id -u):$$(id -g) _output
ls -lh _output/bin
# NOTE we need a way to stop and remove the container started by docker-build.
# No --tty, --stop-signal won't work
docker-build-stop:
docker stop --time 0 onecloud-ci-build || true
.PHONY: docker-build
.PHONY: docker-build-stop
define helpText
Build with docker
make docker-build F='-j4'
make docker-build F='-j4 cmd/region cmd/climc'
make docker-build-stop
Tidy up go modules and vendor directory
make mod
endef
help: export helpText:=$(helpText)
help:
@echo "$$helpText"
-19
View File
@@ -1,19 +0,0 @@
#!/bin/bash
set -o errexit
set -o nounset
set -o pipefail
SRC_ROOT=$(realpath $(dirname "${BASH_SOURCE[0]}")/..)
BIN_DIR=$SRC_ROOT/_output/bin
WORK_DIR="/go/src/yunion.io/x/onecloud"
CMDS=$@
docker run --rm -it \
-w $WORK_DIR \
-v $SRC_ROOT:$WORK_DIR \
d3lx/golang:yunion \
make $CMDS
echo "Build finish"
ls -alh $BIN_DIR