Add initial Odoo FSM modules and deployment make targets
This commit is contained in:
117
Makefile
Normal file
117
Makefile
Normal file
@@ -0,0 +1,117 @@
|
||||
ODOO_SERVICE_PREFIX ?= sandbox-odoorepair-gfijxl
|
||||
MODULES ?= all
|
||||
CUSTOM_MODULES ?= dsrpt_repair_main,dsrpt_repair_customers,dsrpt_repair_technicians,dsrpt_repair_materials,dsrpt_repair_work_orders
|
||||
ODOO_CONFIG ?= /etc/odoo/odoo.conf
|
||||
|
||||
ODOO_DB_NAME ?=
|
||||
ODOO_DB_USER ?=
|
||||
ODOO_DB_PASSWORD ?=
|
||||
ODOO_DB_HOST ?=
|
||||
ODOO_DB_PORT ?=
|
||||
|
||||
GIT_REMOTE ?= origin
|
||||
GIT_BRANCH ?= main
|
||||
|
||||
.PHONY: help install-modules update-modules install-custom update-custom restart-service logs shell repo-status repo-pull repo-set-ssh repo-set-https
|
||||
|
||||
help:
|
||||
@echo "Targets:"
|
||||
@echo " make install-modules MODULES=module_a,module_b"
|
||||
@echo " make update-modules MODULES=module_a,module_b"
|
||||
@echo " make install-custom"
|
||||
@echo " make update-custom"
|
||||
@echo " make restart-service"
|
||||
@echo " make logs"
|
||||
@echo " make shell"
|
||||
@echo " make repo-status"
|
||||
@echo " make repo-set-ssh"
|
||||
@echo " make repo-set-https"
|
||||
@echo " make repo-pull GIT_BRANCH=main"
|
||||
|
||||
install-modules:
|
||||
@container="$$(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; \
|
||||
db_name="$(ODOO_DB_NAME)"; \
|
||||
db_user="$(ODOO_DB_USER)"; \
|
||||
db_password="$(ODOO_DB_PASSWORD)"; \
|
||||
db_host="$(ODOO_DB_HOST)"; \
|
||||
db_port="$(ODOO_DB_PORT)"; \
|
||||
if [ -z "$$db_name" ]; then db_name="$$(docker exec $$container printenv ODOO_DB_NAME 2>/dev/null || true)"; fi; \
|
||||
if [ -z "$$db_user" ]; then db_user="$$(docker exec $$container printenv ODOO_DB_USER 2>/dev/null || true)"; fi; \
|
||||
if [ -z "$$db_password" ]; then db_password="$$(docker exec $$container printenv ODOO_DB_PASSWORD 2>/dev/null || true)"; fi; \
|
||||
if [ -z "$$db_host" ]; then db_host="$$(docker exec $$container printenv ODOO_DB_HOST 2>/dev/null || true)"; fi; \
|
||||
if [ -z "$$db_port" ]; then db_port="$$(docker exec $$container printenv ODOO_DB_PORT 2>/dev/null || true)"; fi; \
|
||||
if [ -z "$$db_name" ] || [ -z "$$db_user" ] || [ -z "$$db_password" ] || [ -z "$$db_host" ]; then \
|
||||
echo "Cannot resolve ODOO_DB_* values. Set them in env or Make vars."; \
|
||||
exit 1; \
|
||||
fi; \
|
||||
db_port_arg=""; \
|
||||
if [ -n "$$db_port" ]; then db_port_arg="--db_port=$$db_port"; fi; \
|
||||
echo "Installing modules: $(MODULES)"; \
|
||||
docker exec $$container odoo -c '$(ODOO_CONFIG)' -d "$$db_name" -r "$$db_user" -w "$$db_password" --db_host="$$db_host" $$db_port_arg -i '$(MODULES)' --stop-after-init; \
|
||||
$(MAKE) restart-service
|
||||
|
||||
update-modules:
|
||||
@container="$$(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; \
|
||||
db_name="$(ODOO_DB_NAME)"; \
|
||||
db_user="$(ODOO_DB_USER)"; \
|
||||
db_password="$(ODOO_DB_PASSWORD)"; \
|
||||
db_host="$(ODOO_DB_HOST)"; \
|
||||
db_port="$(ODOO_DB_PORT)"; \
|
||||
if [ -z "$$db_name" ]; then db_name="$$(docker exec $$container printenv ODOO_DB_NAME 2>/dev/null || true)"; fi; \
|
||||
if [ -z "$$db_user" ]; then db_user="$$(docker exec $$container printenv ODOO_DB_USER 2>/dev/null || true)"; fi; \
|
||||
if [ -z "$$db_password" ]; then db_password="$$(docker exec $$container printenv ODOO_DB_PASSWORD 2>/dev/null || true)"; fi; \
|
||||
if [ -z "$$db_host" ]; then db_host="$$(docker exec $$container printenv ODOO_DB_HOST 2>/dev/null || true)"; fi; \
|
||||
if [ -z "$$db_port" ]; then db_port="$$(docker exec $$container printenv ODOO_DB_PORT 2>/dev/null || true)"; fi; \
|
||||
if [ -z "$$db_name" ] || [ -z "$$db_user" ] || [ -z "$$db_password" ] || [ -z "$$db_host" ]; then \
|
||||
echo "Cannot resolve ODOO_DB_* values. Set them in env or Make vars."; \
|
||||
exit 1; \
|
||||
fi; \
|
||||
db_port_arg=""; \
|
||||
if [ -n "$$db_port" ]; then db_port_arg="--db_port=$$db_port"; fi; \
|
||||
echo "Updating modules: $(MODULES)"; \
|
||||
docker exec $$container odoo -c '$(ODOO_CONFIG)' -d "$$db_name" -r "$$db_user" -w "$$db_password" --db_host="$$db_host" $$db_port_arg -u '$(MODULES)' --stop-after-init; \
|
||||
$(MAKE) restart-service
|
||||
|
||||
install-custom:
|
||||
@$(MAKE) install-modules MODULES='$(CUSTOM_MODULES)'
|
||||
|
||||
update-custom:
|
||||
@$(MAKE) update-modules MODULES='$(CUSTOM_MODULES)'
|
||||
|
||||
restart-service:
|
||||
@service="$$(docker service ls --format '{{.Name}}' | grep -m1 '^$(ODOO_SERVICE_PREFIX)')"; \
|
||||
if [ -z "$$service" ]; then \
|
||||
echo "No service found for prefix: $(ODOO_SERVICE_PREFIX)"; \
|
||||
exit 1; \
|
||||
fi; \
|
||||
echo "Restarting service $$service"; \
|
||||
docker service update --force $$service >/dev/null
|
||||
|
||||
logs:
|
||||
@service="$$(docker service ls --format '{{.Name}}' | grep -m1 '^$(ODOO_SERVICE_PREFIX)')"; \
|
||||
if [ -z "$$service" ]; then \
|
||||
echo "No service found for prefix: $(ODOO_SERVICE_PREFIX)"; \
|
||||
exit 1; \
|
||||
fi; \
|
||||
docker service logs --tail 100 -f $$service
|
||||
|
||||
shell:
|
||||
@container="$$(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; \
|
||||
docker exec -it $$container bash
|
||||
|
||||
repo-status: ; @git remote -v && git branch --show-current && git status -sb
|
||||
repo-pull: ; @git fetch $(GIT_REMOTE) && git pull --ff-only $(GIT_REMOTE) $(GIT_BRANCH)
|
||||
repo-set-ssh: ; @git remote set-url origin git@gitea-repair:dsrptlab/repair.git && git remote -v
|
||||
repo-set-https: ; @git remote set-url origin https://gitea.dsrptlab.com/dsrptlab/repair.git && git remote -v
|
||||
Reference in New Issue
Block a user