Commit bc604945 authored by Tomasz Maczukin's avatar Tomasz Maczukin

Merge branch '3755-helper-image-for-windows-container-execution-update-make-file' into 'master'

Split `make docker` for GitLab Runner Helper

See merge request !1188
parents 795520f0 956c880b
Pipeline #49891601 passed with stages
in 34 minutes and 52 seconds
......@@ -70,10 +70,11 @@ helper images:
<<: *docker
stage: prebuild
script:
- make docker
- make helper-build helper-docker
artifacts:
paths:
- out/helper-images/
- dockerfiles/build/binaries/*-windows.exe
- .gopath/bin
- .gopath/.ok
expire_in: 7d
......
......@@ -65,9 +65,9 @@ MOCKERY_FLAGS = -note="This comment works around https://github.com/vektra/mocke
.PHONY: clean version mocks
all: deps docker build
all: deps helper-docker build
include Makefile.docker.mk
include Makefile.runner_helper.mk
help:
# Commands:
......@@ -77,7 +77,7 @@ help:
# Development commands:
# make build_simple - build executable for your arch and OS
# make install - install the version suitable for your OS as gitlab-runner
# make docker - build docker dependencies
# make helper-docker - build docker dependencies
#
# Testing commands:
# make test - run project tests
......@@ -118,13 +118,12 @@ build_simple: $(GOPATH_SETUP)
-o "out/binaries/$(NAME)" \
$(PKG)
build_current: docker build_simple
build_current: helper-docker build_simple
check_race_conditions:
@./scripts/check_race_conditions $(OUR_PACKAGES)
test: $(PKG_BUILD_DIR) docker
# Running tests...
test: $(PKG_BUILD_DIR) helper-docker
go test $(OUR_PACKAGES) $(TESTFLAGS)
parallel_test_prepare: $(GOPATH_SETUP)
......
ifeq (, $(shell docker info 2>/dev/null))
USE_PRECOMPILED_IMAGES ?= 1
endif
docker: out/helper-images/prebuilt-x86_64.tar.xz out/helper-images/prebuilt-arm.tar.xz
ifeq (, $(USE_PRECOMPILED_IMAGES))
HELPER_GO_FILES ?= $(shell find common network vendor -name '*.go')
GO_x86_64_ARCH = amd64
GO_arm_ARCH = arm
dockerfiles/build/binaries/gitlab-runner-helper.%: $(HELPER_GO_FILES) $(GOX)
gox -osarch=linux/$(GO_$*_ARCH) -ldflags "$(GO_LDFLAGS)" -output=$@ $(PKG)/apps/gitlab-runner-helper
out/helper-images/prebuilt-%.tar: dockerfiles/build/binaries/gitlab-runner-helper.%
@mkdir -p $$(dirname $@_)
docker build -t gitlab/gitlab-runner-helper:$*-$(REVISION) -f dockerfiles/build/Dockerfile.$* dockerfiles/build
-docker rm -f gitlab-runner-prebuilt-$*-$(REVISION)
docker create --name=gitlab-runner-prebuilt-$*-$(REVISION) gitlab/gitlab-runner-helper:$*-$(REVISION) /bin/sh
docker export -o $@ gitlab-runner-prebuilt-$*-$(REVISION)
docker rm -f gitlab-runner-prebuilt-$*-$(REVISION)
out/helper-images/prebuilt-%.tar.xz: out/helper-images/prebuilt-%.tar
xz -f -9 $<
else
out/helper-images/prebuilt-%.tar.xz:
$(warning WARNING: downloading prebuilt docker images that will be loaded by gitlab-runner: $@)
@mkdir -p $$(dirname $@_)
curl -o $@ https://gitlab-runner-downloads.s3.amazonaws.com/master/docker/$(shell basename $@)
endif
# -------------------------------------------------------------------------------
# The following make file does two things:
# 1. Create binaries for the gitlab-runner-helper app which can be found in
# `./apps/gitlab-runner-helper` for all the platforms we want to support.
# 2. Create Linux containers and extract their file system to be used later to
# build/publish.
#
# If you want to add a new arch or OS you would need to add a new
# file path to the $BINARIES variables and a new GO_ARCH_{{arch}}-{{OS}}
# variable. Note that Linux is implied by default.
# ---------------------------------------------------------------------------
# Tar files that we want to generate from the Docker file system, this is
# genarlly used for linux based Dockerfiles.
BASE_TAR_PATH := out/helper-images/prebuilt
TAR += ${BASE_TAR_PATH}-x86_64.tar.xz
TAR += ${BASE_TAR_PATH}-arm.tar.xz
# Binaries that we support for the helper image. We are using the following
# pattern match:
# dockerfiles/build/binaries/gitlab-runner-helper.{{arch}}-{{os}}, these should
# match up with GO_ARCH_* variables names. Note that Linux is implied by
# default.
BASE_BINARY_PATH := dockerfiles/build/binaries/gitlab-runner-helper
BINARIES := ${BASE_BINARY_PATH}.x86_64-windows
BINARIES += ${BASE_BINARY_PATH}.x86_64
BINARIES += ${BASE_BINARY_PATH}.arm
# Define variables with the archiecture for each matching binary. We are using
# the following pattern match GO_ARCH_{{arch}}-{{os}}, these should match up
# with BINARIES variables. The value of the varible is the dist name from `go tool dist list`
GO_ARCH_x86_64 = linux/amd64
GO_ARCH_arm = linux/arm
GO_ARCH_x86_64-windows = windows/amd64
# Go files that are used to create the helper binary.
HELPER_GO_FILES ?= $(shell find common network vendor -name '*.go')
.PHONY: helper-build helper-docker
# PHONY command to help build the binaries.
helper-build: $(BINARIES)
dockerfiles/build/binaries/gitlab-runner-helper.%: $(HELPER_GO_FILES) $(GOX)
gox -osarch=$(GO_ARCH_$*) -ldflags "$(GO_LDFLAGS)" -output=$@ $(PKG)/apps/gitlab-runner-helper
# PHONY command to help build the tar files for linux.
helper-docker: $(TAR)
out/helper-images/prebuilt-%.tar.xz: out/helper-images/prebuilt-%.tar
xz -f -9 $<
out/helper-images/prebuilt-%.tar: dockerfiles/build/binaries/gitlab-runner-helper.%
@mkdir -p $$(dirname $@_)
docker build -t gitlab/gitlab-runner-helper:$*-$(REVISION) -f dockerfiles/build/Dockerfile.$* dockerfiles/build
-docker rm -f gitlab-runner-prebuilt-$*-$(REVISION)
docker create --name=gitlab-runner-prebuilt-$*-$(REVISION) gitlab/gitlab-runner-helper:$*-$(REVISION) /bin/sh
docker export -o $@ gitlab-runner-prebuilt-$*-$(REVISION)
docker rm -f gitlab-runner-prebuilt-$*-$(REVISION)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment