lol
This commit is contained in:
+2
-5
@@ -1,7 +1,7 @@
|
||||
##
|
||||
# BUILD
|
||||
|
||||
# target build-env: Build .env file in docker SERVICE to deploy
|
||||
# target build-env: Build .env file in docker SERVICE
|
||||
# on local host
|
||||
.PHONY: build-env
|
||||
build-env: SERVICE ?= $(DOCKER_SERVICE)
|
||||
@@ -10,9 +10,6 @@ build-env: bootstrap
|
||||
rm -f .env \
|
||||
&& make .env ENV=$(ENV) \
|
||||
&& echo BUILD=true >> .env \
|
||||
&& echo BUILD_DATE='"\'"'$(shell date "+%d/%m/%Y %H:%M:%S %z" 2>/dev/null)'"\'"' >> .env \
|
||||
&& echo BUILD_STATUS='"\'"'$(shell git status -uno --porcelain 2>/dev/null)'"\'"' >> .env \
|
||||
&& echo DOCKER=false >> .env \
|
||||
&& $(foreach var,$(BUILD_ENV_VARS), \
|
||||
$(if $($(var)),sed -i '/^$(var)=/d' .env && echo $(var)='$($(var))' >> .env &&) \
|
||||
) true \
|
||||
@@ -24,7 +21,7 @@ build-env: bootstrap
|
||||
build-init:
|
||||
$(RUN) rm -rf build && $(RUN) mkdir -p build
|
||||
|
||||
# target build-shared: Create SHARED folder in docker SERVICE to deploy
|
||||
# target build-shared: Create SHARED folder in docker SERVICE
|
||||
# on local host
|
||||
.PHONY: build-shared
|
||||
build-shared: SERVICE ?= $(DOCKER_SERVICE)
|
||||
|
||||
+3
-4
@@ -29,7 +29,7 @@ bootstrap-git-%:
|
||||
.PHONY: build
|
||||
build: docker-compose-build ## Build application docker images
|
||||
|
||||
# target build@%: Build application docker images to deploy of % ENV
|
||||
# target build@%: Build application docker images of % ENV
|
||||
# on local host
|
||||
.PHONY: build@% app-build
|
||||
build@%: myos-base
|
||||
@@ -47,13 +47,12 @@ build@%: myos-base
|
||||
# target clean: Clean application and docker images
|
||||
# on local host
|
||||
.PHONY: clean app-clean
|
||||
clean: app-clean docker-compose-down .env-clean ## Clean application and docker images
|
||||
clean: app-clean docker-rm docker-image-rm docker-volume-rm .env-clean ## Clean application and docker stuffs
|
||||
|
||||
# target clean@%: Clean deployed application and docker images of % ENV
|
||||
# on local host
|
||||
.PHONY: clean@%
|
||||
clean@%:
|
||||
$(call make,docker-compose-down DOCKER_COMPOSE_DOWN_OPTIONS='--rmi all -v')
|
||||
clean@%: docker-rm docker-image-rm docker-volume-rm;
|
||||
|
||||
# target config: View application docker compose file
|
||||
# on local host
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
BUILD_AUTHOR ?= $(DOCKER_AUTHOR)
|
||||
BUILD_DATE ?= $(shell TZ=UTC date "+%d/%m/%YT%H:%M:%SZ" 2>/dev/null)
|
||||
BUILD_DESCRIPTION ?= Lot of Love
|
||||
BUILD_DOCUMENTATION ?= $(if $(wildcard README.md),$(APP_REPOSITORY)/blob/$(COMMIT)/README.md)
|
||||
BUILD_ENV_VARS ?= APP BRANCH BUILD_DATE BUILD_STATUS COMMIT DEPLOY_HOOK_URL ENV VERSION
|
||||
BUILD_LABEL_VARS ?= org.label-schema.% org.opencontainers.% os.my.%
|
||||
BUILD_LABEL_ARGS ?= $(foreach var,$(filter $(BUILD_LABEL_VARS),$(MAKE_FILE_VARS)),$(if $($(var)),$(var)='$($(var))'))
|
||||
BUILD_LICENSE ?= GPL-3.0
|
||||
BUILD_NAME ?= $(COMPOSE_SERVICE_NAME)-$(BUILD_SERVICE)
|
||||
BUILD_SERVICE ?= undef
|
||||
BUILD_STATUS ?= $(shell git status -uno --porcelain 2>/dev/null)
|
||||
|
||||
org.label-schema.build-date ?= $(BUILD_DATE)
|
||||
org.label-schema.description ?= $(BUILD_DESCRIPTION)
|
||||
org.label-schema.docker.cmd ?= docker run -d $(DOCKER_REGISTRY)/$(DOCKER_REPOSITORY)/$(BUILD_SERVICE):$(DOCKER_IMAGE_TAG)
|
||||
org.label-schema.license ?= GPLv3
|
||||
org.label-schema.name ?= $(BUILD_NAME)
|
||||
org.label-schema.schema-version ?= 1.0
|
||||
org.label-schema.url ?= $(APP_URL)
|
||||
org.label-schema.usage ?= $(BUILD_DOCUMENTATION)
|
||||
org.label-schema.vcs-ref ?= $(COMMIT)
|
||||
org.label-schema.vcs-url ?= $(APP_REPOSITORY)
|
||||
org.label-schema.vendor ?= $(BUILD_AUTHOR)
|
||||
org.label-schema.version ?= $(VERSION)
|
||||
org.opencontainers.image.created ?= $(BUILD_DATE)
|
||||
org.opencontainers.image.revision ?= $(COMMIT)
|
||||
org.opencontainers.image.source ?= $(APP_REPOSITORY)
|
||||
org.opencontainers.image.url ?= $(APP_URL)
|
||||
org.opencontainers.image.vendor ?= $(BUILD_AUTHOR)
|
||||
org.opencontainers.image.version ?= $(VERSION)
|
||||
org.opencontainers.image.url ?= $(APP_URL)
|
||||
org.opencontainers.image.source ?= $(APP_REPOSITORY)
|
||||
org.opencontainers.image.version ?= $(VERSION)
|
||||
org.opencontainers.image.revision ?= $(COMMIT)
|
||||
org.opencontainers.image.vendor ?= $(BUILD_AUTHOR)
|
||||
org.opencontainers.image.title ?= $(BUILD_NAME)
|
||||
org.opencontainers.image.description ?= $(BUILD_DESCRIPTION)
|
||||
org.opencontainers.image.documentation ?= $(BUILD_DOCUMENTATION)
|
||||
org.opencontainers.build_tool.revision ?= $(MYOS_COMMIT)
|
||||
org.opencontainers.build_tool.source ?= $(MYOS_REPOSITORY)
|
||||
org.opencontainers.image.authors ?= $(BUILD_AUTHOR)
|
||||
org.opencontainers.image.licenses ?= $(BUILD_LICENSE)
|
||||
os.my.author ?= $(BUILD_AUTHOR)
|
||||
os.my.date ?= $(BUILD_DATE)
|
||||
os.my.name ?= $(BUILD_NAME)
|
||||
os.my.status ?= $(BUILD_STATUS)
|
||||
os.my.user ?= $(USER)
|
||||
os.my.uid ?= $(UID)
|
||||
os.my.version ?= $(VERSION)
|
||||
+16
-11
@@ -1,7 +1,7 @@
|
||||
CMDS += docker-compose-exec docker-run docker-run-%
|
||||
COMPOSE_FILE ?= $(wildcard docker/docker-compose.yml $(foreach file,$(patsubst docker/docker-compose.%,%,$(basename $(wildcard docker/docker-compose.*.yml))),$(if $(filter true,$(COMPOSE_FILE_$(file)) $(COMPOSE_FILE_$(call UPPERCASE,$(file)))),docker/docker-compose.$(file).yml)))
|
||||
COMPOSE_FILE_$(ENV) ?= true
|
||||
COMPOSE_FILE_DEBUG ?= $(DEBUG)
|
||||
COMPOSE_FILE_DEBUG ?= $(if $(DEBUG),true)
|
||||
COMPOSE_FILE_NFS ?= $(MOUNT_NFS)
|
||||
COMPOSE_FILE_SSH ?= true
|
||||
ifneq ($(SUBREPO),)
|
||||
@@ -17,15 +17,19 @@ endif
|
||||
COMPOSE_IGNORE_ORPHANS ?= false
|
||||
COMPOSE_PROJECT_NAME ?= $(USER)_$(ENV)_$(APP)
|
||||
COMPOSE_SERVICE_NAME ?= $(subst _,-,$(COMPOSE_PROJECT_NAME))
|
||||
CONTEXT += COMPOSE_FILE DOCKER_IMAGE_TAG DOCKER_REPOSITORY
|
||||
CONTEXT_DEBUG += DOCKER_REGISTRY
|
||||
DOCKER_BUILD_ARGS ?= $(if $(filter $(DOCKER_BUILD_NO_CACHE),true),--pull --no-cache) $(foreach var,$(DOCKER_BUILD_VARS),$(if $($(var)),--build-arg $(var)='$($(var))'))
|
||||
CONTEXT += COMPOSE_FILE DOCKER_REPOSITORY
|
||||
CONTEXT_DEBUG += DOCKER_BUILD_TARGET DOCKER_IMAGE_TAG DOCKER_REGISTRY DOCKER_SERVICE DOCKER_SERVICES
|
||||
DOCKER_AUTHOR ?= $(DOCKER_AUTHOR_NAME) <$(DOCKER_AUTHOR_EMAIL)>
|
||||
DOCKER_AUTHOR_EMAIL ?= $(subst +git,+docker,$(GIT_AUTHOR_EMAIL))
|
||||
DOCKER_AUTHOR_NAME ?= $(GIT_AUTHOR_NAME)
|
||||
DOCKER_BUILD_ARGS ?= $(if $(filter true,$(DOCKER_BUILD_NO_CACHE)),--pull --no-cache) $(foreach var,$(DOCKER_BUILD_VARS),$(if $($(var)),--build-arg $(var)='$($(var))'))
|
||||
DOCKER_BUILD_CACHE ?= true
|
||||
DOCKER_BUILD_LABEL ?= $(foreach var,$(filter $(BUILD_LABEL_VARS),$(MAKE_FILE_VARS)),$(if $($(var)),--label $(var)='$($(var))'))
|
||||
DOCKER_BUILD_NO_CACHE ?= false
|
||||
DOCKER_BUILD_TARGET ?= $(if $(filter $(ENV),$(DOCKER_BUILD_TARGETS)),$(ENV),$(DOCKER_BUILD_TARGET_DEFAULT))
|
||||
DOCKER_BUILD_TARGET_DEFAULT ?= local
|
||||
DOCKER_BUILD_TARGETS ?= local debug tests preprod prod
|
||||
DOCKER_BUILD_VARS ?= APP BRANCH DOCKER_GID DOCKER_REPOSITORY GID GIT_AUTHOR_EMAIL GIT_AUTHOR_NAME TARGET UID USER VERSION
|
||||
DOCKER_BUILD_TARGET_DEFAULT ?= master
|
||||
DOCKER_BUILD_TARGETS ?= $(ENV_DEPLOY)
|
||||
DOCKER_BUILD_VARS ?= APP BRANCH DOCKER_GID DOCKER_REPOSITORY GID GIT_AUTHOR_EMAIL GIT_AUTHOR_NAME SSH_REMOTE_HOSTS TARGET UID USER VERSION
|
||||
DOCKER_COMPOSE_DOWN_OPTIONS ?=
|
||||
DOCKER_COMPOSE_UP_OPTIONS ?= -d
|
||||
DOCKER_GID ?= $(call gid,docker)
|
||||
@@ -43,8 +47,8 @@ DOCKER_REGISTRY ?= registry
|
||||
DOCKER_REGISTRY_USERNAME ?= $(USER)
|
||||
DOCKER_REGISTRY_REPOSITORY ?= $(addsuffix /,$(DOCKER_REGISTRY))$(subst $(USER),$(DOCKER_REGISTRY_USERNAME),$(DOCKER_REPOSITORY))
|
||||
DOCKER_REPOSITORY ?= $(subst _,/,$(COMPOSE_PROJECT_NAME))
|
||||
DOCKER_SERVICE ?= $(shell $(call docker-compose,--log-level critical config --services) |tail -1)
|
||||
DOCKER_SERVICES ?= $(eval DRYRUN_IGNORE := true) $(shell $(call docker-compose,--log-level critical config --services)) $(eval DRYRUN_IGNORE := false)
|
||||
DOCKER_SERVICE ?= $(lastword $(DOCKER_SERVICES))
|
||||
DOCKER_SERVICES ?= $(eval IGNORE_DRYRUN := true)$(eval IGNORE_VERBOSE := true)$(shell $(call docker-compose,--log-level critical config --services))$(eval IGNORE_DRYRUN := false)$(eval IGNORE_VERBOSE := false)
|
||||
DOCKER_SHELL ?= $(SHELL)
|
||||
ENV_VARS += COMPOSE_PROJECT_NAME COMPOSE_SERVICE_NAME DOCKER_BUILD_TARGET DOCKER_GID DOCKER_IMAGE_TAG DOCKER_REGISTRY DOCKER_REPOSITORY DOCKER_SHELL
|
||||
|
||||
@@ -105,8 +109,8 @@ define docker-build
|
||||
$(eval tag := $(or $(2),$(DOCKER_REPOSITORY)/$(lastword $(subst /, ,$(path))):$(DOCKER_IMAGE_TAG)))
|
||||
$(eval target := $(subst ",,$(subst ',,$(or $(3),$(DOCKER_BUILD_TARGET)))))
|
||||
$(eval image_id := $(shell docker images -q $(tag) 2>/dev/null))
|
||||
$(eval build_image := $(or $(filter $(DOCKER_BUILD_CACHE),false),$(if $(image_id),,true)))
|
||||
$(if $(build_image),$(RUN) docker build $(DOCKER_BUILD_ARGS) --build-arg DOCKER_BUILD_DIR="$(path)" --tag $(tag) $(if $(target),--target $(target)) -f $(path)/Dockerfile .,$(if $(VERBOSE),echo "docker image $(tag) has id $(image_id)",true))
|
||||
$(eval build_image := $(or $(filter false,$(DOCKER_BUILD_CACHE)),$(if $(image_id),,true)))
|
||||
$(if $(build_image),$(RUN) docker build $(DOCKER_BUILD_ARGS) --build-arg DOCKER_BUILD_DIR="$(path)" $(DOCKER_BUILD_LABEL) --tag $(tag) $(if $(target),--target $(target)) -f $(path)/Dockerfile .,$(if $(VERBOSE),echo "docker image $(tag) has id $(image_id)",true))
|
||||
endef
|
||||
# function docker-commit: Commit docker image
|
||||
define docker-commit
|
||||
@@ -153,6 +157,7 @@ define docker-stack-update
|
||||
$(eval version := $(or $(2),$(if $(findstring :,$(stack)),$(lastword $(subst :, ,$(stack))),latest)))
|
||||
$(eval path := $(patsubst %/,%,$(or $(3),$(if $(findstring /,$(1)),$(if $(wildcard stack/$(1) stack/$(1).yml),stack/$(if $(findstring .yml,$(1)),$(dir $(1)),$(if $(wildcard stack/$(1).yml),$(dir $(1)),$(1))),$(dir $(1)))),stack/$(name))))
|
||||
$(eval COMPOSE_FILE += $(wildcard $(path)/$(name).yml $(path)/$(name).$(ENV).yml $(path)/$(name).$(ENV).$(version).yml $(path)/$(name).$(version).yml))
|
||||
$(eval COMPOSE_FILE := $(strip $(COMPOSE_FILE)))
|
||||
$(if $(wildcard $(path)/.env.dist),$(call .env,,$(path)/.env.dist,$(wildcard $(CONFIG)/$(ENV)/$(APP)/.env $(path)/.env.$(ENV) .env)))
|
||||
endef
|
||||
# function docker-tag: Tag docker image
|
||||
|
||||
+2
-3
@@ -11,9 +11,8 @@ APP_SCHEME ?= https
|
||||
APP_UPSTREAM_REPOSITORY ?= $(or $(shell git config --get remote.upstream.url 2>/dev/null),$(GIT_UPSTREAM_REPOSITORY))
|
||||
APP_URI ?= $(APP_HOST)$(APP_PATH)
|
||||
APP_URL ?= $(APP_SCHEME)://$(APP_URI)
|
||||
BUILD_ENV_VARS ?= APP BRANCH COMMIT DEPLOY_HOOK_URL ENV VERSION
|
||||
CONTEXT_DEBUG += APP_DIR APP_DOMAIN APP_HOST APP_PATH APP_URL APP_REPOSITORY APP_UPSTREAM_REPOSITORY
|
||||
ENV_DEPLOY ?= $(shell ls .git/refs/heads/)
|
||||
CONTEXT_DEBUG += APP_DIR APP_DOMAIN APP_HOST APP_PATH APP_URL APP_REPOSITORY APP_UPSTREAM_REPOSITORY ENV_DEPLOY
|
||||
ENV_DEPLOY ?= $(shell ls .git/refs/remotes/origin/ 2>/dev/null)
|
||||
ENV_VARS += APP_DIR APP_DOMAIN APP_HOST APP_PATH APP_URL CONSUL_HTTP_TOKEN $(if $(filter true,$(MOUNT_NFS)),NFS_CONFIG)
|
||||
MOUNT_NFS ?= false
|
||||
NFS_CONFIG ?= addr=$(NFS_HOST),actimeo=3,intr,noacl,noatime,nocto,nodiratime,nolock,soft,rsize=32768,wsize=32768,tcp,rw,vers=3
|
||||
|
||||
+3
-3
@@ -120,7 +120,7 @@ docker-images-rm:
|
||||
# target docker-images-rm-%: Remove docker images matching %
|
||||
.PHONY: docker-images-rm-%
|
||||
docker-images-rm-%:
|
||||
docker images |awk '$$1 ~ /^$(subst /,\/,$*)/ {print $$3}' |sort -u |while read image; do docker rmi -f $$image; done
|
||||
docker images |awk '$$1 ~ /^$(subst /,\/,$*)/ {print $$3}' |sort -u |while read image; do $(RUN) docker rmi -f $$image; done
|
||||
|
||||
# target docker-login: Exec 'docker login'
|
||||
.PHONY: docker-login
|
||||
@@ -188,7 +188,7 @@ docker-rm: docker-rm-$(COMPOSE_PROJECT_NAME)
|
||||
# target docker-rm-%: Remove dockers matching %
|
||||
.PHONY: docker-rm-%
|
||||
docker-rm-%:
|
||||
docker ps -a |awk '$$NF ~ /^$*/ {print $$NF}' |while read docker; do docker rm -f $$docker; done
|
||||
docker ps -a |awk '$$NF ~ /^$*/ {print $$NF}' |while read docker; do $(RUN) docker rm -f $$docker; done
|
||||
|
||||
# target docker-run: Call docker-run-% target with ARGS for SERVICE
|
||||
.PHONY: docker-run
|
||||
@@ -230,4 +230,4 @@ docker-volume-rm: docker-volume-rm-$(COMPOSE_PROJECT_NAME)
|
||||
# target docker-volume-rm-%: Remove docker volumes matching %
|
||||
.PHONY: docker-volume-rm-%
|
||||
docker-volume-rm-%:
|
||||
docker volume ls |awk '$$2 ~ /^$*/ {print $$2}' |sort -u |while read volume; do docker volume rm $$volume; done
|
||||
docker volume ls |awk '$$2 ~ /^$*/ {print $$2}' |sort -u |while read volume; do $(RUN) docker volume rm $$volume; done
|
||||
|
||||
+2
-2
@@ -37,9 +37,9 @@ git-stash: myos-base git-status
|
||||
# target git-status: Define STATUS with number of lines of git status
|
||||
.PHONY: git-status
|
||||
git-status: myos-base
|
||||
$(eval DRYRUN_IGNORE := true)
|
||||
$(eval IGNORE_DRYRUN := true)
|
||||
$(eval STATUS := $(shell $(call exec,git status -uno --porcelain 2>/dev/null |wc -l)))
|
||||
$(eval DRYRUN_IGNORE := false)
|
||||
$(eval IGNORE_DRYRUN := false)
|
||||
|
||||
# target git-tag-create-upstream-%: Create git TAG to reference upstream/% branch
|
||||
.PHONY: git-tag-create-upstream-%
|
||||
|
||||
Reference in New Issue
Block a user