BJ-49: add build_utils (#56)

This commit is contained in:
Anatoly Cherkasov 2016-09-10 01:24:38 +03:00 committed by GitHub
parent 71887ddee8
commit d24806b7d4
5 changed files with 50 additions and 81 deletions

4
.gitmodules vendored Normal file
View File

@ -0,0 +1,4 @@
[submodule "build_utils"]
path = build_utils
url = git@github.com:rbkmoney/build_utils.git
branch = master

40
Jenkinsfile vendored
View File

@ -1,28 +1,30 @@
#!groovy #!groovy
// Args: build('damsel', 'docker-host') {
// GitHub repo name checkoutRepo()
// Jenkins agent label loadBuildUtils()
// Tracing artifacts to be stored alongside build logs
pipeline("damsel", 'docker-host', "_build/") {
runStage('compile') { def pipeDefault
sh "make w_container_compile" runStage('load pipeline') {
} env.JENKINS_LIB = "build_utils/jenkins_lib"
pipeDefault = load("${env.JENKINS_LIB}/pipeDefault.groovy")
}
// Build failed without this file: _build/test/logs/index.html (Hi, jenkins_pipeline_lib) pipeDefault() {
runStage('folder_create') {
sh "make w_container_create"
}
if (env.BRANCH_NAME == 'master') { runStage('compile') {
runStage('deploy_nexus') { sh "make wc_compile"
sh "make w_container_deploy_nexus"
} }
} else {
runStage('java_compile') { runStage('Execute build container') {
sh "make w_container_java_compile" withCredentials([[$class: 'FileBinding', credentialsId: 'java-maven-settings.xml', variable: 'SETTINGS_XML']]) {
if (env.BRANCH_NAME == 'master') {
sh 'make wc_deploy_nexus SETTINGS_XML=$SETTINGS_XML'
} else {
sh 'make wc_java_compile SETTINGS_XML=$SETTINGS_XML'
}
}
} }
} }
} }

View File

