diff --git a/Makefile b/Makefile index 2a1adb4af..25372095e 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,3 @@ -include deployment/.env .SHELLFLAGS += ${SHELLFLAGS} -e PWD = $(shell pwd) UID = $(shell id -u) @@ -15,10 +14,10 @@ CONFIG=odoo.conf install: sudo apt install python3-pip libldap2-dev libpq-dev libsasl2-dev && \ pip install -r requirements.txt -test: +run_test: ${PYTHON} odoo-bin -i all_modules --log-level=test --test-enable -d testdb --stop-after-init --config=${CONFIG} -update_env: - @awk '/^ODOO_TAG=/ { $$0 = "ODOO_TAG=${BRANCH}" } 1' ${DEPLOY_PATH}/.env > ${DEPLOY_PATH}/.env.tmp && mv ${DEPLOY_PATH}/.env.tmp ${DEPLOY_PATH}/.env +gen_env: + ${PWD}/setup/init_env.sh build-image: update_env DOCKER_BUILDKIT=1 ${DOCKER_BUILD} . --progress plain --tag ${ODOO_IMAGE} push-image: diff --git a/deployment/env.template b/deployment/env.template new file mode 100644 index 000000000..d3d90d1a6 --- /dev/null +++ b/deployment/env.template @@ -0,0 +1,12 @@ +#Odoo +ODOO_IMAGE= +ODOO_TAG= +ODOO_PORT=10017 +# ODOO_CHAT_PORT= +ODOO_ADDONS=./addons +ODOO_CONFIG=./etc +#Database +PG_DB= +PG_USER= +PG_PASS= +ENTRYPOINT=./entrypoint.sh diff --git a/setup/init_env.sh b/setup/init_env.sh new file mode 100755 index 000000000..13c54e085 --- /dev/null +++ b/setup/init_env.sh @@ -0,0 +1,209 @@ +#!/usr/bin/bash + +export PATH=/usr/sbin:$PATH +export DEBIAN_FRONTEND=noninteractive + +set -euo pipefail +ODOO_IMAGE='hub.nextzenos.com/nexterp/odoo' +DEPLOY_PATH=$(pwd)/deployment +PG_DB=nexterp +PG_USER=nexterp +CURRENT_BRANCH=$(git symbolic-ref --short HEAD) +ODOO_ADDONS=./addons +ODOO_CONFIG=./etc +# System +DEPENDS_PACKAGE=('wget' 'curl' 'git' 'unzip') +DEPENDS_COMMAND=('wget' 'curl' 'git' 'unzip') +((EUID)) && sudo_cmd="sudo" || sudo_cmd="" +readonly MINIMUM_DOCER_VERSION="20" +UNAME_U="$(uname -s)" +readonly UNAME_U +readonly COLOUR_RESET='\e[0m' +readonly aCOLOUR=( + '\e[38;5;154m' # green | Lines, bullets and separators + '\e[1m' # Bold white | Main descriptions + '\e[90m' # Grey | Credits + '\e[91m' # Red | Update notifications Alert + '\e[33m' # Yellow | Emphasis +) +trap 'onCtrlC' INT +onCtrlC() { + echo -e "${COLOUR_RESET}" + exit 1 +} + +Show() { + # OK + if (($1 == 0)); then + echo -e "${aCOLOUR[2]}[$COLOUR_RESET${aCOLOUR[0]} OK $COLOUR_RESET${aCOLOUR[2]}]$COLOUR_RESET $2" + # FAILED + elif (($1 == 1)); then + echo -e "${aCOLOUR[2]}[$COLOUR_RESET${aCOLOUR[3]}FAILED$COLOUR_RESET${aCOLOUR[2]}]$COLOUR_RESET $2" + exit 1 + # INFO + elif (($1 == 2)); then + echo -e "${aCOLOUR[2]}[$COLOUR_RESET${aCOLOUR[0]} INFO $COLOUR_RESET${aCOLOUR[2]}]$COLOUR_RESET $2" + # NOTICE + elif (($1 == 3)); then + echo -e "${aCOLOUR[2]}[$COLOUR_RESET${aCOLOUR[4]}NOTICE$COLOUR_RESET${aCOLOUR[2]}]$COLOUR_RESET $2" + fi +} + +Warn() { + echo -e "${aCOLOUR[3]}$1$COLOUR_RESET" +} + +GreyStart() { + echo -e "${aCOLOUR[2]}\c" +} + +ColorReset() { + echo -e "$COLOUR_RESET\c" +} + + +Update_Package_Resource() { + GreyStart + if [ -x "$(command -v apk)" ]; then + ${sudo_cmd} apk update + elif [ -x "$(command -v apt)" ]; then + ${sudo_cmd} apt update + elif [ -x "$(command -v dnf)" ]; then + ${sudo_cmd} dnf check-update + elif [ -x "$(command -v zypper)" ]; then + ${sudo_cmd} zypper update + elif [ -x "$(command -v yum)" ]; then + ${sudo_cmd} yum update + fi + ColorReset +} +# 3 Check OS +Check_OS() { + if [[ $UNAME_U == *Linux* ]]; then + Show 0 "Your System is : $UNAME_U" + else + Show 1 "This script is only for Linux." + exit 1 + fi +} +Generate_Env(){ + if [[ "$CURRENT_BRANCH" == "main" ]]; then + ODOO_TAG="latest" + else + ODOO_TAG="$CURRENT_BRANCH" + fi + if [[ ! -f "${DEPLOY_PATH}/.env" ]]; then + cp "${DEPLOY_PATH}/env.template" "${DEPLOY_PATH}/.env" + fi + + sed -i \ + -e "s|^PG_DB=.*|PG_DB=${PG_DB:=odoo}|" \ + -e "s|^PG_USER=.*|PG_USER=${PG_USER:=changeme}|" \ + -e "s|^PG_PASS=.*|PG_PASS=$(tr -dc A-Za-z0-9