This repository has been archived by the owner on Jun 1, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 46
/
Makefile
118 lines (92 loc) · 3.22 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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
SHELL ?= /bin/bash
.DEFAULT_GOAL := build
################################################################################
# Version details #
################################################################################
# This will reliably return the short SHA1 of HEAD or, if the working directory
# is dirty, will return that + "-dirty"
GIT_VERSION = $(shell git describe --always --abbrev=7 --dirty --match=NeVeRmAtCh)
################################################################################
# Containerized development environment-- or lack thereof #
################################################################################
ifneq ($(SKIP_DOCKER),true)
PROJECT_ROOT := $(dir $(realpath $(firstword $(MAKEFILE_LIST))))
DEV_IMAGE := deis/node-chrome:node12
DOCKER_CMD := docker run \
-it \
--rm \
-e SKIP_DOCKER=true \
-v $(PROJECT_ROOT):/code/kashti \
-w /code/kashti \
$(DEV_IMAGE)
endif
################################################################################
# Binaries and Docker images we build and publish #
################################################################################
ifdef DOCKER_REGISTRY
DOCKER_REGISTRY := $(DOCKER_REGISTRY)/
endif
ifdef DOCKER_ORG
DOCKER_ORG := $(DOCKER_ORG)/
endif
BASE_IMAGE_NAME := kashti
ifdef VERSION
MUTABLE_DOCKER_TAG := latest
else
VERSION := $(GIT_VERSION)
MUTABLE_DOCKER_TAG := edge
endif
IMAGE_NAME := $(DOCKER_REGISTRY)$(DOCKER_ORG)$(BASE_IMAGE_NAME):$(VERSION)
MUTABLE_IMAGE_NAME := $(DOCKER_REGISTRY)$(DOCKER_ORG)$(BASE_IMAGE_NAME):$(MUTABLE_DOCKER_TAG)
################################################################################
# Utility targets #
################################################################################
.PHONY: bootstrap
bootstrap: yarn-install
.PHONY: yarn-install
yarn-install:
$(DOCKER_CMD) yarn install
.PHONY: serve
serve: yarn-install
docker run \
-it \
--rm \
-e SKIP_DOCKER=true \
-v $(PROJECT_ROOT):/code/kashti \
-w /code/kashti \
-p 4200:4200 \
$(DEV_IMAGE) \
yarn serve
.PHONY: yarn-audit
yarn-audit:
$(DOCKER_CMD) yarn audit
################################################################################
# Tests #
################################################################################
.PHONY: lint
lint: yarn-install
$(DOCKER_CMD) yarn lint
.PHONY: test
test: yarn-install
$(DOCKER_CMD) yarn test
.PHONY: e2e
e2e: yarn-install
$(DOCKER_CMD) yarn e2e
.PHONY: shell
shell:
$(DOCKER_CMD) bash
################################################################################
# Build / Publish #
################################################################################
.PHONY: build
build: build-image
.PHONY: build-image
build-image:
docker build -t $(IMAGE_NAME) .
docker tag $(IMAGE_NAME) $(MUTABLE_IMAGE_NAME)
.PHONY: push
push: push-image
.PHONY: push-image
push-image: build-image
docker push $(IMAGE_NAME)
docker push $(MUTABLE_IMAGE_NAME)