Makefile target to enable parallel jobs
- fixed dependencies order and renamed Makefile target - extracted docker run params into DOCKER_RUN_OPTS - crossbinary-default contains 64bit Linux, Win and Darwin - crossbinary-others contains 32bit Linux, Win, Darwin and 32/64bit *bsd - added dependencies to crossbinary-default and crossbinary-others targets
This commit is contained in:
parent
5535318cda
commit
df6741aeeb
3 changed files with 106 additions and 1 deletions
16
Makefile
16
Makefile
|
@ -21,7 +21,10 @@ TRAEFIK_IMAGE := $(if $(REPONAME),$(REPONAME),"containous/traefik")
|
||||||
INTEGRATION_OPTS := $(if $(MAKE_DOCKER_HOST),-e "DOCKER_HOST=$(MAKE_DOCKER_HOST)", -v "/var/run/docker.sock:/var/run/docker.sock")
|
INTEGRATION_OPTS := $(if $(MAKE_DOCKER_HOST),-e "DOCKER_HOST=$(MAKE_DOCKER_HOST)", -v "/var/run/docker.sock:/var/run/docker.sock")
|
||||||
|
|
||||||
DOCKER_BUILD_ARGS := $(if $(DOCKER_VERSION), "--build-arg=DOCKER_VERSION=$(DOCKER_VERSION)",)
|
DOCKER_BUILD_ARGS := $(if $(DOCKER_VERSION), "--build-arg=DOCKER_VERSION=$(DOCKER_VERSION)",)
|
||||||
DOCKER_RUN_TRAEFIK := docker run $(INTEGRATION_OPTS) -it $(TRAEFIK_ENVS) $(TRAEFIK_MOUNT) "$(TRAEFIK_DEV_IMAGE)"
|
DOCKER_RUN_OPTS := $(TRAEFIK_ENVS) $(TRAEFIK_MOUNT) "$(TRAEFIK_DEV_IMAGE)"
|
||||||
|
DOCKER_RUN_TRAEFIK := docker run $(INTEGRATION_OPTS) -it $(DOCKER_RUN_OPTS)
|
||||||
|
DOCKER_RUN_TRAEFIK_NOTTY := docker run $(INTEGRATION_OPTS) -i $(DOCKER_RUN_OPTS)
|
||||||
|
|
||||||
|
|
||||||
print-%: ; @echo $*=$($*)
|
print-%: ; @echo $*=$($*)
|
||||||
|
|
||||||
|
@ -36,6 +39,17 @@ binary: generate-webui build ## build the linux binary
|
||||||
crossbinary: generate-webui build ## cross build the non-linux binaries
|
crossbinary: generate-webui build ## cross build the non-linux binaries
|
||||||
$(DOCKER_RUN_TRAEFIK) ./script/make.sh generate crossbinary
|
$(DOCKER_RUN_TRAEFIK) ./script/make.sh generate crossbinary
|
||||||
|
|
||||||
|
crossbinary-parallel:
|
||||||
|
$(MAKE) generate-webui
|
||||||
|
$(MAKE) build
|
||||||
|
$(MAKE) crossbinary-default crossbinary-others
|
||||||
|
|
||||||
|
crossbinary-default: generate-webui build
|
||||||
|
$(DOCKER_RUN_TRAEFIK_NOTTY) ./script/make.sh generate crossbinary-default
|
||||||
|
|
||||||
|
crossbinary-others: generate-webui build
|
||||||
|
$(DOCKER_RUN_TRAEFIK_NOTTY) ./script/make.sh generate crossbinary-others
|
||||||
|
|
||||||
test: build ## run the unit and integration tests
|
test: build ## run the unit and integration tests
|
||||||
$(DOCKER_RUN_TRAEFIK) ./script/make.sh generate test-unit binary test-integration
|
$(DOCKER_RUN_TRAEFIK) ./script/make.sh generate test-unit binary test-integration
|
||||||
|
|
||||||
|
|
40
script/crossbinary-default
Executable file
40
script/crossbinary-default
Executable file
|
@ -0,0 +1,40 @@
|
||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
if ! test -e autogen/gen.go; then
|
||||||
|
echo >&2 'error: generate must be run before crossbinary'
|
||||||
|
false
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$VERSION" ]; then
|
||||||
|
VERSION=$(git rev-parse HEAD)
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$CODENAME" ]; then
|
||||||
|
CODENAME=cheddar
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$DATE" ]; then
|
||||||
|
DATE=$(date -u '+%Y-%m-%d_%I:%M:%S%p')
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Build 386 amd64 binaries
|
||||||
|
OS_PLATFORM_ARG=(linux windows darwin)
|
||||||
|
OS_ARCH_ARG=(amd64)
|
||||||
|
for OS in ${OS_PLATFORM_ARG[@]}; do
|
||||||
|
for ARCH in ${OS_ARCH_ARG[@]}; do
|
||||||
|
echo "Building binary for $OS/$ARCH..."
|
||||||
|
GOARCH=$ARCH GOOS=$OS CGO_ENABLED=0 go build -ldflags "-s -w -X github.com/containous/traefik/version.Version=$VERSION -X github.com/containous/traefik/version.Codename=$CODENAME -X github.com/containous/traefik/version.BuildDate=$DATE" -o "dist/traefik_$OS-$ARCH" ./cmd/traefik/
|
||||||
|
done
|
||||||
|
done
|
||||||
|
|
||||||
|
|
||||||
|
# Build arm64 binaries
|
||||||
|
OS_PLATFORM_ARG=(linux)
|
||||||
|
OS_ARCH_ARG=(arm64)
|
||||||
|
for OS in ${OS_PLATFORM_ARG[@]}; do
|
||||||
|
for ARCH in ${OS_ARCH_ARG[@]}; do
|
||||||
|
echo "Building binary for $OS/$ARCH..."
|
||||||
|
GOARCH=$ARCH GOOS=$OS CGO_ENABLED=0 go build -ldflags "-s -w -X github.com/containous/traefik/version.Version=$VERSION -X github.com/containous/traefik/version.Codename=$CODENAME -X github.com/containous/traefik/version.BuildDate=$DATE" -o "dist/traefik_$OS-$ARCH" ./cmd/traefik/
|
||||||
|
done
|
||||||
|
done
|
51
script/crossbinary-others
Executable file
51
script/crossbinary-others
Executable file
|
@ -0,0 +1,51 @@
|
||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
if ! test -e autogen/gen.go; then
|
||||||
|
echo >&2 'error: generate must be run before crossbinary'
|
||||||
|
false
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$VERSION" ]; then
|
||||||
|
VERSION=$(git rev-parse HEAD)
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$CODENAME" ]; then
|
||||||
|
CODENAME=cheddar
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$DATE" ]; then
|
||||||
|
DATE=$(date -u '+%Y-%m-%d_%I:%M:%S%p')
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Build arm binaries
|
||||||
|
OS_PLATFORM_ARG=(linux windows darwin)
|
||||||
|
OS_ARCH_ARG=(386)
|
||||||
|
for OS in ${OS_PLATFORM_ARG[@]}; do
|
||||||
|
for ARCH in ${OS_ARCH_ARG[@]}; do
|
||||||
|
echo "Building binary for $OS/$ARCH..."
|
||||||
|
GOARCH=$ARCH GOOS=$OS CGO_ENABLED=0 go build -ldflags "-s -w -X github.com/containous/traefik/version.Version=$VERSION -X github.com/containous/traefik/version.Codename=$CODENAME -X github.com/containous/traefik/version.BuildDate=$DATE" -o "dist/traefik_$OS-$ARCH" ./cmd/traefik/
|
||||||
|
done
|
||||||
|
done
|
||||||
|
|
||||||
|
# Build Bsd binaries
|
||||||
|
OS_PLATFORM_ARG=(freebsd openbsd)
|
||||||
|
OS_ARCH_ARG=(386 amd64)
|
||||||
|
for OS in ${OS_PLATFORM_ARG[@]}; do
|
||||||
|
for ARCH in ${OS_ARCH_ARG[@]}; do
|
||||||
|
# Get rid of existing binaries
|
||||||
|
rm -f dist/traefik_$OS-$ARCH
|
||||||
|
echo "Building binary for $OS/$ARCH..."
|
||||||
|
GOARCH=$ARCH GOOS=$OS CGO_ENABLED=0 go build -ldflags "-s -w -X github.com/containous/traefik/version.Version=$VERSION -X github.com/containous/traefik/version.Codename=$CODENAME -X github.com/containous/traefik/version.BuildDate=$DATE" -o "dist/traefik_$OS-$ARCH" ./cmd/traefik/
|
||||||
|
done
|
||||||
|
done
|
||||||
|
|
||||||
|
# Build arm binaries
|
||||||
|
OS_PLATFORM_ARG=(linux)
|
||||||
|
OS_ARCH_ARG=(arm)
|
||||||
|
for OS in ${OS_PLATFORM_ARG[@]}; do
|
||||||
|
for ARCH in ${OS_ARCH_ARG[@]}; do
|
||||||
|
echo "Building binary for $OS/$ARCH..."
|
||||||
|
GOARCH=$ARCH GOOS=$OS CGO_ENABLED=0 go build -ldflags "-s -w -X github.com/containous/traefik/version.Version=$VERSION -X github.com/containous/traefik/version.Codename=$CODENAME -X github.com/containous/traefik/version.BuildDate=$DATE" -o "dist/traefik_$OS-$ARCH" ./cmd/traefik/
|
||||||
|
done
|
||||||
|
done
|
Loading…
Reference in a new issue