wip
This commit is contained in:
@@ -1,5 +0,0 @@
|
||||
##
|
||||
# APP
|
||||
|
||||
.PHONY: start-up
|
||||
start-up:
|
||||
@@ -1,3 +0,0 @@
|
||||
BUILD_APP_VARS ?= APP BRANCH COMMIT DEPLOY_SLACK_HOOK ENV VERSION
|
||||
COMPOSE_IGNORE_ORPHANS ?= false
|
||||
ENV_VARS += CONSUL_HTTP_TOKEN
|
||||
+1
-1
@@ -19,7 +19,7 @@ build@%: myos-base
|
||||
.PHONY: build-env
|
||||
build-env: SERVICE ?= $(DOCKER_SERVICE)
|
||||
build-env: bootstrap
|
||||
$(call docker-compose-exec,$(SERVICE),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_APP_VARS),$(if $($(var)),sed -i '/^$(var)=/d' .env && echo $(var)='$($(var))' >> .env &&)) true)
|
||||
$(call docker-compose-exec,$(SERVICE),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)
|
||||
|
||||
# target build-init: Empty build directory
|
||||
.PHONY: build-init
|
||||
|
||||
+3
-3
@@ -51,7 +51,7 @@ logs: docker-compose-logs ## Display application dockers logs
|
||||
ps: docker-compose-ps ## List application dockers
|
||||
|
||||
.PHONY: recreate
|
||||
recreate: docker-compose-recreate start-up ## Recreate application dockers
|
||||
recreate: docker-compose-recreate app-start ## Recreate application dockers
|
||||
|
||||
.PHONY: reinstall
|
||||
reinstall: clean ## Reinstall application
|
||||
@@ -59,7 +59,7 @@ reinstall: clean ## Reinstall application
|
||||
$(call make,install)
|
||||
|
||||
.PHONY: restart
|
||||
restart: docker-compose-restart start-up ## Restart application
|
||||
restart: docker-compose-restart app-start ## Restart application
|
||||
|
||||
.PHONY: run
|
||||
run: ## Run a command in a new docker
|
||||
@@ -108,7 +108,7 @@ stop: docker-compose-stop ## Stop application dockers
|
||||
tests: app-tests ## Test application
|
||||
|
||||
.PHONY: up
|
||||
up: docker-compose-up start-up ## Create application dockers
|
||||
up: docker-compose-up app-start ## Create application dockers
|
||||
|
||||
.PHONY: update app-update
|
||||
update: app-update ## Update application
|
||||
|
||||
+3
-32
@@ -1,34 +1,5 @@
|
||||
CODEDEPLOY_APP_NAME ?= $(APP)
|
||||
CODEDEPLOY_DEPLOYMENT_GROUP ?= $(CODEDEPLOY_APP_NAME)_$(ENV)
|
||||
CODEDEPLOY_DEPLOYMENT_CONFIG ?= CodeDeployDefault.AllAtOnce
|
||||
CODEDEPLOY_DESCRIPTION ?= deploy $(ENV) $(APP) branch: $(BRANCH) commit: $(SUBREPO_COMMIT) tag: $(TAG) version: $(VERSION)
|
||||
CODEDEPLOY_GITHUB_REPO ?= $(patsubst ssh://git@github.com/%,%,$(GIT_REPOSITORY))
|
||||
CODEDEPLOY_GITHUB_COMMIT_ID ?= $(SUBREPO_COMMIT)
|
||||
DEPLOY ?= false
|
||||
DEPLOY_PING_TEXT ?= app: *$(APP)* branch: *$(BRANCH)* env: *$(ENV)* version: *$(VERSION)* container: *$(CONTAINER)* host: *$(HOST)*
|
||||
DEPLOY_SLACK_HOOK ?= https://hooks.slack.com/services/123456789/123456789/ABCDEFGHIJKLMNOPQRSTUVWX
|
||||
HASH ?= $(shell date +%s)
|
||||
DEPLOY_HASH ?= $(shell date +%s)
|
||||
DEPLOY_HOOK_TEXT ?= app: *$(APP)* branch: *$(BRANCH)* env: *$(ENV)* version: *$(VERSION)* container: *$(CONTAINER)* host: *$(HOST)*
|
||||
DEPLOY_HOOK_URL ?= https://hooks.slack.com/services/123456789/123456789/ABCDEFGHIJKLMNOPQRSTUVWX
|
||||
SERVER_NAME ?= $(DOCKER_REGISTRY_USERNAME).$(ENV).$(APP)
|
||||
OXA_SERVER_NAME ?= web
|
||||
|
||||
ifeq ($(APP),marketplace)
|
||||
CODEDEPLOY_APP_NAME := front
|
||||
EC2_SERVER_NAME := front
|
||||
else ifeq ($(APP),medias)
|
||||
CODEDEPLOY_APP_NAME := apimedia
|
||||
EC2_SERVER_NAME := api
|
||||
else ifeq ($(APP),partners)
|
||||
CODEDEPLOY_APP_NAME := api
|
||||
EC2_SERVER_NAME := api
|
||||
else ifeq ($(APP),workers)
|
||||
CODEDEPLOY_APP_NAME := worker
|
||||
EC2_SERVER_NAME := worker
|
||||
endif
|
||||
ifeq ($(ENV), preprod)
|
||||
CODEDEPLOY_APP_NAME := $(CODEDEPLOY_APP_NAME)pp
|
||||
CODEDEPLOY_DEPLOYMENT_GROUP := $(CODEDEPLOY_APP_NAME)_preprod
|
||||
OXA_SERVER_NAME := $(EC2_SERVER_NAME)pp-0x
|
||||
else ifeq ($(ENV), prod)
|
||||
CODEDEPLOY_DEPLOYMENT_GROUP := $(CODEDEPLOY_APP_NAME)_prod
|
||||
OXA_SERVER_NAME := $(EC2_SERVER_NAME)-xx
|
||||
endif
|
||||
|
||||
+9
-1
@@ -1,4 +1,12 @@
|
||||
ENV_VARS += NFS_CONFIG
|
||||
BUILD_ENV_VARS ?= APP BRANCH COMMIT DEPLOY_HOOK_URL ENV VERSION
|
||||
COMPOSE_IGNORE_ORPHANS ?= false
|
||||
ENV_VARS += CONSUL_HTTP_TOKEN GIT_AUTHOR_EMAIL GIT_AUTHOR_NAME NFS_CONFIG
|
||||
GIT_AUTHOR_EMAIL ?= $(shell git config user.email 2>/dev/null)
|
||||
GIT_AUTHOR_NAME ?= $(shell git config user.name 2>/dev/null)
|
||||
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
|
||||
NFS_HOST ?= host.docker.internal
|
||||
SETUP_NFSD ?= false
|
||||
SETUP_NFSD_OSX_CONFIG ?= nfs.server.bonjour=0 nfs.server.mount.regular_files=1 nfs.server.mount.require_resv_port=0 nfs.server.nfsd_threads=16 nfs.server.async=1
|
||||
SETUP_SYSCTL ?= false
|
||||
SETUP_SYSCTL_CONFIG ?= vm.max_map_count=262144 vm.overcommit_memory=1 fs.file-max=8388608 net.core.somaxconn=1024
|
||||
|
||||
+7
-8
@@ -1,11 +1,10 @@
|
||||
##########
|
||||
# DEPLOY #
|
||||
##########
|
||||
##
|
||||
# DEPLOY
|
||||
|
||||
.PHONY: deploy app-deploy
|
||||
# target deploy: Run post install hooks in the deployed application
|
||||
## Called by ansible after creation of the docker application on remote host
|
||||
deploy: app-deploy ## Run post install hooks in the deployed application
|
||||
deploy: app-deploy deploy-ping ## Run post install hooks in the deployed application
|
||||
|
||||
.PHONY: deploy@%
|
||||
# target deploy@%: Deploy application docker images
|
||||
@@ -18,8 +17,8 @@ deploy@%: myos-base build@% ## Deploy application docker images
|
||||
$(call make,docker-tag-latest docker-push-latest)
|
||||
|
||||
.PHONY: deploy-ping
|
||||
deploy-ping: deploy-ping-slack
|
||||
deploy-ping: deploy-ping-hook
|
||||
|
||||
.PHONY: deploy-ping-slack
|
||||
deploy-ping-slack:
|
||||
curl -X POST --data-urlencode 'payload={"text": "$(DEPLOY_PING_TEXT)"}' $(DEPLOY_SLACK_HOOK) ||:
|
||||
.PHONY: deploy-ping-hook
|
||||
deploy-ping-hook:
|
||||
curl -X POST --data-urlencode 'payload={"text": "$(DEPLOY_HOOK_TEXT)"}' $(DEPLOY_HOOK_URL) ||:
|
||||
|
||||
@@ -0,0 +1,71 @@
|
||||
##
|
||||
# GIT
|
||||
|
||||
# Create branch $(BRANCH) from upstream/$* branch
|
||||
.PHONY: git-branch-create-upstream-%
|
||||
git-branch-create-upstream-%: myos-base update-upstream
|
||||
$(call exec,git fetch --prune upstream)
|
||||
$(call exec,git rev-parse --verify $(BRANCH) >/dev/null 2>&1 && echo Unable to create $(BRANCH). || git branch $(BRANCH) upstream/$*)
|
||||
$(call exec,[ $$(git ls-remote --heads upstream $(BRANCH) |wc -l) -eq 0 ] && git push upstream $(BRANCH) || echo Unable to create branch $(BRANCH) on remote upstream.)
|
||||
$(call exec,git checkout $(BRANCH))
|
||||
|
||||
# Delete branch $(BRANCH)
|
||||
.PHONY: git-branch-delete
|
||||
git-branch-delete: myos-base update-upstream
|
||||
$(call exec,git rev-parse --verify $(BRANCH) >/dev/null 2>&1 && git branch -d $(BRANCH) || echo Unable to delete branch $(BRANCH).)
|
||||
$(foreach remote,upstream, $(call exec,[ $$(git ls-remote --heads $(remote) $(BRANCH) |wc -l) -eq 1 ] && git push $(remote) :$(BRANCH) || echo Unable to delete branch $(BRANCH) on remote $(remote).) &&) true
|
||||
|
||||
# Merge branch $(BRANCH) into upstream/$* branch
|
||||
.PHONY: git-branch-merge-upstream-%
|
||||
git-branch-merge-upstream-%: myos-base update-upstream
|
||||
$(call exec,git rev-parse --verify $(BRANCH) >/dev/null 2>&1)
|
||||
$(call exec,git checkout $(BRANCH))
|
||||
$(call exec,git pull --ff-only upstream $(BRANCH))
|
||||
$(call exec,git push upstream $(BRANCH))
|
||||
$(call exec,git checkout $*)
|
||||
$(call exec,git pull --ff-only upstream $*)
|
||||
$(call exec,git merge --no-ff --no-edit $(BRANCH))
|
||||
$(call exec,git push upstream $*)
|
||||
|
||||
.PHONY: git-stash
|
||||
git-stash: myos-base git-status
|
||||
if [ ! $(STATUS) -eq 0 ]; then \
|
||||
$(call exec,git stash); \
|
||||
fi
|
||||
|
||||
.PHONY: git-status
|
||||
git-status: myos-base
|
||||
$(eval DRYRUN_IGNORE := true)
|
||||
$(eval STATUS := $(shell $(call exec,git status -uno --porcelain 2>/dev/null |wc -l)))
|
||||
$(eval DRYRUN_IGNORE := false)
|
||||
|
||||
# Create $(TAG) tag to reference upstream/$* branch
|
||||
.PHONY: git-tag-create-upstream-%
|
||||
git-tag-create-upstream-%: myos-base update-upstream
|
||||
ifneq ($(words $(TAG)),0)
|
||||
$(call exec,git checkout $*)
|
||||
$(call exec,git pull --tags --prune upstream $*)
|
||||
$(call sed,s/^##\? $(TAG).*/## $(TAG) - $(shell date +%Y-%m-%d)/,CHANGELOG.md)
|
||||
$(call exec,[ $$(git diff CHANGELOG.md 2>/dev/null |wc -l) -eq 0 ] || git commit -m "$$(cat CHANGELOG.md |sed -n '\''/$(TAG)/,/^$$/{s/##\(.*\)/release\1\n/;p;}'\'')" CHANGELOG.md)
|
||||
$(call exec,[ $$(git tag -l $(TAG) |wc -l) -eq 0 ] || git tag -d $(TAG))
|
||||
$(call exec,git tag $(TAG))
|
||||
$(call exec,[ $$(git ls-remote --tags upstream $(TAG) |wc -l) -eq 0 ] || git push upstream :refs/tags/$(TAG))
|
||||
$(call exec,git push --tags upstream $*)
|
||||
endif
|
||||
|
||||
# Merge tag $(TAG) into upstream/$* branch
|
||||
.PHONY: git-tag-merge-upstream-%
|
||||
git-tag-merge-upstream-%: myos-base update-upstream
|
||||
ifneq ($(words $(TAG)),0)
|
||||
$(call exec,git fetch --tags -u --prune upstream $*:$*)
|
||||
$(call exec,git checkout $*)
|
||||
$(call exec,git merge --ff --no-edit $(TAG))
|
||||
$(call exec,git push upstream $*)
|
||||
endif
|
||||
|
||||
.PHONY: git-unstash
|
||||
git-unstash: myos-base
|
||||
$(eval STATUS ?= 0)
|
||||
if [ ! $(STATUS) -eq 0 ]; then \
|
||||
$(call exec,git stash pop); \
|
||||
fi
|
||||
@@ -1,10 +0,0 @@
|
||||
##
|
||||
# BOOTSTRAP
|
||||
|
||||
.PHONY: bootstrap-infra
|
||||
bootstrap-infra: setup-sysctl
|
||||
ifeq ($(SETUP_NFSD),true)
|
||||
ifeq ($(HOST_SYSTEM),DARWIN)
|
||||
$(call setup-nfsd-osx)
|
||||
endif
|
||||
endif
|
||||
@@ -1,36 +0,0 @@
|
||||
CMDS += openstack ssh-run terraform
|
||||
COMPOSE_IGNORE_ORPHANS ?= true
|
||||
CONTEXT += GIT_AUTHOR_EMAIL GIT_AUTHOR_NAME
|
||||
DOCKER_BUILD_VARS += SSH_BASTION_HOSTNAME SSH_BASTION_USERNAME SSH_PUBLIC_HOST_KEYS SSH_PRIVATE_IP_RANGE
|
||||
DOCKER_SERVICE ?= cli
|
||||
ELASTICSEARCH_HOST ?= elasticsearch
|
||||
ELASTICSEARCH_PORT ?= 9200
|
||||
ELASTICSEARCH_PROTOCOL ?= http
|
||||
ENV_VARS += COMPOSE_IGNORE_ORPHANS DOCKER_IMAGE_CLI DOCKER_IMAGE_SSH DOCKER_NAME_CLI DOCKER_NAME_SSH ELASTICSEARCH_HOST ELASTICSEARCH_PASSWORD ELASTICSEARCH_PORT ELASTICSEARCH_PROTOCOL ELASTICSEARCH_USERNAME GIT_AUTHOR_EMAIL GIT_AUTHOR_NAME SETUP_SYSCTL_CONFIG SSH_BASTION_HOSTNAME SSH_BASTION_USERNAME SSH_PUBLIC_HOST_KEYS SSH_PRIVATE_IP_RANGE
|
||||
GIT_AUTHOR_EMAIL ?= $(shell git config user.email 2>/dev/null)
|
||||
GIT_AUTHOR_NAME ?= $(shell git config user.name 2>/dev/null)
|
||||
HOME ?= /home/$(USER)
|
||||
NFS_DISK ?= $(NFS_HOST):/$(SHARED)
|
||||
NFS_OPTIONS ?= rw,rsize=8192,wsize=8192,bg,hard,intr,nfsvers=3,noatime,nodiratime,actimeo=3
|
||||
NFS_PATH ?= /srv/$(subst :,,$(NFS_DISK))
|
||||
SETUP_NFSD ?= false
|
||||
SETUP_NFSD_OSX_CONFIG ?= nfs.server.bonjour=0 nfs.server.mount.regular_files=1 nfs.server.mount.require_resv_port=0 nfs.server.nfsd_threads=16 nfs.server.async=1
|
||||
SETUP_SYSCTL ?= false
|
||||
SETUP_SYSCTL_CONFIG ?= vm.max_map_count=262144 vm.overcommit_memory=1 fs.file-max=8388608 net.core.somaxconn=1024
|
||||
SHELL ?= /bin/sh
|
||||
SSH_BASTION_HOSTNAME ?=
|
||||
SSH_BASTION_USERNAME ?=
|
||||
SSH_PUBLIC_HOST_KEYS ?= $(SSH_REMOTE_HOSTS) $(SSH_BASTION_HOSTNAME)
|
||||
SSH_PRIVATE_IP_RANGE ?= 10.10.*
|
||||
SSH_REMOTE_HOSTS ?= github.com gitlab.com
|
||||
STACK ?= base logs services
|
||||
|
||||
define setup-nfsd-osx
|
||||
$(eval dir:=$(or $(1),$(MONOREPO_DIR)))
|
||||
$(eval uid:=$(or $(2),$(UID)))
|
||||
$(eval gid:=$(or $(3),$(GID)))
|
||||
grep "$(dir)" /etc/exports >/dev/null 2>&1 || echo "$(dir) -alldirs -mapall=$(uid):$(gid) localhost" |sudo tee -a /etc/exports >/dev/null
|
||||
$(foreach config,$(SETUP_NFSD_OSX_CONFIG),grep "$(config)" /etc/nfs.conf >/dev/null 2>&1 || echo "$(config)" |sudo tee -a /etc/nfs.conf >/dev/null &&) true
|
||||
nfsd status >/dev/null || sudo nfsd enable
|
||||
showmount -e localhost |grep "$(dir)" >/dev/null 2>&1 || sudo nfsd restart
|
||||
endef
|
||||
@@ -1,11 +0,0 @@
|
||||
##
|
||||
# INFRA
|
||||
|
||||
.PHONY: setup-sysctl
|
||||
setup-sysctl:
|
||||
ifeq ($(SETUP_SYSCTL),true)
|
||||
$(foreach config,$(SETUP_SYSCTL_CONFIG),$(call docker-run,--privileged alpine:latest,sysctl -q -w $(config)) &&) true
|
||||
endif
|
||||
|
||||
.PHONY: start-up
|
||||
start-up: base-ssh-add
|
||||
@@ -0,0 +1,11 @@
|
||||
CMDS += ssh-run
|
||||
COMPOSE_IGNORE_ORPHANS := true
|
||||
CONTEXT += GIT_AUTHOR_EMAIL GIT_AUTHOR_NAME
|
||||
DOCKER_SERVICE ?= cli
|
||||
ENV_VARS += COMPOSE_IGNORE_ORPHANS DOCKER_IMAGE_CLI DOCKER_IMAGE_SSH DOCKER_NAME_CLI DOCKER_NAME_SSH
|
||||
HOME ?= /home/$(USER)
|
||||
NFS_DISK ?= $(NFS_HOST):/$(SHARED)
|
||||
NFS_OPTIONS ?= rw,rsize=8192,wsize=8192,bg,hard,intr,nfsvers=3,noatime,nodiratime,actimeo=3
|
||||
NFS_PATH ?= /srv/$(subst :,,$(NFS_DISK))
|
||||
SHELL ?= /bin/sh
|
||||
STACK ?= base
|
||||
@@ -1,3 +1,12 @@
|
||||
DOCKER_BUILD_VARS += $(SSH_ENV_VARS)
|
||||
ENV_VARS += $(SSH_ENV_VARS)
|
||||
SSH_BASTION_HOSTNAME ?=
|
||||
SSH_BASTION_USERNAME ?=
|
||||
SSH_ENV_VARS ?= SSH_BASTION_HOSTNAME SSH_BASTION_USERNAME SSH_PUBLIC_HOST_KEYS SSH_PRIVATE_IP_RANGE
|
||||
SSH_PUBLIC_HOST_KEYS ?= $(SSH_REMOTE_HOSTS) $(SSH_BASTION_HOSTNAME)
|
||||
SSH_PRIVATE_IP_RANGE ?= 10.10.*
|
||||
SSH_REMOTE_HOSTS ?= github.com gitlab.com
|
||||
|
||||
define ssh-connect
|
||||
$(eval hosts := $(1))
|
||||
$(eval command := $(2))
|
||||
@@ -1,4 +1,4 @@
|
||||
BUILD_APP_VARS += SYMFONY_ENV
|
||||
BUILD_ENV_VARS += SYMFONY_ENV
|
||||
DOCKER_SERVICE ?= php
|
||||
|
||||
ifneq (,$(filter $(ENV),$(ENV_DEPLOY)))
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
##
|
||||
# SETUP
|
||||
|
||||
.PHONY: setup-sysctl
|
||||
setup-sysctl:
|
||||
ifeq ($(SETUP_SYSCTL),true)
|
||||
$(foreach config,$(SETUP_SYSCTL_CONFIG),$(call docker-run,--privileged alpine:latest,sysctl -q -w $(config)) &&) true
|
||||
endif
|
||||
|
||||
define setup-nfsd-osx
|
||||
$(eval dir:=$(or $(1),$(MONOREPO_DIR)))
|
||||
$(eval uid:=$(or $(2),$(UID)))
|
||||
$(eval gid:=$(or $(3),$(GID)))
|
||||
grep "$(dir)" /etc/exports >/dev/null 2>&1 || echo "$(dir) -alldirs -mapall=$(uid):$(gid) localhost" |sudo tee -a /etc/exports >/dev/null
|
||||
$(foreach config,$(SETUP_NFSD_OSX_CONFIG),grep "$(config)" /etc/nfs.conf >/dev/null 2>&1 || echo "$(config)" |sudo tee -a /etc/nfs.conf >/dev/null &&) true
|
||||
nfsd status >/dev/null || sudo nfsd enable
|
||||
showmount -e localhost |grep "$(dir)" >/dev/null 2>&1 || sudo nfsd restart
|
||||
endef
|
||||
@@ -0,0 +1,15 @@
|
||||
## Update subrepos
|
||||
.PHONY: update-subrepo update-subrepos
|
||||
update-subrepo update-subrepos: bootstrap-git git-stash subrepos-push git-unstash
|
||||
|
||||
.PHONY: subrepos-branch-delete
|
||||
subrepos-branch-delete:
|
||||
$(call make,subrepo-branch-delete,..,SUBREPO BRANCH)
|
||||
|
||||
.PHONY: subrepos-tag-create-%
|
||||
subrepos-tag-create-%:
|
||||
$(call make,subrepo-tag-create-$*,..,SUBREPO TAG)
|
||||
|
||||
.PHONY: subrepos-push
|
||||
subrepos-push:
|
||||
$(call make,subrepo-push,..,SUBREPO BRANCH)
|
||||
Reference in New Issue
Block a user