From b38beff3de6be1513dc7da4b0e9dcb28caea9ee9 Mon Sep 17 00:00:00 2001 From: hoangvv Date: Thu, 16 Jan 2025 09:38:47 +0700 Subject: [PATCH] refactor: remove dbfilter(temp) add restore database native, download backup --- .gitea/workflows/init_setup_environment.yml | 2 +- .github/workflows/setup_docker.yml | 2 +- Jenkinsfile | 2 +- Makefile | 27 +++++++++++++++++---- setup/download_backup.sh | 6 +---- setup/gen_config.py | 6 ++--- 6 files changed, 29 insertions(+), 16 deletions(-) diff --git a/.gitea/workflows/init_setup_environment.yml b/.gitea/workflows/init_setup_environment.yml index bc855bebc..26be59b9d 100644 --- a/.gitea/workflows/init_setup_environment.yml +++ b/.gitea/workflows/init_setup_environment.yml @@ -93,7 +93,7 @@ jobs: - name: Restore Database if: contains(github.event.head_commit.message, '@restore_db') - run: make restore_database + run: make restore_database_docker - name: Run Tests if: contains(github.event.head_commit.message, '@run_test') diff --git a/.github/workflows/setup_docker.yml b/.github/workflows/setup_docker.yml index 9b29e8533..e718ce5c4 100644 --- a/.github/workflows/setup_docker.yml +++ b/.github/workflows/setup_docker.yml @@ -52,7 +52,7 @@ jobs: run: sleep 30s - name: Restore Database - run: make restore_database + run: make restore_database_docker - name: Run Tests run: make run_test_docker diff --git a/Jenkinsfile b/Jenkinsfile index 099bdd80e..6708f10ea 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -16,7 +16,7 @@ node('Node-Dev-100163') { } stage('Start'){ sh 'make run_server_docker' - sh 'make restore_database' + sh 'make restore_database_docker' } stage('Testing') { sh 'make run_test_docker' diff --git a/Makefile b/Makefile index 2d932b414..dc4ebbb43 100644 --- a/Makefile +++ b/Makefile @@ -23,24 +23,41 @@ CONTAINER_ID=${PROJECT}-${TAG} VERSION := community ADDONS=${PWD}/addons,${PWD}/odoo/addons BACKUP=${CDN}/raw/branch/main/backup/${VERSION}/odoo18-main_2025-01-15_08-05-47.zip + install: sudo apt update -y && \ sudo apt install -y python3-pip libldap2-dev libpq-dev libsasl2-dev postgresql-client && \ ${PIP} install --no-input -r requirements.txt --break-system-packages -gen_config: +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: download_backup ${PWD}/setup/init_config.sh --native ${ADDONS} 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 "Enter the database name: " DBNAME; \ + echo "Restoring database: $$DBNAME"; \ + ${PYTHON} odoo-bin db --config=${CONFIG} load $$DBNAME ${PWD}/deployment/backup/backup.zip + ##### 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: - ${PWD}/setup/init_config.sh --docker ${ODOO_IMAGE} ${TAG} ${CONTAINER_ID} && \ - ${SETUP_PATH}/download_backup.sh ${BACKUP} +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: @@ -55,7 +72,7 @@ run_server_docker: ${DOCKER_COMPOSE_CMD} up -d update_tag: ${SETUP_PATH}/update_tag.sh $(CURR_BRANCH) -restore_database: +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 \ diff --git a/setup/download_backup.sh b/setup/download_backup.sh index 9da43a9c0..f213445c4 100755 --- a/setup/download_backup.sh +++ b/setup/download_backup.sh @@ -50,9 +50,8 @@ ColorReset() { main() { DEPLOYMENT_DIR=$(pwd)/deployment BACKUP_DIR="$DEPLOYMENT_DIR/backup" - BACKUP_FILE="$BACKUP_DIR/backup.zip" DOWNLOAD_URL="$1" - + BACKUP_FILE="$BACKUP_DIR/$2" # Check if the deployment and backup directories exist, create them if not if [[ ! -d "$BACKUP_DIR" ]]; then echo "Backup directory does not exist. Creating: $BACKUP_DIR" @@ -78,9 +77,6 @@ main() { Show 1 "Error: Backup file was not downloaded." exit 1 fi - - # Execute the Docker command - Show 2 "Running Docker command to load the backup..." } main "$@" \ No newline at end of file diff --git a/setup/gen_config.py b/setup/gen_config.py index 03d925fd0..b0a38390e 100644 --- a/setup/gen_config.py +++ b/setup/gen_config.py @@ -33,7 +33,7 @@ def main(): parser.add_argument('--db_pass', type=str, help='') parser.add_argument('--deploy_path', type=str, help='') parser.add_argument('--addons_path', type=str, help='') - parser.add_argument('--db_filter', type=str, help='') + # parser.add_argument('--db_filter', type=str, help='') parser.add_argument('--db_port', type=int, help='') parser.add_argument('--db_server', type=str, help='') args = parser.parse_args() @@ -44,7 +44,7 @@ def main(): app_port = find_available_port(8069) addons_path = args.addons_path base_dir= args.deploy_path - db_filter= args.db_filter + # db_filter= args.db_filter # Copy template files 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") @@ -59,7 +59,7 @@ def main(): config['options']['db_port'] = str(db_port) config['options']['addons_path'] = addons_path config['options']['xmlrpc_port'] = str(app_port) - config['options']['dbfilter'] = str(db_filter) + config['options']['dbfilter'] = ".*" config['options']['proxy_mode'] = "True" with open(f'{base_dir}/odoo.conf', 'w') as configfile: config.write(configfile)