From 551e5de085a4153ad39edb778d7304ae8e8ce593 Mon Sep 17 00:00:00 2001 From: foefl Date: Fri, 12 Jun 2026 08:56:18 +0200 Subject: [PATCH] first version of build script --- pyproject.toml | 4 +- scripts/build.ps1 | 201 +++++++++++++++++++++++++++++++++++++++++- scripts/build_pdm.ps1 | 1 + 3 files changed, 203 insertions(+), 3 deletions(-) create mode 100644 scripts/build_pdm.ps1 diff --git a/pyproject.toml b/pyproject.toml index 419b353..eff43ae 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "wattanalyse" -version = "0.1.1dev1" +version = "0.1.1dev5" description = "analysis of production state messages obtained from customers" authors = [ {name = "d-opt GmbH, resp. Florian Förster", email = "f.foerster@d-opt.com"}, @@ -71,7 +71,7 @@ directory = "reports/coverage" [tool.bumpversion] -current_version = "0.1.1dev1" +current_version = "0.1.1dev5" parse = """(?x) (?P0|[1-9]\\d*)\\. (?P0|[1-9]\\d*)\\. diff --git a/scripts/build.ps1 b/scripts/build.ps1 index edb0a24..85a6557 100644 --- a/scripts/build.ps1 +++ b/scripts/build.ps1 @@ -1 +1,200 @@ -pdm build -d build/ \ No newline at end of file +[CmdletBinding()] +Param( + [switch]$NoPackaging +) + +$DEPLOYMENT_PATH = 'B:\deployments\Wattana' +$ENV_PATH = 'B:\deployments\Wattana\dopt_wattana_data-analytics' +$PY_PATH = Join-Path -Path $ENV_PATH -ChildPath 'python' +$SRC_PATH = (Get-Location).Path + +function create_folder { + param ( + [string]$base_path, + [string]$folder_name + ) + $target_path = Join-Path -Path $base_path -ChildPath $folder_name + + if (-not (Test-Path -Path $target_path)){ + Write-Output "[PWSH] Folder >$folder_name< not existing. Create..." + New-Item -Path $target_path -ItemType Directory + } + else { + Write-Output "Folder >$folder_name< already exists." + } + +} + +Write-Output "Build Pipeline for d-opt Wattana (wattanalyse) project" + +Write-Output "Delete existing artifacts..." +$pattern = "dopt_wattana_data-analytics_v*" +Get-ChildItem -Path $DEPLOYMENT_PATH -Filter $pattern | Remove-Item -Recurse -Force +if ($? -eq $false){ + Write-Output "[PWSH] Exiting script because there were errors in the deletion procedure" + Exit +} +Write-Output "Deleted outstanding artifacts successfully" + + +Write-Output "Create folders..." +create_folder -base_path $ENV_PATH -folder_name 'data' +create_folder -base_path $ENV_PATH -folder_name 'data/logs' +create_folder -base_path $ENV_PATH -folder_name 'config' + + +# $data_folder = Join-Path -Path $ENV_PATH -ChildPath 'data' + +# if (-not (Test-Path -Path $data_folder)){ +# Write-Output "[PWSH] Data path not existing. Create..." +# New-Item -Path $data_folder -ItemType Directory +# } +# else { +# Write-Output "Data path already exists." +# } + + +Write-Output "Building package..." +.\scripts\publish.ps1 +if ($? -eq $false){ + Write-Output "[PWSH] Exiting script because there were build errors" + Exit +} +Write-Output "Built package successfully" + +# TODO documentation +# Write-Output "Generate docs..." +# .\scripts\cvt_docs.ps1 +# if ($? -eq $false){ +# Write-Output "[PWSH] Exiting script because there errors while generating the doc files" +# Exit +# } +# Write-Output "Generated doc files successfully" +# Write-Output "Copying doc files..." +# $docs_src_path = Join-Path -Path $SRC_PATH -ChildPath 'docs\*.pdf' +# Copy-Item -Path $docs_src_path -Destination $ENV_PATH -Force +# if ($? -eq $false){ +# Write-Output "[PWSH] Exiting script because there were errors while copying the doc files" +# Exit +# } +# Write-Output "Copied doc files successfully" + + +Write-Output "Go into env directory..." +Set-Location $ENV_PATH +Write-Output "Install package into environment..." +pycage venv add -p -i http://localhost:8001/simple/ wattanalyse +if ($? -eq $false){ + Write-Output "[PWSH] Exiting script because there were errors while installing the package into the environment" + Exit +} +Write-Output "Successfully installed package" + +# copy database file +# Write-Output "Copying database files..." +# $copy_file = Join-Path -Path $SRC_PATH -ChildPath 'data/db/wce_grunderfassung.db' +# $dest_file = Join-Path -Path $ENV_PATH -ChildPath 'data' +# Copy-Item -Path $copy_file -Destination $dest_file -Force +# if ($? -eq $false){ +# Write-Output "[PWSH] Exiting script because there were errors while copying database 'Grunderfassung'" +# Exit +# } +# $copy_file = Join-Path -Path $SRC_PATH -ChildPath 'data/db/wce_crm.db' +# Copy-Item -Path $copy_file -Destination $dest_file -Force +# if ($? -eq $false){ +# Write-Output "[PWSH] Exiting script because there were errors while copying database 'CRM'" +# Exit +# } +# Write-Output "Copied database files successfully" + +# copy .env file +Write-Output "Copying ENV file..." +$env_file = Join-Path -Path $SRC_PATH -ChildPath 'deployment/.env' +$env_dest_path = Join-Path -Path $PY_PATH -ChildPath '.env' +Copy-Item -Path $env_file -Destination $env_dest_path -Force +if ($? -eq $false){ + Write-Output "[PWSH] Exiting script because there were errors while copying ENV file" + Exit +} +Write-Output "Copied ENV file successfully" + +# copy config file +Write-Output "Copying ENV file..." +$env_file = Join-Path -Path $SRC_PATH -ChildPath 'config/wattana.toml' +$env_dest_path = Join-Path -Path $ENV_PATH -ChildPath 'config' +Copy-Item -Path $env_file -Destination $env_dest_path -Force +if ($? -eq $false){ + Write-Output "[PWSH] Exiting script because there were errors while copying config file" + Exit +} +Write-Output "Copied config file successfully" + +# TODO check needed? +# copy startup script files +# Write-Output "Copying startup scripts..." +# $copy_file = Join-Path -Path $SRC_PATH -ChildPath 'scripts/start.bat' +# Copy-Item -Path $copy_file -Destination $ENV_PATH -Force +# if ($? -eq $false){ +# Write-Output "[PWSH] Exiting script because there were errors while copying startup scripts" +# Exit +# } +# Write-Output "Copied startup scripts successfully" + + +# env preparation +Write-Output "Preparing environment with cleanup and pre-compilation..." +pycage clean dist-info +if ($? -eq $false){ + Write-Output "[PWSH] Exiting script because there were errors while deleting the distribution info files" + Exit +} +pycage compile -q -d -f +if ($? -eq $false){ + Write-Output "[PWSH] Exiting script because there were errors during the pre-compilation process" + Exit +} +Write-Output "Successfully prepared environment with cleanup and pre-compilation" + +if ($NoPackaging) { + Write-Output "[PWSH] No packaging selected. Exit..." + Set-Location $SRC_PATH + Exit +} + + +Write-Output "Get version string..." +$pyproject = Get-Content $SRC_PATH\pyproject.toml -Raw + +if ($pyproject -match '\[project\].*?\n[\s\w\n=""-_{}]*\[[\w-]*\]') { + $projectBlock = $matches[0] + if ($projectBlock -match 'version\s*=\s*"([^"]+)"') { + $version = $matches[1] + Write-Output "The version string is: $version" + } + else { + Write-Output "[PWSH] Exiting script because the version string was not found" + Exit + } +} +else { + Write-Output "[PWSH] Exiting script because the version string was not found" + Exit +} + +Write-Output "Packaging whole standalone environment in a ZIP file" +$dest_path = Join-Path -Path $DEPLOYMENT_PATH -ChildPath "dopt_nafka_wce-crm_v$version.zip" +$compress = @{ + Path = "$ENV_PATH\**" + CompressionLevel = "Optimal" + DestinationPath = $dest_path +} +Compress-Archive @compress -Force + +if ($? -eq $false){ + Write-Output "[PWSH] Exiting script because there were errors during the archive compression operation" + Exit +} +Write-Output "Successfully compressed archive. Saved under: >$dest_path<" + +Write-Output "Go back to source directory..." +Set-Location $SRC_PATH diff --git a/scripts/build_pdm.ps1 b/scripts/build_pdm.ps1 new file mode 100644 index 0000000..edb0a24 --- /dev/null +++ b/scripts/build_pdm.ps1 @@ -0,0 +1 @@ +pdm build -d build/ \ No newline at end of file