[SEBA-497]
Delayer XOS containers for xos-core and xos-client
Build venv-xos using the Makefile
Change-Id: I6d9324a51e574c847a0698040d930e2d947b185c
diff --git a/Makefile b/Makefile
index c1f9032..08299be 100644
--- a/Makefile
+++ b/Makefile
@@ -18,26 +18,78 @@
SHELL = bash -e -o pipefail
# Variables
-XOS_LIBRARIES := $(wildcard lib/*)
-XOS_DIR := "."
+VERSION ?= $(shell cat ./VERSION)
+CORE_NAME ?= xos-core
+CLIENT_NAME ?= xos-client
+## Testing related
+XOS_LIBRARIES := $(wildcard lib/*)
+
+## Docker related
+DOCKER_REGISTRY ?=
+DOCKER_REPOSITORY ?=
+DOCKER_BUILD_ARGS ?=
+DOCKER_TAG ?= ${VERSION}
+CORE_IMAGENAME := ${DOCKER_REGISTRY}${DOCKER_REPOSITORY}${CORE_NAME}:${DOCKER_TAG}
+CLIENT_IMAGENAME := ${DOCKER_REGISTRY}${DOCKER_REPOSITORY}${CLIENT_NAME}:${DOCKER_TAG}
+
+## Docker labels. Only set ref and commit date if committed
+DOCKER_LABEL_VCS_URL ?= $(shell git remote get-url $(shell git remote))
+DOCKER_LABEL_VCS_REF ?= $(shell git diff-index --quiet HEAD -- && git rev-parse HEAD || echo "unknown")
+DOCKER_LABEL_COMMIT_DATE ?= $(shell git diff-index --quiet HEAD -- && git show -s --format=%cd --date=iso-strict HEAD || echo "unknown" )
+DOCKER_LABEL_BUILD_DATE ?= $(shell date -u "+%Y-%m-%dT%H:%M:%SZ")
+
+# Targets
+all: test
+
+## Docker targets
+docker-build:
+ docker build $(DOCKER_BUILD_ARGS) \
+ -t ${CORE_IMAGENAME} \
+ --build-arg org_label_schema_version="${VERSION}" \
+ --build-arg org_label_schema_vcs_url="${DOCKER_LABEL_VCS_URL}" \
+ --build-arg org_label_schema_vcs_ref="${DOCKER_LABEL_VCS_REF}" \
+ --build-arg org_label_schema_build_date="${DOCKER_LABEL_BUILD_DATE}" \
+ --build-arg org_opencord_vcs_commit_date="${DOCKER_LABEL_COMMIT_DATE}" \
+ -f Dockerfile.core .
+ docker build $(DOCKER_BUILD_ARGS) \
+ -t ${CLIENT_IMAGENAME} \
+ --build-arg org_label_schema_version="${VERSION}" \
+ --build-arg org_label_schema_vcs_url="${DOCKER_LABEL_VCS_URL}" \
+ --build-arg org_label_schema_vcs_ref="${DOCKER_LABEL_VCS_REF}" \
+ --build-arg org_label_schema_build_date="${DOCKER_LABEL_BUILD_DATE}" \
+ --build-arg org_opencord_vcs_commit_date="${DOCKER_LABEL_COMMIT_DATE}" \
+ -f Dockerfile.client .
+
+docker-push:
+ docker push ${CORE_IMAGENAME}
+ docker push ${CLIENT_IMAGENAME}
+
+# Create a virtualenv and install all the libraries
venv-xos:
- ./scripts/setup_venv.sh
+ virtualenv $@;\
+ source ./$@/bin/activate ; set -u ;\
+ pip install -r requirements.txt nose2 mock requests_mock;\
+ pip install -e lib/xos-util ;\
+ pip install -e lib/xos-config ;\
+ pip install -e lib/xos-genx ;\
+ pip install -e lib/xos-kafka ;\
+ pip install -e lib/xos-api ;\
+ pip install -e lib/xos-synchronizer ;\
+ pip install -e lib/xos-migrate
# tests
-test: lib-test xos-test migration-test core-xproto-test
+test: lib-test unit-test migration-test core-xproto-test
lib-test:
for lib in $(XOS_LIBRARIES); do pushd $$lib; tox; popd; done
-xos-test: venv-xos
- source ./venv-xos/bin/activate ; set -u ;\
- nose2 -c tox.ini --verbose --junit-xml
- # FIXME: should run `flake8 xos` as a part of this target
+unit-test:
+ tox
migration-test: venv-xos
source ./venv-xos/bin/activate ; set -u ;\
- xos-migrate --xos-dir . -s core --check
+ xos-migrate --xos-dir . -s core --check
create-migrations: venv-xos
source ./venv-xos/bin/activate ; set -u ;\
@@ -45,7 +97,7 @@
core-xproto-test: venv-xos
source ./venv-xos/bin/activate ; set -u ;\
- xosgenx xos/core/models/core.xproto --lint --strict
+ xosgenx xos/core/models/core.xproto --lint --strict
clean:
find . -name '*.pyc' | xargs rm -f