Reconmap/web-client

View on GitHub
Makefile

Summary

Maintainability
Test Coverage
SHELL := bash
.SHELLFLAGS := -eu -o pipefail -c
.ONESHELL:
.DELETE_ON_ERROR:
MAKEFLAGS += --warn-undefined-variables
MAKEFLAGS += --no-builtin-rules

ENV_FILE_NAME ?= environment.local.js
DOCKER_IMAGE_NAME = quay.io/reconmap/web-client
DOCKER_CONTAINER_NAME = reconmap-web-client
DOCKER_DEV_TAG = reconmap/web-client:dev

# macOS is using different IDs than linux
UNAME=$(shell uname)
ifeq ($(UNAME),Darwin)
    HOST_UID=1000
    HOST_GID=1000
else
    HOST_UID=$(shell id -u)
    HOST_GID=$(shell id -g)
endif
CONTAINER_UID_GID=$(HOST_UID):$(HOST_GID)

ifdef TRAVIS_BRANCH
GIT_BRANCH_NAME = $(TRAVIS_BRANCH)
else
GIT_BRANCH_NAME = $(shell git rev-parse --abbrev-ref HEAD)
endif

GIT_COMMIT_HASH = $(shell git rev-parse --short HEAD)

.PHONY: prepare
prepare: base-container
    docker run -u $(CONTAINER_UID_GID) --rm -t -v $(PWD):/home/reconmapper --entrypoint yarn $(DOCKER_DEV_TAG) add npm-check-updates
    docker run -u $(CONTAINER_UID_GID) --rm -t -v $(PWD):/home/reconmapper --entrypoint yarn $(DOCKER_DEV_TAG) install

.PHONY: base-container
base-container:
    docker build -f docker/node.Dockerfile --build-arg HOST_UID=$(HOST_UID) --build-arg HOST_GID=$(HOST_GID) -t $(DOCKER_DEV_TAG) .

.PHONY: version-increase
version-increase:
    git stash
    docker run -u $(CONTAINER_UID_GID) --rm -t -v $(PWD):/home/reconmapper -v "${HOME}/.gitconfig:/home/reconmapper/.gitconfig" --entrypoint npm $(DOCKER_DEV_TAG) version patch -m "Increment version to %s"
    git stash pop || true

.PHONY: start
start:
    docker run -u $(CONTAINER_UID_GID) --rm -it \
        -v $(PWD):/home/reconmapper \
        -v $(PWD)/$(ENV_FILE_NAME):/home/reconmapper/public/environment.js \
        -p 5500:5500 \
        -e VITE_GIT_COMMIT_HASH=$(GIT_COMMIT_HASH) \
        -e NODE_OPTIONS="--max-old-space-size=8192" \
        --entrypoint yarn \
        --name $(DOCKER_CONTAINER_NAME) \
        $(DOCKER_DEV_TAG) start

.PHONY: stop
stop:
    docker stop $(DOCKER_CONTAINER_NAME) || true

.PHONY: tests
tests:
    docker run -u $(CONTAINER_UID_GID) --rm -it \
        -v $(PWD):/home/reconmapper \
        -v $(PWD)/$(ENV_FILE_NAME):/home/reconmapper/public/environment.js \
        --entrypoint yarn -e CI=true $(DOCKER_DEV_TAG) test
    docker run -u $(CONTAINER_UID_GID) --rm -it \
        -v $(PWD):/home/reconmapper \
        -v $(PWD)/$(ENV_FILE_NAME):/home/reconmapper/public/environment.js \
        --entrypoint npx -e CI=true $(DOCKER_DEV_TAG) npx stylelint "**/*.css"

.PHONY: tests-ci
tests-ci:
    docker run -u $(CONTAINER_UID_GID) --rm -t \
        -v $(PWD):/home/reconmapper \
        -v $(PWD)/$(ENV_FILE_NAME):/home/reconmapper/public/environment.js \
        --entrypoint yarn -e CI=true $(DOCKER_DEV_TAG) test:ci

.PHONY: clean
clean: stop
    git clean -fdx

.PHONY: build
build:
    docker build -f docker/app.Dockerfile \
        --build-arg RECONMAP_APP_GIT_COMMIT_HASH=$(GIT_COMMIT_HASH) \
        -t $(DOCKER_IMAGE_NAME):$(GIT_BRANCH_NAME) -t $(DOCKER_IMAGE_NAME):latest .

.PHONY: push
push:
    docker push $(DOCKER_IMAGE_NAME):$(GIT_BRANCH_NAME)
    docker push $(DOCKER_IMAGE_NAME):latest

.PHONY: shell
shell:
    docker exec -it $(DOCKER_CONTAINER_NAME) bash

.PHONY: sudo-shell
sudo-shell:
    docker exec -u 0 -it $(DOCKER_CONTAINER_NAME) bash