update script

This commit is contained in:
hoangvv 2025-01-07 09:34:26 +07:00
parent 89b014868d
commit b784b63539
3 changed files with 224 additions and 4 deletions

View File

@ -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:

12
deployment/env.template Normal file
View File

@ -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

209
setup/init_env.sh Executable file
View File

@ -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 </dev/urandom | head -c 24)|" \
-e "s|^ODOO_IMAGE=.*|ODOO_IMAGE=${ODOO_IMAGE}|" \
-e "s|^ODOO_TAG=.*|ODOO_TAG=${ODOO_TAG:=latest}|" \
-e "s|^ODOO_PORT=.*|ODOO_PORT=${ODOO_PORT:=10017}|" \
-e "s|^ODOO_ADDONS=.*|ODOO_ADDONS=${ODOO_ADDONS}|" \
-e "s|^ODOO_CONFIG=.*|ODOO_CONFIG=${ODOO_CONFIG}|" \
"${DEPLOY_PATH}/.env"
Show 0 "Generate env file complete"
}
Install_Depends() {
for ((i = 0; i < ${#DEPENDS_COMMAND[@]}; i++)); do
cmd=${DEPENDS_COMMAND[i]}
if [[ ! -x $(${sudo_cmd} which "$cmd") ]]; then
packagesNeeded=${DEPENDS_PACKAGE[i]}
Show 2 "Install the necessary dependencies: \e[33m$packagesNeeded \e[0m"
GreyStart
if [ -x "$(command -v apk)" ]; then
${sudo_cmd} apk add --no-cache "$packagesNeeded"
elif [ -x "$(command -v apt-get)" ]; then
${sudo_cmd} apt-get -y -q install "$packagesNeeded" --no-upgrade
elif [ -x "$(command -v dnf)" ]; then
${sudo_cmd} dnf install "$packagesNeeded"
elif [ -x "$(command -v zypper)" ]; then
${sudo_cmd} zypper install "$packagesNeeded"
elif [ -x "$(command -v yum)" ]; then
${sudo_cmd} yum install "$packagesNeeded"
elif [ -x "$(command -v pacman)" ]; then
${sudo_cmd} pacman -S "$packagesNeeded"
elif [ -x "$(command -v paru)" ]; then
${sudo_cmd} paru -S "$packagesNeeded"
else
Show 1 "Package manager not found. You must manually install: \e[33m$packagesNeeded \e[0m"
fi
ColorReset
else
Show 2 "\e[33m ${DEPENDS_COMMAND[i]}\e[0m Installed"
fi
done
}
Check_Dependency_Installation() {
for ((i = 0; i < ${#DEPENDS_COMMAND[@]}; i++)); do
cmd=${DEPENDS_COMMAND[i]}
if [[ ! -x $(${sudo_cmd} which "$cmd") ]]; then
packagesNeeded=${DEPENDS_PACKAGE[i]}
Show 1 "Dependency \e[33m$packagesNeeded \e[0m installation failed, please try again manually!"
exit 1
fi
done
}
Check_Docker_Install() {
if [[ -x "$(command -v docker)" ]]; then
Docker_Version=$(${sudo_cmd} docker version --format '{{.Server.Version}}')
if [[ $? -ne 0 ]]; then
Install_Docker
elif [[ ${Docker_Version:0:2} -lt "${MINIMUM_DOCER_VERSION}" ]]; then
Show 1 "Recommended minimum Docker version is \e[33m${MINIMUM_DOCER_VERSION}.xx.xx\e[0m,\Current Docker verison is \e[33m${Docker_Version}\e[0m,\nPlease uninstall current Docker and rerun the CasaOS installation script."
exit 1
else
Show 0 "Current Docker verison is ${Docker_Version}."
fi
else
Install_Docker
fi
}
Install_Docker() {
Show 2 "Install the necessary dependencies: \e[33mDocker \e[0m"
if [[ ! -d "${PREFIX}/etc/apt/sources.list.d" ]]; then
${sudo_cmd} mkdir -p "${PREFIX}/etc/apt/sources.list.d"
fi
GreyStart
if [[ "${REGION}" = "CN" ]]; then
${sudo_cmd} curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
else
${sudo_cmd} curl -fsSL https://get.docker.com | bash
fi
ColorReset
if [[ $? -ne 0 ]]; then
Show 1 "Installation failed, please try again."
exit 1
else
Check_Docker_Install_Final
fi
}
Check_Docker_Install_Final() {
if [[ -x "$(command -v docker)" ]]; then
Docker_Version=$(${sudo_cmd} docker version --format '{{.Server.Version}}')
if [[ $? -ne 0 ]]; then
Install_Docker
elif [[ ${Docker_Version:0:2} -lt "${MINIMUM_DOCER_VERSION}" ]]; then
Show 1 "Recommended minimum Docker version is \e[33m${MINIMUM_DOCER_VERSION}.xx.xx\e[0m,\Current Docker verison is \e[33m${Docker_Version}\e[0m,\nPlease uninstall current Docker and rerun the CasaOS installation script."
exit 1
else
Show 0 "Current Docker verison is ${Docker_Version}."
Check_Docker_Running
fi
else
Show 1 "Installation failed, please run 'curl -fsSL https://get.docker.com | bash' and rerun the CasaOS installation script."
exit 1
fi
}
Check_OS
Update_Package_Resource
Install_Depends
Check_Dependency_Installation
Check_Docker_Install
Generate_Env