-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile
78 lines (61 loc) · 2.21 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
.SUFFIXES:
.PHONY: clean push image stage dist unit-test stage-with-py-container
SRCROOT = $(abspath $(dir $(CURDIR)/$(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST))))
BUILD_DIR := $(SRCROOT)/build
VENV := $(SRCROOT)/.venv
STAGE = $(BUILD_DIR)/container
$(shell mkdir -p $(STAGE))
VOUCH_CODE = $(shell find $(SRCROOT)/vouch -name '*.py') $(SRCROOT)/setup.py
VOUCH_DIST = $(STAGE)/vouch-sdist.tgz
VAULTROOT = $(abspath $(SRCROOT)/../vault)
VAULT_CODE = $(shell find $(VAULTROOT) -name '*.py') $(VAULTROOT)/setup.py
VAULT_DIST = $(STAGE)/vault-sdist.tgz
export BUILD_NUMBER ?= 0
export PF9_VERSION ?= 0.0.0
DOCKER_REPOSITORY ?= quay.io/platform9/vouch
BUILD_ID := $(BUILD_NUMBER)
IMAGE_TAG ?= "$(or $(PF9_VERSION), $(PF9_VERSION), "latest")-$(BUILD_ID)"
BRANCH_NAME ?= $(or $(TEAMCITY_BUILD_BRANCH), $(TEAMCITY_BUILD_BRANCH), $(shell git symbolic-ref --short HEAD))
dist: $(VOUCH_DIST) $(VAULT_DIST)
$(VOUCH_DIST): $(VOUCH_CODE)
id && echo $(PATH) && \
cd $(SRCROOT) && \
rm -f dist/vouch* && \
python3 setup.py sdist && \
cp dist/vouch* $@
$(VAULT_DIST): $(VAULT_CODE)
cd $(VAULTROOT) && \
rm -f dist/vault* && \
python3 setup.py sdist && \
cp dist/vault* $@
stage-with-py-container: dist
stage:
$(SRCROOT)/run-staging-in-container.sh && \
cp -r $(SRCROOT)/container/* $(STAGE)/
$(BUILD_DIR):
mkdir -p $@
$(VENV):
(test -d $(VENV) || virtualenv $(VENV)) && \
$(VENV)/bin/python $(VENV)/bin/pip install pip==23.3.1 setuptools==68.2.2
$(BUILD_DIR)/container-tag: $(BUILD_DIR)
echo -ne "$(IMAGE_TAG)" >$@
unit-test: $(VENV)
$(VENV)/bin/python $(VENV)/bin/pip install -e$(SRCROOT) \
-e$(VAULTROOT) nose && \
$(VENV)/bin/nosetests -vd .
image: stage
docker build -t $(DOCKER_REPOSITORY):$(IMAGE_TAG) \
--build-arg BUILD_ID=$(BUILD_ID) \
--build-arg VERSION=$(PF9_VERSION) \
--build-arg BRANCH=$(BRANCH_NAME) \
--build-arg APP_METADATA="$$(python $(SRCROOT)/y2j $(STAGE)/app_metadata.yaml)" \
$(STAGE)
# This assumes that credentials for the aws tool are configured, either in
# ~/.aws/config or in AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY
push: image $(BUILD_DIR)/container-tag
docker push $(DOCKER_REPOSITORY):$(IMAGE_TAG)
clean:
rm -rf $(VENV)
rm -rf $(STAGE)
rm -rf $(SRCROOT)/dist
rm -rf $(VAULTROOT)/dist