Add Odoo module update Makefile
This commit is contained in:
67
odoo/Makefile
Normal file
67
odoo/Makefile
Normal file
@@ -0,0 +1,67 @@
|
||||
SHELL := /bin/bash
|
||||
|
||||
HOST ?= root@optovia
|
||||
SSH ?= ssh $(HOST)
|
||||
|
||||
REMOTE_PROD ?= odoo-prod
|
||||
BRANCH ?= main
|
||||
MODULES ?= all
|
||||
|
||||
# Remote bare repo used to sync addons into the mounted /mnt/extra-addons path
|
||||
REMOTE_BARE_REPO ?= /srv/git/odoo.git
|
||||
|
||||
ODOO_SERVICE_PREFIX ?= optoviaproject-odoo
|
||||
ODOO_DB_NAME ?= odoo
|
||||
ODOO_DB_USER ?= odoo
|
||||
ODOO_DB_PASSWORD ?=
|
||||
ODOO_DB_HOST ?=
|
||||
ODOO_DB_PORT ?= 5432
|
||||
|
||||
.PHONY: update-modules install-modules check-vars
|
||||
|
||||
check-vars:
|
||||
@if [ -z "$(ODOO_DB_PASSWORD)" ]; then echo "ODOO_DB_PASSWORD is required"; exit 1; fi
|
||||
@if [ -z "$(ODOO_DB_HOST)" ]; then echo "ODOO_DB_HOST is required"; exit 1; fi
|
||||
@if [ -z "$(REMOTE_BARE_REPO)" ]; then echo "REMOTE_BARE_REPO is required"; exit 1; fi
|
||||
|
||||
update-modules: check-vars
|
||||
git push origin $(BRANCH) && git push $(REMOTE_PROD) $(BRANCH)
|
||||
@container="$$( $(SSH) "docker ps --filter 'name=$(ODOO_SERVICE_PREFIX)' --format '{{.Names}}' | head -1" )"; \
|
||||
if [ -z "$$container" ]; then \
|
||||
echo "No Odoo container found for prefix: $(ODOO_SERVICE_PREFIX)"; \
|
||||
exit 1; \
|
||||
fi; \
|
||||
addons_dir="$$( $(SSH) "docker inspect $$container --format '{{range .Mounts}}{{if eq .Destination \"/mnt/extra-addons\"}}{{.Source}}{{end}}{{end}}'" )"; \
|
||||
if [ -z "$$addons_dir" ]; then \
|
||||
echo "No /mnt/extra-addons mount found for $$container"; \
|
||||
exit 1; \
|
||||
fi; \
|
||||
$(SSH) "git --git-dir=$(REMOTE_BARE_REPO) --work-tree=$$addons_dir checkout -f $(BRANCH)"; \
|
||||
$(SSH) "docker exec $$container odoo -d '$(ODOO_DB_NAME)' -r '$(ODOO_DB_USER)' -w '$(ODOO_DB_PASSWORD)' --db_host='$(ODOO_DB_HOST)' --db_port='$(ODOO_DB_PORT)' -u '$(MODULES)' --stop-after-init"; \
|
||||
service="$$( $(SSH) "docker service ls --format '{{.Name}}' | grep -m1 '^$(ODOO_SERVICE_PREFIX)'" )"; \
|
||||
if [ -z "$$service" ]; then \
|
||||
echo "No Odoo service found for prefix: $(ODOO_SERVICE_PREFIX)"; \
|
||||
exit 1; \
|
||||
fi; \
|
||||
$(SSH) "docker service update --force --update-parallelism 1 --update-order stop-first $$service"
|
||||
|
||||
install-modules: check-vars
|
||||
git push origin $(BRANCH) && git push $(REMOTE_PROD) $(BRANCH)
|
||||
@container="$$( $(SSH) "docker ps --filter 'name=$(ODOO_SERVICE_PREFIX)' --format '{{.Names}}' | head -1" )"; \
|
||||
if [ -z "$$container" ]; then \
|
||||
echo "No Odoo container found for prefix: $(ODOO_SERVICE_PREFIX)"; \
|
||||
exit 1; \
|
||||
fi; \
|
||||
addons_dir="$$( $(SSH) "docker inspect $$container --format '{{range .Mounts}}{{if eq .Destination \"/mnt/extra-addons\"}}{{.Source}}{{end}}{{end}}'" )"; \
|
||||
if [ -z "$$addons_dir" ]; then \
|
||||
echo "No /mnt/extra-addons mount found for $$container"; \
|
||||
exit 1; \
|
||||
fi; \
|
||||
$(SSH) "git --git-dir=$(REMOTE_BARE_REPO) --work-tree=$$addons_dir checkout -f $(BRANCH)"; \
|
||||
$(SSH) "docker exec $$container odoo -d '$(ODOO_DB_NAME)' -r '$(ODOO_DB_USER)' -w '$(ODOO_DB_PASSWORD)' --db_host='$(ODOO_DB_HOST)' --db_port='$(ODOO_DB_PORT)' -i '$(MODULES)' --stop-after-init"; \
|
||||
service="$$( $(SSH) "docker service ls --format '{{.Name}}' | grep -m1 '^$(ODOO_SERVICE_PREFIX)'" )"; \
|
||||
if [ -z "$$service" ]; then \
|
||||
echo "No Odoo service found for prefix: $(ODOO_SERVICE_PREFIX)"; \
|
||||
exit 1; \
|
||||
fi; \
|
||||
$(SSH) "docker service update --force --update-parallelism 1 --update-order stop-first $$service"
|
||||
Reference in New Issue
Block a user