@ -4,23 +4,28 @@ THRIFT_OPTIONS_erlang = scoped_typenames
THRIFT_OPTIONS_java = fullcamel THRIFT_OPTIONS_java = fullcamel
THRIFT_OPTIONS_html = standalone THRIFT_OPTIONS_html = standalone
REGISTRY := dr.rbkmoney.com UTILS_PATH := build_utils
ORG_NAME := rbkmoney TEMPLATES_PATH := .
BASE_IMAGE := "$(REGISTRY)/$(ORG_NAME)/build:530114ab63a7ff0379a2220169a0be61d3f7c64c"
RELNAME := damsel
# Name of the service
SERVICE_NAME := damsel
# Service image default tag
SERVICE_IMAGE_TAG ?= $(shell git rev-parse HEAD)
# The tag for service image to be pushed with
SERVICE_IMAGE_PUSH_TAG ?= $(SERVICE_IMAGE_TAG)
BUILD_IMAGE_TAG := 753126790c9ecd763840d9fe58507335af02b875
FILES = $(wildcard proto/*.thrift) FILES = $(wildcard proto/*.thrift)
DESTDIR = _gen DESTDIR = _gen
CALL_ANYWHERE := clean all create java_compile compile doc deploy_nexus CALL_W_CONTAINER := clean all create java_compile compile doc deploy_nexus
CALL_W_CONTAINER := $(CALL_ANYWHERE)
BASE_IMAGE ?= rbkmoney/build
all: compile all: compile
include utils.mk -include $(UTILS_PATH)/make_lib/utils_container.mk
define generate define generate
$(THRIFT_EXEC) -r -strict --gen $(1):$(THRIFT_OPTIONS_$(1)) -out $(2) $(3) $(THRIFT_EXEC) -r -strict --gen $(1):$(THRIFT_OPTIONS_$(1)) -out $(2) $(3)
@ -32,13 +37,10 @@ endef
CUTLINE = $(shell printf '=%.0s' $$(seq 1 80)) CUTLINE = $(shell printf '=%.0s' $$(seq 1 80))
.PHONY: $(CALL_W_CONTAINER) create $(UTIL_TARGETS) .PHONY: $(CALL_W_CONTAINER) create
LANGUAGE_TARGETS = $(foreach lang, $(THRIFT_LANGUAGES), verify-$(lang)) LANGUAGE_TARGETS = $(foreach lang, $(THRIFT_LANGUAGES), verify-$(lang))
# Build failed without this file: _build/test/logs/index.html (Hi, jenkins_pipeline_lib)
create:
mkdir -p _build/test/logs && touch _build/test/logs/index.html
compile: $(LANGUAGE_TARGETS) compile: $(LANGUAGE_TARGETS)
@echo "Ok" @echo "Ok"
@ -86,13 +88,19 @@ $(TARGETS):: $(DESTDIR)/$(LANGUAGE)/%: %
endif endif
endif endif
ifdef SETTINGS_XML
DOCKER_RUN_OPTS = -v $(SETTINGS_XML):$(SETTINGS_XML)
DOCKER_RUN_OPTS += -e SETTINGS_XML=$(SETTINGS_XML)
endif
COMMIT_HASH = $(shell git --no-pager log -1 --pretty=format:"%h") COMMIT_HASH = $(shell git --no-pager log -1 --pretty=format:"%h")
NUMBER_COMMITS = $(shell git rev-list --count HEAD) NUMBER_COMMITS = $(shell git rev-list --count HEAD)
java_compile: java_compile:
mvn compile $(if $(SETTINGS_XML),,echo "SETTINGS_XML not defined" ; exit 1)
mvn compile -s $(SETTINGS_XML)
deploy_nexus: deploy_nexus:
mvn versions:set versions:commit -DnewVersion="1.$(NUMBER_COMMITS)-$(COMMIT_HASH)" \ $(if $(SETTINGS_XML),, echo "SETTINGS_XML not defined"; exit 1)
&& mvn deploy -Dpath_to_thrift="$(THRIFT_EXEC)" mvn versions:set versions:commit -DnewVersion="1.$(NUMBER_COMMITS)-$(COMMIT_HASH)" -s $(SETTINGS_XML) \
&& mvn deploy -s $(SETTINGS_XML) -Dpath_to_thrift="$(THRIFT_EXEC)"

1
build_utils Submodule

@ -0,0 +1 @@
Subproject commit 2b1c328ce9a42d9072850f03685005a4153efc28

View File

@ -1,46 +0,0 @@
SHELL := /bin/bash
which = $(if $(shell which $(1) 2>/dev/null),\
$(shell which $(1) 2>/dev/null),\
$(error "Error: could not locate $(1)!"))
DOCKER = $(call which,docker)
DOCKER_COMPOSE = $(call which,docker-compose)
UTIL_TARGETS := to_dev_container w_container_% w_compose_% run_w_container_% check_w_container_%
ifndef RELNAME
$(error RELNAME is not set)
endif
ifndef CALL_W_CONTAINER
$(error CALL_W_CONTAINER is not set)
endif
to_dev_container:
$(DOCKER) run -it --rm -v $$PWD:$$PWD --workdir $$PWD $(BASE_IMAGE) /bin/bash
w_container_%:
$(MAKE) -s run_w_container_$*
w_compose_%:
$(MAKE) -s run_w_compose_$*
run_w_container_%: check_w_container_%
{ \
$(DOCKER) run --rm -v $$PWD:$$PWD --workdir $$PWD $(BASE_IMAGE) make $* ; \
res=$$? ; exit $$res ; \
}
run_w_compose_%: check_w_container_%
{ \
$(DOCKER_COMPOSE) up -d ; \
$(DOCKER_COMPOSE) exec -T $(RELNAME) make $* ; \
res=$$? ; \
$(DOCKER_COMPOSE) down ; \
exit $$res ; \
}
check_w_container_%:
$(if $(filter $*,$(CALL_W_CONTAINER)),,\
$(error "Error: target '$*' cannot be called w_container_"))