140 lines
5.0 KiB
Makefile
140 lines
5.0 KiB
Makefile
ifneq ("$(wildcard .env)", "")
|
|
include .env
|
|
endif
|
|
ifneq ("$(wildcard automation/automation.mk)", "")
|
|
include automation/automation.mk
|
|
endif
|
|
.SHELLFLAGS += ${SHELLFLAGS} -e
|
|
PWD = $(shell pwd)
|
|
UID = $(shell id -u)
|
|
GID = $(shell id -g)
|
|
PIP=${PWD}/venv/bin/pip
|
|
PYTHON=${PWD}/venv/bin/python
|
|
VENV := $(shell [ -d "${PWD}/venv" ] && echo "exists" || echo "missing")
|
|
DOCKERCMD=docker
|
|
DOCKER_COMPOSE_CMD=docker-compose
|
|
DOCKER_BUILD=$(DOCKERCMD) build
|
|
DOCKER_PUSH=$(DOCKERCMD) push
|
|
DOCKER_IMAGE=$(DOCKERCMD) image
|
|
DOCKER_EXEC=$(DOCKERCMD) exec
|
|
DEPLOY_PATH=${PWD}/deployment
|
|
SETUP_PATH=${PWD}/setup
|
|
CONFIG=odoo.conf
|
|
HUB=hub.nextzenos.com
|
|
CDN=https://cdn.nextzenos.com/CDN/NextERP
|
|
ORGANIZATION=nexterp
|
|
PROJECT := odoo18
|
|
ODOO_IMAGE=${HUB}/${ORGANIZATION}/$(PROJECT)
|
|
TAG := $(shell git rev-parse --abbrev-ref HEAD)
|
|
CONTAINER_ID=${PROJECT}-${TAG}
|
|
VERSION := community
|
|
ADDONS=${PWD}/addons,${PWD}/odoo/addons,${PWD}/extra-addons
|
|
BACKUP=${CDN}/raw/branch/main/backup/${VERSION}/odoo18-main_2025-01-15_08-05-47.zip
|
|
|
|
AUTOMATION_PATH=${PWD}/automation
|
|
|
|
########### Automation #########
|
|
deploy-native:
|
|
@echo "Not implemented"
|
|
##### Virtual Environment #####
|
|
|
|
check-virtualenv:
|
|
@if [ "$(VENV)" = "missing" ]; then \
|
|
echo "Creating virtual environment..."; \
|
|
python3 -m venv venv; \
|
|
echo "Installing pip dependencies..."; \
|
|
$(PIP) install --upgrade pip; \
|
|
else \
|
|
echo "Skipping Creating virtual environment..."; \
|
|
fi;
|
|
##### Native Deployment#########
|
|
install: check-virtualenv
|
|
sudo apt update -y && \
|
|
sudo apt install -y python3-pip libldap2-dev libpq-dev libsasl2-dev postgresql-client libreoffice wkhtmltopdf ansible terraform&& \
|
|
${PIP} install --no-input -r requirements.txt --break-system-packages
|
|
download_backup:
|
|
@if [ -z "${LINKDB}" ]; then \
|
|
LinkDB=${BACKUP}; \
|
|
read -p "LinkDownload [default: ${BACKUP}]: " InputLinkDB; \
|
|
LinkDB=$${InputLinkDB:-${BACKUP}}; \
|
|
else \
|
|
LinkDB=${LINKDB}; \
|
|
fi; \
|
|
Filename=$$(basename $$LinkDB); \
|
|
echo "Downloading $$Filename from: $$LinkDB"; \
|
|
${PWD}/setup/download_backup.sh $$LinkDB backup.zip
|
|
gen_config:
|
|
$(MAKE) download_backup LINKDB=${BACKUP}
|
|
${PWD}/setup/init_config.sh --native ${ADDONS} ${DB_USER} ${DB_PASSWORD} ${DB_SERVER} ${DB_PORT}
|
|
run_server:
|
|
${PYTHON} odoo-bin --config=${CONFIG}
|
|
run_test:
|
|
${PYTHON} odoo-bin --test-tags :TestAccountMove.test_out_invoice_auto_post_monthly,TestAccountMove.test_included_tax --log-level=test --test-enable -d testdb-${TAG} --stop-after-init --config=${CONFIG}
|
|
${PYTHON} odoo-bin db --config=${CONFIG} drop testdb-${TAG}
|
|
restore_database:
|
|
@read -p "Backup Path [default: ${PWD}/deployment/backup/backup.zip]: " InputbackupDB; \
|
|
BackupDB=$${InputbackupDB:-${PWD}/deployment/backup/backup.zip}; \
|
|
read -p "Enter the database name: " DBNAME; \
|
|
echo "Restoring database: $$DBNAME"; \
|
|
${PYTHON} odoo-bin db --config=${CONFIG} load "$$DBNAME" "$$BackupDB"
|
|
scaffold_module:
|
|
read -p "Module Name: " ModuleName; \
|
|
read -p "addons Path[eg:addons, extra-addons, exercise]: " ModulePath; \
|
|
${PYTHON} odoo-bin scaffold $$ModuleName && \
|
|
mv $$ModuleName ${PWD}/$$ModulePath;
|
|
cleanup_addons:
|
|
@bash ${PWD}/setup/clean_up_addons.sh $(shell echo $(ADDONS) | tr ',' ' ')
|
|
install_modules:
|
|
${PYTHON} odoo-bin --config=${CONFIG} -d ${DATABASE} -i ${MODULES} --xmlrpc-port=${PORT}
|
|
upgrade_modules:
|
|
${PYTHON} odoo-bin upgrade_code --addons-path ${ADDONS} --from ${OLD_VER} --to ${NEW_VER}
|
|
|
|
##### Docker Deployment #########
|
|
run_test_docker:
|
|
sudo ${DOCKER_EXEC} ${CONTAINER_ID} odoo --test-tags :TestAccountMove.test_out_invoice_auto_post_monthly,TestAccountMove.test_included_tax --log-level=test --test-enable -d testdb-${TAG} --stop-after-init --config=/etc/odoo/${CONFIG} --xmlrpc-port=8071 && \
|
|
sudo ${DOCKER_EXEC} ${CONTAINER_ID} odoo db --config=/etc/odoo/${CONFIG} drop testdb-${TAG}
|
|
gen_config_docker:
|
|
$(MAKE) download_backup LINKDB=${BACKUP}
|
|
${PWD}/setup/init_config.sh --docker ${ODOO_IMAGE} ${TAG} ${CONTAINER_ID}
|
|
build_image:
|
|
DOCKER_BUILDKIT=1 ${DOCKER_BUILD} . --progress plain --tag ${ODOO_IMAGE}:${TAG}
|
|
push_image:
|
|
$(DOCKER_PUSH) ${ODOO_IMAGE}:${TAG}
|
|
run_server_docker:
|
|
@if ! docker ps | grep -q "${CONTAINER_ID}"; then \
|
|
echo "Container not found. Running docker-compose up -d"; \
|
|
else \
|
|
echo "Container already running. Skipping docker-compose up -d."; \
|
|
fi
|
|
cd ${DEPLOY_PATH} &&\
|
|
${DOCKER_COMPOSE_CMD} up -d
|
|
update_tag:
|
|
${SETUP_PATH}/update_tag.sh $(CURR_BRANCH)
|
|
restore_database_docker:
|
|
sudo ${DOCKER_EXEC} ${CONTAINER_ID} odoo db -c /etc/odoo/odoo.conf load backup /var/lib/odoo/backup/backup.zip
|
|
stop_server_docker:
|
|
@if ! docker ps | grep -q "${CONTAINER_ID}"; then \
|
|
echo "Container not found. Skipping"; \
|
|
else \
|
|
cd ${DEPLOY_PATH} &&\
|
|
${DOCKER_COMPOSE_CMD} down; \
|
|
fi
|
|
clean_up:
|
|
@if ! docker ps | grep -q "${CONTAINER_ID}"; then \
|
|
echo "Container not found. Skipping"; \
|
|
else \
|
|
cd ${DEPLOY_PATH} &&\
|
|
${DOCKER_COMPOSE_CMD} down; \
|
|
fi
|
|
find "${DEPLOY_PATH}" -mindepth 1 -maxdepth 1 \
|
|
! -name "etc" \
|
|
! -name "addons" \
|
|
! -name "backup" \
|
|
! -name "*.sh" \
|
|
! -name "*.template" \
|
|
! -name "*.py" \
|
|
! -name "*.yml" \
|
|
-print0 | sudo xargs -0 rm -rf {} && \
|
|
sudo rm -rf ${DEPLOY_PATH}/etc/*
|
|
|