Compare commits

...

1 Commits

2 changed files with 51 additions and 7 deletions

1
.gitignore vendored
View File

@ -67,3 +67,4 @@ tunnel.log
.develop.cmd
/.vscode
.ghc/ghci_history
.azure-pipelines/images/*.tar

View File

@ -16,6 +16,10 @@ export MEMCACHED_IMAGE = $(IMAGE_REGISTRY)/memcached:latest
export MINIO_IMAGE = $(IMAGE_REGISTRY)/minio/minio:latest
export MAILDEV_IMAGE = $(IMAGE_REGISTRY)/maildev/maildev:latest # TODO: needs different port than 1025 to avoid conflicts
export CI_IMAGE_DIR ?= ./.azure-pipelines/images
export CI_IMAGE_REPO = devfra.azurecr.io/de.fraport.fradrive.build
export PREFER_CI_IMAGES ?= true
export IN_CONTAINER ?= false
export IN_CI ?= false
export CONTAINER_FILE
@ -31,9 +35,11 @@ export SERVICE
export SERVICE_VARIANT ?= $(SERVICE)
export JOB
export IMAGE
export IMAGE_FALLBACK
export SET_IMAGE
export ENTRYPOINT
export EXEC_OPTS
export IMAGE_PULL_POLICY?=missing
export STACK_CORES = $(shell echo $(($(CPU_CORES)/2)))
export BASE_PORTS
@ -112,24 +118,48 @@ start:
.PHONY: %-backend
%-backend: SERVICE=backend
%-backend: SERVICE_VARIANT=backend
%-backend: IMAGE=localhost/fradrive/backend
ifeq ($(PREFER_CI_IMAGES),true)
%-backend: IMAGE=$(CI_IMAGE_REPO)/backend
%-backend: IMAGE_FALLBACK=localhost/fradrive/backend
else
%-backend: IMAGE=localhost/fradrive/backend
endif
%-backend: IMAGE_PULL_POLICY=never
%-backend: BASE_PORTS = "DEV_PORT_HTTP=3000" "DEV_PORT_HTTPS=3443"
.PHONY: %-uniworxdb
%-uniworxdb: SERVICE=backend
%-uniworxdb: SERVICE_VARIANT=uniworxdb
%-uniworxdb: IMAGE=localhost/fradrive/backend
ifeq ($(PREFER_CI_IMAGES),true)
%-uniworxdb: IMAGE=$(CI_IMAGE_REPO)/backend
%-uniworxdb: IMAGE_FALLBACK=localhost/fradrive/backend
else
%-uniworxdb: IMAGE=localhost/fradrive/backend
endif
%-uniworxdb: IMAGE_PULL_POLICY=never
.PHONY: %-ghci
%-ghci: SERVICE=backend
%-ghci: SERVICE_VARIANT=ghci
%-ghci: IMAGE=localhost/fradrive/backend
ifeq ($(PREFER_CI_IMAGES),true)
%-ghci: IMAGE=$(CI_IMAGE_REPO)/backend
%-ghci: IMAGE_FALLBACK=localhost/fradrive/backend
else
%-ghci: IMAGE=localhost/fradrive/backend
endif
%-ghci: IMAGE_PULL_POLICY=never
.PHONY: %-hoogle
%-hoogle: SERVICE=backend
%-hoogle: SERVICE_VARIANT=hoogle
%-hoogle: BASE_PORTS = "HOOGLE_PORT=8081"
%-hoogle: IMAGE=localhost/fradrive/backend
ifeq ($(PREFER_CI_IMAGES),true)
%-hoogle: IMAGE=$(CI_IMAGE_REPO)/backend
%-hoogle: IMAGE_FALLBACK=localhost/fradrive/backend
else
%-hoogle: IMAGE=localhost/fradrive/backend
endif
%-hoogle: IMAGE_PULL_POLICY=never
--start-hoogle:
HOOGLE_PORT=`cat $(CONTAINER_FILE) | grep 'HOOGLE_PORT=' | sed 's/HOOGLE_PORT=//'` ; \
stack $(STACK_CORES) hoogle -- server --local --port $${HOOGLE_PORT}
@ -137,23 +167,32 @@ start:
.PHONY: %-frontend
%-frontend: SERVICE=frontend
%-frontend: SERVICE_VARIANT=frontend
%-frontend: IMAGE=localhost/fradrive/frontend
ifeq ($(PREFER_CI_IMAGES),true)
%-frontend: IMAGE=$(CI_IMAGE_REPO)/frontend
%-frontend: IMAGE_FALLBACK=localhost/fradrive/frontend
else
%-frontend: IMAGE=localhost/fradrive/frontend
endif
%-frontend: IMAGE_PULL_POLICY=never
.PHONY: %-postgres
%-postgres: SERVICE=postgres
%-postgres: SERVICE_VARIANT=postgres
%-postgres: BASE_PORTS = "PGPORT=5432"
# TODO: support ci-postgres images?
%-postgres: IMAGE=localhost/fradrive/postgres
.PHONY: %-memcached
%-memcached: SERVICE=memcached
%-memcached: SERVICE_VARIANT=memcached
# TODO: support ci-memcached images?
%-memcached: SET_IMAGE=$$(MEMCACHED_IMAGE) --port=`cat $$(CONTAINER_FILE) | grep 'MEMCACHED_PORT=' | sed 's/MEMCACHED_PORT=//'`
%-memcached: BASE_PORTS = "MEMCACHED_PORT=11211"
.PHONY: %-minio
%-minio: SERVICE=minio
%-minio: SERVICE_VARIANT=minio
# TODO: support ci-minio images?
%-minio: SET_IMAGE=$$(MINIO_IMAGE) -- server `mktemp` --address=:`cat $$(CONTAINER_FILE) | grep 'UPLOAD_S3_PORT=' | sed 's/UPLOAD_S3_PORT=//'`
%-minio: BASE_PORTS = "UPLOAD_S3_PORT=9000"
@ -212,11 +251,13 @@ ghci: shell-ghci;
$(MAKE) -- --$* CONTAINER_FILE=$${CONTAINER_FILE} CONTAINER_IDENT=$${CONTAINER_IDENT} JOB=$(JOB)
.PHONY: rebuild-%
# HELP(rebuild-{backend,frontend,database,memcached,minio}): force-rebuild a given container image
# HELP(rebuild-{backend,frontend,database,memcached,minio}): force-reload a given ci image, or (if not present) force-rebuild a given container image
rebuild-%:
$(MAKE) -- --image-build SERVICE=$* NO_CACHE=--no-cache
--image-build:
ifeq "$(IMAGE)" "localhost/fradrive/$(SERVICE)"
ifeq "$(IMAGE)" "$(CI_IMAGE_REPO)/$(SERVICE)"
$(CONTAINER_COMMAND) load --input="$(CI_IMAGE_DIR)/$(SERVICE).tar"
else ifeq "$(IMAGE)" "localhost/fradrive/$(SERVICE)"
rm -f .Dockerfile
ln -s docker/$(SERVICE)/Dockerfile .Dockerfile
PROJECT_DIR=/fradrive; \
@ -227,6 +268,7 @@ ifeq "$(IMAGE)" "localhost/fradrive/$(SERVICE)"
--env IN_CONTAINER=true \
--env JOB=$(JOB) \
--tag fradrive/$(SERVICE) \
--pull=never \
--file $(PWD)/.Dockerfile ; \
fi
else
@ -245,6 +287,7 @@ endif
fi ; \
CONTAINER_ID=`$(CONTAINER_BGRUN) \
-v $(PWD):$(PROJECT_DIR):rw \
--pull=$(IMAGE_PULL_POLICY) \
--env IN_CONTAINER=true \
--env CONTAINER_FILE=$(CONTAINER_FILE) \
--env CONTAINER_NAME=$${CONTAINER_NAME} \