Merge branch 'develop'
This commit is contained in:
commit
f5005f3fa5
7
Jenkinsfile
vendored
7
Jenkinsfile
vendored
@ -4,6 +4,9 @@ node('Node-Dev-100163') {
|
|||||||
echo 'Pulling...' + env.BRANCH_NAME
|
echo 'Pulling...' + env.BRANCH_NAME
|
||||||
checkout scm
|
checkout scm
|
||||||
}
|
}
|
||||||
|
stage('Cleanup') {
|
||||||
|
sh 'make clean_up'
|
||||||
|
}
|
||||||
stage('Build') {
|
stage('Build') {
|
||||||
sh 'make install'
|
sh 'make install'
|
||||||
sh 'make stop_server_docker'
|
sh 'make stop_server_docker'
|
||||||
@ -12,6 +15,7 @@ node('Node-Dev-100163') {
|
|||||||
}
|
}
|
||||||
stage('Start'){
|
stage('Start'){
|
||||||
sh 'make run_server_docker'
|
sh 'make run_server_docker'
|
||||||
|
sh 'make restore_database'
|
||||||
}
|
}
|
||||||
stage('Testing') {
|
stage('Testing') {
|
||||||
sh 'make run_test_docker'
|
sh 'make run_test_docker'
|
||||||
@ -19,9 +23,6 @@ node('Node-Dev-100163') {
|
|||||||
stage('Publish') {
|
stage('Publish') {
|
||||||
sh 'make push_image'
|
sh 'make push_image'
|
||||||
}
|
}
|
||||||
// stage('Cleanup') {
|
|
||||||
// sh 'make clean_up'
|
|
||||||
// }
|
|
||||||
currentBuild.result = "SUCCESS" // Set success status after all stages complete
|
currentBuild.result = "SUCCESS" // Set success status after all stages complete
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
currentBuild.result = "FAILURE"
|
currentBuild.result = "FAILURE"
|
||||||
|
15
Makefile
15
Makefile
@ -13,13 +13,14 @@ SETUP_PATH=${PWD}/setup
|
|||||||
HASH := $(shell git rev-parse HEAD)
|
HASH := $(shell git rev-parse HEAD)
|
||||||
CONFIG=odoo.conf
|
CONFIG=odoo.conf
|
||||||
ODOO_IMAGE=hub.nextzenos.com/nexterp/odoo
|
ODOO_IMAGE=hub.nextzenos.com/nexterp/odoo
|
||||||
TAG := main
|
TAG := develop
|
||||||
CONTAINER_ID=odoo-${TAG}
|
CONTAINER_ID=odoo-${TAG}
|
||||||
install:
|
install:
|
||||||
sudo apt -y update && \
|
sudo apt -y update && \
|
||||||
sudo apt install -y python3-full python3-pip libldap2-dev libpq-dev libsasl2-dev
|
sudo apt install -y python3-full python3-pip libldap2-dev libpq-dev libsasl2-dev
|
||||||
run_test_docker:
|
run_test_docker:
|
||||||
sudo docker exec ${CONTAINER_ID} odoo --test-tags=account --log-level=test --test-enable -d testdb --stop-after-init --config=/etc/odoo/${CONFIG} --xmlrpc-port=8071
|
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 --stop-after-init --config=/etc/odoo/${CONFIG} --xmlrpc-port=8071 && \
|
||||||
|
sudo docker exec ${CONTAINER_ID} odoo db --config=/etc/odoo/${CONFIG} drop testdb
|
||||||
run_test_local:
|
run_test_local:
|
||||||
odoo-bin -i all_modules --log-level=test --test-enable -d testdb --stop-after-init --config=${CONFIG}
|
odoo-bin -i all_modules --log-level=test --test-enable -d testdb --stop-after-init --config=${CONFIG}
|
||||||
gen_config:
|
gen_config:
|
||||||
@ -38,6 +39,15 @@ run_server_docker:
|
|||||||
fi
|
fi
|
||||||
cd ${DEPLOY_PATH} &&\
|
cd ${DEPLOY_PATH} &&\
|
||||||
${DOCKER_COMPOSE_CMD} up -d
|
${DOCKER_COMPOSE_CMD} up -d
|
||||||
|
restore_database:
|
||||||
|
@echo "Checking for backup.zip in container..."
|
||||||
|
@if sudo docker exec ${CONTAINER_ID} test -f /etc/odoo/backup/backup.zip; then \
|
||||||
|
echo "Restoring database from backup..."; \
|
||||||
|
sudo docker exec ${CONTAINER_ID} odoo db --config=/etc/odoo/${CONFIG} load new_db /etc/odoo/backup/backup.zip; \
|
||||||
|
else \
|
||||||
|
echo "Error: backup.zip not found in container. Aborting restore."; \
|
||||||
|
fi
|
||||||
|
|
||||||
stop_server_docker:
|
stop_server_docker:
|
||||||
@if ! docker ps | grep -q "${CONTAINER_ID}"; then \
|
@if ! docker ps | grep -q "${CONTAINER_ID}"; then \
|
||||||
echo "Container not found. Skipping"; \
|
echo "Container not found. Skipping"; \
|
||||||
@ -55,6 +65,7 @@ clean_up:
|
|||||||
find "${DEPLOY_PATH}" -mindepth 1 -maxdepth 1 \
|
find "${DEPLOY_PATH}" -mindepth 1 -maxdepth 1 \
|
||||||
! -name "etc" \
|
! -name "etc" \
|
||||||
! -name "addons" \
|
! -name "addons" \
|
||||||
|
! -name "backup" \
|
||||||
! -name "*.sh" \
|
! -name "*.sh" \
|
||||||
! -name "*.template" \
|
! -name "*.template" \
|
||||||
! -name "*.py" \
|
! -name "*.py" \
|
||||||
|
@ -19,6 +19,7 @@ services:
|
|||||||
- ${ENTRYPOINT:-./entrypoint.sh}:/entrypoint.sh # use for install additional package (Optional)
|
- ${ENTRYPOINT:-./entrypoint.sh}:/entrypoint.sh # use for install additional package (Optional)
|
||||||
- ${ODOO_ADDONS:-./addons}:/mnt/extra-addons
|
- ${ODOO_ADDONS:-./addons}:/mnt/extra-addons
|
||||||
- ${ODOO_CONFIG:-./etc}:/etc/odoo
|
- ${ODOO_CONFIG:-./etc}:/etc/odoo
|
||||||
|
- ${ODOO_BACKUP:-./backup/ce}:/etc/odoo/backup
|
||||||
restart: always
|
restart: always
|
||||||
db:
|
db:
|
||||||
image: postgres:16
|
image: postgres:16
|
||||||
@ -26,7 +27,7 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
- POSTGRES_USER=${PG_USER:-changeme}
|
- POSTGRES_USER=${PG_USER:-changeme}
|
||||||
- POSTGRES_PASSWORD=${PG_PASS:-password}
|
- POSTGRES_PASSWORD=${PG_PASS:-password}
|
||||||
- POSTGRES_DB=${PG_DB:-postgres}
|
- POSTGRES_DB=postgres
|
||||||
ports:
|
ports:
|
||||||
- ${PG_PORT:-5432}:5432
|
- ${PG_PORT:-5432}:5432
|
||||||
restart: always
|
restart: always
|
||||||
|
@ -7,6 +7,7 @@ ODOO_CONTAINER=
|
|||||||
# ODOO_CHAT_PORT=
|
# ODOO_CHAT_PORT=
|
||||||
ODOO_ADDONS=./addons
|
ODOO_ADDONS=./addons
|
||||||
ODOO_CONFIG=./etc
|
ODOO_CONFIG=./etc
|
||||||
|
ODOO_BACKUP=./backup/ce
|
||||||
#Database
|
#Database
|
||||||
PG_PORT=
|
PG_PORT=
|
||||||
PG_DB=
|
PG_DB=
|
||||||
|
10
deployment/etc/odoo.conf
Normal file
10
deployment/etc/odoo.conf
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
[options]
|
||||||
|
addons_path = /mnt/extra-addons
|
||||||
|
data_dir = /var/lib/odoo
|
||||||
|
db_host = db
|
||||||
|
db_port = 5432
|
||||||
|
db_user = nexterp
|
||||||
|
db_password = smartyourlife
|
||||||
|
proxy_mode = True
|
||||||
|
|
||||||
|
|
@ -1,59 +0,0 @@
|
|||||||
#!/usr/bin/bash
|
|
||||||
|
|
||||||
export PATH=/usr/sbin:$PATH
|
|
||||||
export DEBIAN_FRONTEND=noninteractive
|
|
||||||
|
|
||||||
set -euo pipefail
|
|
||||||
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"
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
stop_test_db() {
|
|
||||||
cd "$(pwd)/testing_env"
|
|
||||||
Show 2 "Stopping containers..."
|
|
||||||
docker-compose down
|
|
||||||
rm -f "$(find . -type f \( -name "*.yml" -o -name "*.template" \) -not -name "docker-compose.yml" -not -name "env.template" )"
|
|
||||||
Show 0 "Test Server is offline"
|
|
||||||
}
|
|
||||||
|
|
||||||
stop_test_db
|
|
@ -38,24 +38,24 @@ def main():
|
|||||||
parser.add_argument('--db_port', type=int, help='')
|
parser.add_argument('--db_port', type=int, help='')
|
||||||
parser.add_argument('--db_user', type=str, help='')
|
parser.add_argument('--db_user', type=str, help='')
|
||||||
parser.add_argument('--deploy_path', type=str, help='')
|
parser.add_argument('--deploy_path', type=str, help='')
|
||||||
parser.add_argument('--db', type=str, help='')
|
|
||||||
parser.add_argument('--image', type=str, help='')
|
parser.add_argument('--image', type=str, help='')
|
||||||
parser.add_argument('--tag', type=str, help='')
|
parser.add_argument('--tag', type=str, help='')
|
||||||
parser.add_argument('--addons', type=str, help='')
|
parser.add_argument('--addons', type=str, help='')
|
||||||
parser.add_argument('--config', type=str, help='')
|
parser.add_argument('--config', type=str, help='')
|
||||||
parser.add_argument('--container', type=str, help='')
|
parser.add_argument('--container', type=str, help='')
|
||||||
|
parser.add_argument('--backup', type=str, help='')
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
db_port = args.db_port
|
db_port = args.db_port
|
||||||
db_pass = "smartyourlife"
|
db_pass = "smartyourlife"
|
||||||
db_user = args.db_user
|
db_user = args.db_user
|
||||||
base_dir= args.deploy_path
|
base_dir= args.deploy_path
|
||||||
db_name=args.db
|
|
||||||
image=args.image
|
image=args.image
|
||||||
tag=args.tag
|
tag=args.tag
|
||||||
container=args.container
|
container=args.container
|
||||||
addons=args.addons
|
addons=args.addons
|
||||||
config_path=args.config
|
config_path=args.config
|
||||||
app_port = 10017
|
app_port = 10017
|
||||||
|
backup = args.backup
|
||||||
# Copy template files
|
# Copy template files
|
||||||
os.makedirs(f"{base_dir}/etc", exist_ok=True)
|
os.makedirs(f"{base_dir}/etc", exist_ok=True)
|
||||||
color_log.Show(3,f"Copy {base_dir}/odoo.conf.template to {base_dir}/etc/odoo.conf")
|
color_log.Show(3,f"Copy {base_dir}/odoo.conf.template to {base_dir}/etc/odoo.conf")
|
||||||
@ -79,7 +79,6 @@ def main():
|
|||||||
env_file_path = Path("deployment/.env")
|
env_file_path = Path("deployment/.env")
|
||||||
set_key(dotenv_path=env_file_path, key_to_set="COMPOSE_PROJECT_NAME", value_to_set=f"odoo-{tag}",quote_mode="never")
|
set_key(dotenv_path=env_file_path, key_to_set="COMPOSE_PROJECT_NAME", value_to_set=f"odoo-{tag}",quote_mode="never")
|
||||||
set_key(dotenv_path=env_file_path, key_to_set="PG_PORT", value_to_set=find_available_port(5432),quote_mode="never")
|
set_key(dotenv_path=env_file_path, key_to_set="PG_PORT", value_to_set=find_available_port(5432),quote_mode="never")
|
||||||
set_key(dotenv_path=env_file_path, key_to_set="PG_DB", value_to_set=db_name,quote_mode="never")
|
|
||||||
set_key(dotenv_path=env_file_path, key_to_set="PG_USER", value_to_set=db_user,quote_mode="never")
|
set_key(dotenv_path=env_file_path, key_to_set="PG_USER", value_to_set=db_user,quote_mode="never")
|
||||||
set_key(dotenv_path=env_file_path, key_to_set="PG_PASS", value_to_set=db_pass,quote_mode="never")
|
set_key(dotenv_path=env_file_path, key_to_set="PG_PASS", value_to_set=db_pass,quote_mode="never")
|
||||||
set_key(dotenv_path=env_file_path, key_to_set="ODOO_CONFIG", value_to_set=config_path,quote_mode="never")
|
set_key(dotenv_path=env_file_path, key_to_set="ODOO_CONFIG", value_to_set=config_path,quote_mode="never")
|
||||||
@ -88,5 +87,9 @@ def main():
|
|||||||
set_key(dotenv_path=env_file_path, key_to_set="ODOO_IMAGE", value_to_set=image,quote_mode="never")
|
set_key(dotenv_path=env_file_path, key_to_set="ODOO_IMAGE", value_to_set=image,quote_mode="never")
|
||||||
set_key(dotenv_path=env_file_path, key_to_set="ODOO_TAG", value_to_set=tag,quote_mode="never")
|
set_key(dotenv_path=env_file_path, key_to_set="ODOO_TAG", value_to_set=tag,quote_mode="never")
|
||||||
set_key(dotenv_path=env_file_path, key_to_set="ODOO_CONTAINER", value_to_set=container,quote_mode="never")
|
set_key(dotenv_path=env_file_path, key_to_set="ODOO_CONTAINER", value_to_set=container,quote_mode="never")
|
||||||
|
if (backup == 'community'):
|
||||||
|
set_key(dotenv_path=env_file_path, key_to_set="ODOO_BACKUP", value_to_set=f'{base_dir}/backup/ce',quote_mode="never")
|
||||||
|
if (backup == 'enterprise'):
|
||||||
|
set_key(dotenv_path=env_file_path, key_to_set="ODOO_BACKUP", value_to_set=f'{base_dir}/backup/enterprise',quote_mode="never")
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
main()
|
main()
|
||||||
|
@ -8,7 +8,6 @@ SETUP_PATH=$(pwd)/setup
|
|||||||
ODOO_IMAGE=$1
|
ODOO_IMAGE=$1
|
||||||
ODOO_TAG=$2
|
ODOO_TAG=$2
|
||||||
ODOO_CONTAINER=$3
|
ODOO_CONTAINER=$3
|
||||||
PG_DB=nexterp
|
|
||||||
PG_USER=nexterp
|
PG_USER=nexterp
|
||||||
ODOO_ADDONS=./addons
|
ODOO_ADDONS=./addons
|
||||||
ODOO_CONFIG=./etc
|
ODOO_CONFIG=./etc
|
||||||
@ -92,7 +91,8 @@ Generate_Config(){
|
|||||||
cp "${DEPLOY_PATH}/env.template" "${DEPLOY_PATH}/.env"
|
cp "${DEPLOY_PATH}/env.template" "${DEPLOY_PATH}/.env"
|
||||||
fi
|
fi
|
||||||
python "$SETUP_PATH/gen-config.py" --db_port 5432 --db_user $PG_USER --deploy_path "$DEPLOY_PATH" \
|
python "$SETUP_PATH/gen-config.py" --db_port 5432 --db_user $PG_USER --deploy_path "$DEPLOY_PATH" \
|
||||||
--db ${PG_DB:=odoo} --image "${ODOO_IMAGE}" --container "${ODOO_CONTAINER}" --tag "${ODOO_TAG:=latest}" --addons "${ODOO_ADDONS}" --config "${ODOO_CONFIG}"
|
--image "${ODOO_IMAGE}" --container "${ODOO_CONTAINER}" --tag "${ODOO_TAG:=latest}" \
|
||||||
|
--addons "${ODOO_ADDONS}" --config "${ODOO_CONFIG}" --backup community
|
||||||
Show 0 " Generate Config Complete"
|
Show 0 " Generate Config Complete"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user