From f76a00f9cc266a962c70f57049a0ee3a3ab69ab7 Mon Sep 17 00:00:00 2001 From: henrikek Date: Wed, 15 Apr 2026 16:55:56 +0200 Subject: [PATCH 01/18] Update github actions 20260415 --- .github/workflows/main.yml | 48 +++++++++++++++++++------------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 815c21dd8..a543755eb 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -13,8 +13,8 @@ jobs: linting: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 - - uses: actions/cache@v4 + - uses: actions/checkout@v6 + - uses: actions/cache@v5 with: path: ~/.cache/pip key: ${{ runner.os }}-pip-${{ hashFiles('requirements/lint.txt') }} @@ -24,20 +24,20 @@ jobs: - name: Set up Node uses: actions/setup-node@v4 with: - node-version: '20' + node-version: '24' - name: Get yarn cache id: yarn_cache run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT - - uses: actions/cache@v4 + - uses: actions/cache@v5 with: path: ${{ steps.yarn_cache.outputs.dir }} key: ${{ runner.os }}-yarn-${{ hashFiles('yarn.lock') }} restore-keys: | ${{ runner.os }}-yarn- - - uses: actions/cache@v4 + - uses: actions/cache@v5 with: path: node_modules key: ${{ runner.os }}-yarn-${{ hashFiles('yarn.lock') }} @@ -45,7 +45,7 @@ jobs: ${{ runner.os }}-yarn- - name: Set up Python - uses: actions/setup-python@v5 + uses: actions/setup-python@v6 with: python-version: '3.12' @@ -79,25 +79,25 @@ jobs: build-frontend: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Set up Node uses: actions/setup-node@v4 with: - node-version: '20' + node-version: '24' - name: Get yarn cache id: yarn_cache run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT - - uses: actions/cache@v4 + - uses: actions/cache@v5 with: path: ${{ steps.yarn_cache.outputs.dir }} key: ${{ runner.os }}-yarn-${{ hashFiles('yarn.lock') }} restore-keys: | ${{ runner.os }}-yarn- - - uses: actions/cache@v4 + - uses: actions/cache@v5 with: path: node_modules key: ${{ runner.os }}-yarn-${{ hashFiles('yarn.lock') }} @@ -112,8 +112,8 @@ jobs: build-docs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 - - uses: actions/cache@v4 + - uses: actions/checkout@v6 + - uses: actions/cache@v5 with: path: ~/.cache/pip key: ${{ runner.os }}-pip-${{ hashFiles('requirements/lint.txt') }} @@ -121,7 +121,7 @@ jobs: ${{ runner.os }}-pip- - name: Set up Python - uses: actions/setup-python@v5 + uses: actions/setup-python@v6 with: python-version: '3.12' @@ -150,7 +150,7 @@ jobs: build-docker: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Build run: | @@ -162,8 +162,8 @@ jobs: env: DATABASE_URL_ESSARCH: 'mssql://SA:MyPassword42@localhost:1433/essarch?CONN_MAX_AGE=100&CONN_HEALTH_CHECKS=True&isolation_level=read committed&driver=ODBC Driver 18 for SQL Server&extra_params=TrustServerCertificate=yes' steps: - - uses: actions/checkout@v4 - - uses: actions/cache@v4 + - uses: actions/checkout@v6 + - uses: actions/cache@v5 with: path: ~\AppData\Local\pip\Cache key: ${{ runner.os }}-pip-${{ hashFiles('requirements/**.txt') }} @@ -171,7 +171,7 @@ jobs: ${{ runner.os }}-pip- - name: Set up Python - uses: actions/setup-python@v5 + uses: actions/setup-python@v6 with: python-version: '3.12' @@ -183,7 +183,7 @@ jobs: - name: Set up Node uses: actions/setup-node@v4 with: - node-version: '20' + node-version: '24' - name: Get yarn cache id: yarn_cache @@ -335,8 +335,8 @@ jobs: --health-retries 10 steps: - - uses: actions/checkout@v4 - - uses: actions/cache@v4 + - uses: actions/checkout@v6 + - uses: actions/cache@v5 with: path: ~/.cache/pip key: ${{ runner.os }}-pip-${{ hashFiles('requirements/**.txt') }} @@ -344,7 +344,7 @@ jobs: ${{ runner.os }}-pip- - name: Set up Python - uses: actions/setup-python@v5 + uses: actions/setup-python@v6 with: python-version: '3.12' @@ -356,20 +356,20 @@ jobs: - name: Set up Node uses: actions/setup-node@v4 with: - node-version: '20' + node-version: '24' - name: Get yarn cache id: yarn_cache run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT - - uses: actions/cache@v4 + - uses: actions/cache@v5 with: path: ${{ steps.yarn_cache.outputs.dir }} key: ${{ runner.os }}-yarn-${{ hashFiles('yarn.lock') }} restore-keys: | ${{ runner.os }}-yarn- - - uses: actions/cache@v4 + - uses: actions/cache@v5 with: path: node_modules key: ${{ runner.os }}-yarn-${{ hashFiles('yarn.lock') }} From 84ecc7bfc94e17b9fc34ddd4bd5a16447086e327 Mon Sep 17 00:00:00 2001 From: henrikek Date: Wed, 15 Apr 2026 17:11:30 +0200 Subject: [PATCH 02/18] force node24 --- .github/workflows/main.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index a543755eb..6bcf3fbf1 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,5 +1,8 @@ name: Tests +env: + FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true + on: pull_request: merge_group: @@ -189,14 +192,14 @@ jobs: id: yarn_cache run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT - - uses: actions/cache@v3 + - uses: actions/cache@v5 with: path: ${{ steps.yarn_cache.outputs.dir }} key: ${{ runner.os }}-yarn-${{ hashFiles('yarn.lock') }} restore-keys: | ${{ runner.os }}-yarn- - - uses: actions/cache@v3 + - uses: actions/cache@v5 with: path: node_modules key: ${{ runner.os }}-yarn-${{ hashFiles('yarn.lock') }} From ba910b39e43a6118377a912d856aefd46ea62dad Mon Sep 17 00:00:00 2001 From: henrikek Date: Wed, 15 Apr 2026 18:06:29 +0200 Subject: [PATCH 03/18] Updated with better cache --- .github/workflows/main.yml | 127 +++++++++++-------------------------- 1 file changed, 38 insertions(+), 89 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 6bcf3fbf1..110c0e2a2 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -17,35 +17,24 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - - uses: actions/cache@v5 - with: - path: ~/.cache/pip - key: ${{ runner.os }}-pip-${{ hashFiles('requirements/lint.txt') }} - restore-keys: | - ${{ runner.os }}-pip- - name: Set up Node uses: actions/setup-node@v4 with: node-version: '24' + cache: yarn + cache-dependency-path: yarn.lock - - name: Get yarn cache - id: yarn_cache - run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT + - name: Install Node dependencies + run: yarn install --frozen-lockfile - - uses: actions/cache@v5 + - name: Cache pip wheels + uses: actions/cache@v5 with: - path: ${{ steps.yarn_cache.outputs.dir }} - key: ${{ runner.os }}-yarn-${{ hashFiles('yarn.lock') }} - restore-keys: | - ${{ runner.os }}-yarn- - - - uses: actions/cache@v5 - with: - path: node_modules - key: ${{ runner.os }}-yarn-${{ hashFiles('yarn.lock') }} + path: ~/.cache/pip + key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements/*.txt') }} restore-keys: | - ${{ runner.os }}-yarn- + ${{ runner.os }}-pip- - name: Set up Python uses: actions/setup-python@v6 @@ -57,7 +46,6 @@ jobs: python -m pip install --upgrade pip pip install -r requirements/docs.txt -r requirements/lint.txt pip check - yarn install --frozen-lockfile - name: doc8 run: | @@ -88,38 +76,25 @@ jobs: uses: actions/setup-node@v4 with: node-version: '24' + cache: yarn + cache-dependency-path: yarn.lock - - name: Get yarn cache - id: yarn_cache - run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT - - - uses: actions/cache@v5 - with: - path: ${{ steps.yarn_cache.outputs.dir }} - key: ${{ runner.os }}-yarn-${{ hashFiles('yarn.lock') }} - restore-keys: | - ${{ runner.os }}-yarn- - - - uses: actions/cache@v5 - with: - path: node_modules - key: ${{ runner.os }}-yarn-${{ hashFiles('yarn.lock') }} - restore-keys: | - ${{ runner.os }}-yarn- + - name: Install Node dependencies + run: yarn install --frozen-lockfile - name: Build - run: | - yarn install --frozen-lockfile - yarn build:prod + run: yarn build:prod build-docs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - - uses: actions/cache@v5 + + - name: Cache pip wheels + uses: actions/cache@v5 with: path: ~/.cache/pip - key: ${{ runner.os }}-pip-${{ hashFiles('requirements/lint.txt') }} + key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements/*.txt') }} restore-keys: | ${{ runner.os }}-pip- @@ -166,12 +141,6 @@ jobs: DATABASE_URL_ESSARCH: 'mssql://SA:MyPassword42@localhost:1433/essarch?CONN_MAX_AGE=100&CONN_HEALTH_CHECKS=True&isolation_level=read committed&driver=ODBC Driver 18 for SQL Server&extra_params=TrustServerCertificate=yes' steps: - uses: actions/checkout@v6 - - uses: actions/cache@v5 - with: - path: ~\AppData\Local\pip\Cache - key: ${{ runner.os }}-pip-${{ hashFiles('requirements/**.txt') }} - restore-keys: | - ${{ runner.os }}-pip- - name: Set up Python uses: actions/setup-python@v6 @@ -187,24 +156,19 @@ jobs: uses: actions/setup-node@v4 with: node-version: '24' + cache: yarn + cache-dependency-path: yarn.lock - - name: Get yarn cache - id: yarn_cache - run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT - - - uses: actions/cache@v5 - with: - path: ${{ steps.yarn_cache.outputs.dir }} - key: ${{ runner.os }}-yarn-${{ hashFiles('yarn.lock') }} - restore-keys: | - ${{ runner.os }}-yarn- + - name: Install Node dependencies + run: yarn install --frozen-lockfile - - uses: actions/cache@v5 + - name: Cache pip wheels + uses: actions/cache@v5 with: - path: node_modules - key: ${{ runner.os }}-yarn-${{ hashFiles('yarn.lock') }} + path: ~/.cache/pip + key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements/*.txt') }} restore-keys: | - ${{ runner.os }}-yarn- + ${{ runner.os }}-pip- - name: Install run: | @@ -236,9 +200,7 @@ jobs: echo "C:\Program Files\GTK3-Runtime Win64\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append - name: Build frontend - run: | - yarn install --frozen-lockfile - yarn build:prod + run: yarn build:prod - name: Test run: | @@ -339,12 +301,6 @@ jobs: steps: - uses: actions/checkout@v6 - - uses: actions/cache@v5 - with: - path: ~/.cache/pip - key: ${{ runner.os }}-pip-${{ hashFiles('requirements/**.txt') }} - restore-keys: | - ${{ runner.os }}-pip- - name: Set up Python uses: actions/setup-python@v6 @@ -360,24 +316,19 @@ jobs: uses: actions/setup-node@v4 with: node-version: '24' + cache: yarn + cache-dependency-path: yarn.lock - - name: Get yarn cache - id: yarn_cache - run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT + - name: Install Node dependencies + run: yarn install --frozen-lockfile - - uses: actions/cache@v5 + - name: Cache pip wheels + uses: actions/cache@v5 with: - path: ${{ steps.yarn_cache.outputs.dir }} - key: ${{ runner.os }}-yarn-${{ hashFiles('yarn.lock') }} - restore-keys: | - ${{ runner.os }}-yarn- - - - uses: actions/cache@v5 - with: - path: node_modules - key: ${{ runner.os }}-yarn-${{ hashFiles('yarn.lock') }} + path: ~/.cache/pip + key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements/*.txt') }} restore-keys: | - ${{ runner.os }}-yarn- + ${{ runner.os }}-pip- - name: Setup apache http schemaserver run: | @@ -421,9 +372,7 @@ jobs: sudo mv geckodriver /usr/local/bin - name: Build frontend - run: | - yarn install --frozen-lockfile - yarn build:prod + run: yarn build:prod - name: Test env: From 794d743a105a879ae09416ba9ef6c849fa7d30fa Mon Sep 17 00:00:00 2001 From: henrikek Date: Wed, 15 Apr 2026 18:20:01 +0200 Subject: [PATCH 04/18] Upgrade from setup-node@v4 to setup-node@v6 --- .github/workflows/main.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 110c0e2a2..213fd1d1a 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -19,7 +19,7 @@ jobs: - uses: actions/checkout@v6 - name: Set up Node - uses: actions/setup-node@v4 + uses: actions/setup-node@v6 with: node-version: '24' cache: yarn @@ -73,7 +73,7 @@ jobs: - uses: actions/checkout@v6 - name: Set up Node - uses: actions/setup-node@v4 + uses: actions/setup-node@v6 with: node-version: '24' cache: yarn @@ -153,7 +153,7 @@ jobs: echo "ESSARCH_DIR=D:\a\ESSArch\ESSArch" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf-8 -Append - name: Set up Node - uses: actions/setup-node@v4 + uses: actions/setup-node@v6 with: node-version: '24' cache: yarn @@ -313,7 +313,7 @@ jobs: echo "ESSARCH_DIR=/home/runner/work/ESSArch/ESSArch" >> $GITHUB_ENV - name: Set up Node - uses: actions/setup-node@v4 + uses: actions/setup-node@v6 with: node-version: '24' cache: yarn From 23bd97ea3b831bc5b1a1b1d421df31d59e76a43b Mon Sep 17 00:00:00 2001 From: henrikek Date: Wed, 15 Apr 2026 18:32:25 +0200 Subject: [PATCH 05/18] Upgrade to codecov/codecov-action@v6 --- .github/workflows/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 213fd1d1a..923d7dc85 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -210,7 +210,7 @@ jobs: run: | coverage xml - name: Codecov - uses: codecov/codecov-action@v4 + uses: codecov/codecov-action@v6 with: name: Windows files: ./coverage.xml @@ -383,7 +383,7 @@ jobs: run: | coverage xml - name: Codecov - uses: codecov/codecov-action@v4 + uses: codecov/codecov-action@v6 with: name: Linux (${{matrix.db}}) files: ./coverage.xml From cf52729f6ea5ec14809aeb143897de47652022e8 Mon Sep 17 00:00:00 2001 From: henrikek Date: Wed, 15 Apr 2026 19:12:21 +0200 Subject: [PATCH 06/18] Try to speed up windows install --- .github/workflows/main.yml | 64 ++++++++++++++++++++++++++++++++------ 1 file changed, 54 insertions(+), 10 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 923d7dc85..f15e394f9 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -160,26 +160,70 @@ jobs: cache-dependency-path: yarn.lock - name: Install Node dependencies - run: yarn install --frozen-lockfile + run: yarn install --frozen-lockfile --prefer-offline - name: Cache pip wheels uses: actions/cache@v5 with: - path: ~/.cache/pip + path: ${{ env.LOCALAPPDATA }}\pip\Cache key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements/*.txt') }} restore-keys: | ${{ runner.os }}-pip- + - name: Cache installers + uses: actions/cache@v5 + with: + path: C:\installers + key: windows-installers-gtk3-3.24.31-odbc18 + + - name: Cache Chocolatey packages + uses: actions/cache@v5 + with: + path: C:\ProgramData\chocolatey\lib + key: ${{ runner.os }}-choco-${{ hashFiles('.github/workflows/*.yml') }} + + - name: Install system dependencies (cached) + id: deps + run: | + if (!(Test-Path "C:\deps_installed.txt")) { + if (!(Get-Command sqlcmd -ErrorAction SilentlyContinue)) { + choco install sql-server-express -o -ia "'/IACCEPTSQLSERVERLICENSETERMS /Q /ACTION=install /INSTANCEID=MSSQLSERVER /INSTANCENAME=MSSQLSERVER /UPDATEENABLED=FALSE /TCPENABLED=1 /SECURITYMODE=SQL /SAPWD=MyPassword42'" -f -y + } + if (!(Get-Command magick -ErrorAction SilentlyContinue)) { + choco install imagemagick -y + } + if (!(Get-Command redis-server -ErrorAction SilentlyContinue)) { + choco install redis-64 --version 3.0.503 -y + } + New-Item C:\deps_installed.txt + } + - name: Install run: | - powershell wget https://github.com/tschoonj/GTK-for-Windows-Runtime-Environment-Installer/releases/download/2022-01-04/gtk3-runtime-3.24.31-2022-01-04-ts-win64.exe -OutFile gtk3-runtime-3.24.31-2022-01-04-ts-win64.exe - powershell 'Start-Process -FilePath "gtk3-runtime-3.24.31-2022-01-04-ts-win64.exe" -Wait -PassThru -ArgumentList /S' - powershell wget https://download.microsoft.com/download/1/7/4/17423b83-b75d-42e1-b5b9-eaa266561c5e/Windows/amd64/1033/msodbcsql.msi -OutFile msodbcsql.msi - powershell "Start-Process msiexec.exe -PassThru -Wait -ArgumentList '/I msodbcsql.msi IACCEPTMSODBCSQLLICENSETERMS=YES ADDLOCAL=ALL /quiet /passive /qn /norestart'" - - choco install sql-server-express -o -ia "'/IACCEPTSQLSERVERLICENSETERMS /Q /ACTION=install /INSTANCEID=MSSQLSERVER /INSTANCENAME=MSSQLSERVER /UPDATEENABLED=FALSE /TCPENABLED=1 /SECURITYMODE=SQL /SAPWD=MyPassword42'" -f -y - choco install imagemagick - choco install redis-64 --version 3.0.503 + if (!(Test-Path "C:\installers")) { + New-Item -ItemType Directory -Path "C:\installers" + } + + $gtk = "C:\installers\gtk3.exe" + $odbc = "C:\installers\msodbcsql.msi" + + if (!(Test-Path $gtk)) { + wget https://github.com/tschoonj/GTK-for-Windows-Runtime-Environment-Installer/releases/download/2022-01-04/gtk3-runtime-3.24.31-2022-01-04-ts-win64.exe -OutFile $gtk + } + + if (!(Test-Path $odbc)) { + wget https://download.microsoft.com/download/1/7/4/17423b83-b75d-42e1-b5b9-eaa266561c5e/Windows/amd64/1033/msodbcsql.msi -OutFile $odbc + } + + if (!(Test-Path "C:\gtk_installed.txt")) { + Start-Process -FilePath $gtk -Wait -ArgumentList /S + New-Item C:\gtk_installed.txt + } + + if (!(Test-Path "C:\odbc_installed.txt")) { + Start-Process msiexec.exe -Wait -ArgumentList "/I $odbc IACCEPTMSODBCSQLLICENSETERMS=YES /quiet /qn /norestart" + New-Item C:\odbc_installed.txt + } python -m pip install --upgrade pip wheel setuptools git config user.email test From 732e3e43f5df7aee489e56dc97a3df6207ea864a Mon Sep 17 00:00:00 2001 From: henrikek Date: Wed, 15 Apr 2026 19:19:15 +0200 Subject: [PATCH 07/18] replace wget in windows with Start-BitsTransfer --- .github/workflows/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index f15e394f9..f8c7d8f72 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -208,11 +208,11 @@ jobs: $odbc = "C:\installers\msodbcsql.msi" if (!(Test-Path $gtk)) { - wget https://github.com/tschoonj/GTK-for-Windows-Runtime-Environment-Installer/releases/download/2022-01-04/gtk3-runtime-3.24.31-2022-01-04-ts-win64.exe -OutFile $gtk + Start-BitsTransfer -Source "https://github.com/tschoonj/GTK-for-Windows-Runtime-Environment-Installer/releases/download/2022-01-04/gtk3-runtime-3.24.31-2022-01-04-ts-win64.exe" -Destination $gtk } if (!(Test-Path $odbc)) { - wget https://download.microsoft.com/download/1/7/4/17423b83-b75d-42e1-b5b9-eaa266561c5e/Windows/amd64/1033/msodbcsql.msi -OutFile $odbc + Start-BitsTransfer -Source "https://download.microsoft.com/download/1/7/4/17423b83-b75d-42e1-b5b9-eaa266561c5e/Windows/amd64/1033/msodbcsql.msi" -Destination $odbc } if (!(Test-Path "C:\gtk_installed.txt")) { From 4c3a24680d3c0493b7c9838f13690b10baab518c Mon Sep 17 00:00:00 2001 From: henrikek Date: Wed, 15 Apr 2026 19:35:33 +0200 Subject: [PATCH 08/18] Fix windows install for gtk and odbc --- .github/workflows/main.yml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index f8c7d8f72..3a4c23d97 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -215,14 +215,13 @@ jobs: Start-BitsTransfer -Source "https://download.microsoft.com/download/1/7/4/17423b83-b75d-42e1-b5b9-eaa266561c5e/Windows/amd64/1033/msodbcsql.msi" -Destination $odbc } - if (!(Test-Path "C:\gtk_installed.txt")) { - Start-Process -FilePath $gtk -Wait -ArgumentList /S - New-Item C:\gtk_installed.txt + if (!(Test-Path "C:\Program Files\GTK3-Runtime Win64")) { + Start-Process -FilePath $gtk -Wait -ArgumentList "/S" } - if (!(Test-Path "C:\odbc_installed.txt")) { + $odbcInstalled = Get-OdbcDriver | Where-Object { $_.Name -like "*ODBC Driver 18*" } + if (-not $odbcInstalled) { Start-Process msiexec.exe -Wait -ArgumentList "/I $odbc IACCEPTMSODBCSQLLICENSETERMS=YES /quiet /qn /norestart" - New-Item C:\odbc_installed.txt } python -m pip install --upgrade pip wheel setuptools From 8e53e3bf24828bf2cc35663fe1e8022f2b1e05f3 Mon Sep 17 00:00:00 2001 From: henrikek Date: Wed, 15 Apr 2026 19:45:10 +0200 Subject: [PATCH 09/18] Try2 to get odbc installed --- .github/workflows/main.yml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 3a4c23d97..305369529 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -216,13 +216,15 @@ jobs: } if (!(Test-Path "C:\Program Files\GTK3-Runtime Win64")) { + Write-Host "Installing GTK3..." Start-Process -FilePath $gtk -Wait -ArgumentList "/S" } - $odbcInstalled = Get-OdbcDriver | Where-Object { $_.Name -like "*ODBC Driver 18*" } - if (-not $odbcInstalled) { - Start-Process msiexec.exe -Wait -ArgumentList "/I $odbc IACCEPTMSODBCSQLLICENSETERMS=YES /quiet /qn /norestart" - } + # $odbcInstalled = Get-OdbcDriver | Where-Object { $_.Name -like "*ODBC Driver 18*" } + # if (-not $odbcInstalled) { + Write-Host "Installing ODBC driver..." + Start-Process msiexec.exe -Wait -ArgumentList "/I $odbc IACCEPTMSODBCSQLLICENSETERMS=YES /quiet /qn /norestart" + # } python -m pip install --upgrade pip wheel setuptools git config user.email test From e5051f6217ab33250a940447c6bb03f737101526 Mon Sep 17 00:00:00 2001 From: henrikek Date: Wed, 15 Apr 2026 19:59:21 +0200 Subject: [PATCH 10/18] try3 with odbc --- .github/workflows/main.yml | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 305369529..350651473 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -223,7 +223,22 @@ jobs: # $odbcInstalled = Get-OdbcDriver | Where-Object { $_.Name -like "*ODBC Driver 18*" } # if (-not $odbcInstalled) { Write-Host "Installing ODBC driver..." - Start-Process msiexec.exe -Wait -ArgumentList "/I $odbc IACCEPTMSODBCSQLLICENSETERMS=YES /quiet /qn /norestart" + # Start-Process msiexec.exe -Wait -ArgumentList "/I $odbc IACCEPTMSODBCSQLLICENSETERMS=YES ADDLOCAL=ALL /quiet /qn /norestart" + # powershell "Start-Process msiexec.exe -PassThru -Wait -ArgumentList '/I $odbc IACCEPTMSODBCSQLLICENSETERMS=YES ADDLOCAL=ALL /quiet /passive /qn /norestart'" + Start-Process msiexec.exe -Wait -NoNewWindow -ArgumentList @( + "/i", $odbc, + "IACCEPTMSODBCSQLLICENSETERMS=YES", + "ADDLOCAL=ALL", + "/quiet", + "/qn", + "/norestart" + ) + # Verify install + $odbcInstalled = Get-OdbcDriver | Where-Object { $_.Name -like "*ODBC Driver 18*" } + if (-not $odbcInstalled) { + Write-Error "ODBC installation failed!" + # exit 1 + } # } python -m pip install --upgrade pip wheel setuptools From c221df28f0ff086538e3388213eaccc320ed7dc5 Mon Sep 17 00:00:00 2001 From: henrikek Date: Wed, 15 Apr 2026 20:17:54 +0200 Subject: [PATCH 11/18] try4 odbc --- .github/workflows/main.yml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 350651473..5c4ffee63 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -224,15 +224,15 @@ jobs: # if (-not $odbcInstalled) { Write-Host "Installing ODBC driver..." # Start-Process msiexec.exe -Wait -ArgumentList "/I $odbc IACCEPTMSODBCSQLLICENSETERMS=YES ADDLOCAL=ALL /quiet /qn /norestart" - # powershell "Start-Process msiexec.exe -PassThru -Wait -ArgumentList '/I $odbc IACCEPTMSODBCSQLLICENSETERMS=YES ADDLOCAL=ALL /quiet /passive /qn /norestart'" - Start-Process msiexec.exe -Wait -NoNewWindow -ArgumentList @( - "/i", $odbc, - "IACCEPTMSODBCSQLLICENSETERMS=YES", - "ADDLOCAL=ALL", - "/quiet", - "/qn", - "/norestart" - ) + powershell "Start-Process msiexec.exe -PassThru -Wait -ArgumentList '/I C:\installers\msodbcsql.msi IACCEPTMSODBCSQLLICENSETERMS=YES ADDLOCAL=ALL /quiet /passive /qn /norestart'" + # Start-Process msiexec.exe -Wait -NoNewWindow -ArgumentList @( + # "/i", $odbc, + # "IACCEPTMSODBCSQLLICENSETERMS=YES", + # "ADDLOCAL=ALL", + # "/quiet", + # "/qn", + # "/norestart" + # ) # Verify install $odbcInstalled = Get-OdbcDriver | Where-Object { $_.Name -like "*ODBC Driver 18*" } if (-not $odbcInstalled) { From 8699a1572442b55bc4d56ce426c926fc029fd1a6 Mon Sep 17 00:00:00 2001 From: henrikek Date: Wed, 15 Apr 2026 20:28:15 +0200 Subject: [PATCH 12/18] Try old style for odbc --- .github/workflows/main.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 5c4ffee63..52c261db0 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -224,7 +224,9 @@ jobs: # if (-not $odbcInstalled) { Write-Host "Installing ODBC driver..." # Start-Process msiexec.exe -Wait -ArgumentList "/I $odbc IACCEPTMSODBCSQLLICENSETERMS=YES ADDLOCAL=ALL /quiet /qn /norestart" - powershell "Start-Process msiexec.exe -PassThru -Wait -ArgumentList '/I C:\installers\msodbcsql.msi IACCEPTMSODBCSQLLICENSETERMS=YES ADDLOCAL=ALL /quiet /passive /qn /norestart'" + # powershell "Start-Process msiexec.exe -PassThru -Wait -ArgumentList '/I C:\installers\msodbcsql.msi IACCEPTMSODBCSQLLICENSETERMS=YES ADDLOCAL=ALL /quiet /passive /qn /norestart'" + powershell wget https://download.microsoft.com/download/1/7/4/17423b83-b75d-42e1-b5b9-eaa266561c5e/Windows/amd64/1033/msodbcsql.msi -OutFile msodbcsql.msi + powershell "Start-Process msiexec.exe -PassThru -Wait -ArgumentList '/I msodbcsql.msi IACCEPTMSODBCSQLLICENSETERMS=YES ADDLOCAL=ALL /quiet /passive /qn /norestart'" # Start-Process msiexec.exe -Wait -NoNewWindow -ArgumentList @( # "/i", $odbc, # "IACCEPTMSODBCSQLLICENSETERMS=YES", From 13fcacc3f84029dedd9c4e9f7ed16f94bbb67779 Mon Sep 17 00:00:00 2001 From: henrikek Date: Wed, 15 Apr 2026 21:04:01 +0200 Subject: [PATCH 13/18] try5 --- .github/workflows/main.yml | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 52c261db0..bd05be658 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -185,18 +185,24 @@ jobs: - name: Install system dependencies (cached) id: deps run: | - if (!(Test-Path "C:\deps_installed.txt")) { - if (!(Get-Command sqlcmd -ErrorAction SilentlyContinue)) { - choco install sql-server-express -o -ia "'/IACCEPTSQLSERVERLICENSETERMS /Q /ACTION=install /INSTANCEID=MSSQLSERVER /INSTANCENAME=MSSQLSERVER /UPDATEENABLED=FALSE /TCPENABLED=1 /SECURITYMODE=SQL /SAPWD=MyPassword42'" -f -y - } - if (!(Get-Command magick -ErrorAction SilentlyContinue)) { - choco install imagemagick -y - } - if (!(Get-Command redis-server -ErrorAction SilentlyContinue)) { - choco install redis-64 --version 3.0.503 -y - } - New-Item C:\deps_installed.txt + # if (!(Test-Path "C:\deps_installed.txt")) { + if (!(Get-Command sqlcmd -ErrorAction SilentlyContinue)) { + choco install sql-server-express -o -ia "'/IACCEPTSQLSERVERLICENSETERMS /Q /ACTION=install /INSTANCEID=MSSQLSERVER /INSTANCENAME=MSSQLSERVER /UPDATEENABLED=FALSE /TCPENABLED=1 /SECURITYMODE=SQL /SAPWD=MyPassword42'" -f -y } + # Verify install + if (!(Get-Command sqlcmd -ErrorAction SilentlyContinue)) { + Write-Error "sql-server-express installation failed!" + # exit 1 + } + + if (!(Get-Command magick -ErrorAction SilentlyContinue)) { + choco install imagemagick -y + } + if (!(Get-Command redis-server -ErrorAction SilentlyContinue)) { + choco install redis-64 --version 3.0.503 -y + } + # New-Item C:\deps_installed.txt + # } - name: Install run: | From 4360e07905c65ba44e0f3578ba0d82b941c16ee1 Mon Sep 17 00:00:00 2001 From: henrikek Date: Wed, 15 Apr 2026 21:12:39 +0200 Subject: [PATCH 14/18] try6 --- .github/workflows/main.yml | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index bd05be658..0203320b7 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -186,9 +186,10 @@ jobs: id: deps run: | # if (!(Test-Path "C:\deps_installed.txt")) { - if (!(Get-Command sqlcmd -ErrorAction SilentlyContinue)) { - choco install sql-server-express -o -ia "'/IACCEPTSQLSERVERLICENSETERMS /Q /ACTION=install /INSTANCEID=MSSQLSERVER /INSTANCENAME=MSSQLSERVER /UPDATEENABLED=FALSE /TCPENABLED=1 /SECURITYMODE=SQL /SAPWD=MyPassword42'" -f -y - } + # if (!(Get-Command sqlcmd -ErrorAction SilentlyContinue)) { + Write-Host "Installing sql-server-express..." + choco install sql-server-express -o -ia "'/IACCEPTSQLSERVERLICENSETERMS /Q /ACTION=install /INSTANCEID=MSSQLSERVER /INSTANCENAME=MSSQLSERVER /UPDATEENABLED=FALSE /TCPENABLED=1 /SECURITYMODE=SQL /SAPWD=MyPassword42'" -f -y + # } # Verify install if (!(Get-Command sqlcmd -ErrorAction SilentlyContinue)) { Write-Error "sql-server-express installation failed!" @@ -196,9 +197,11 @@ jobs: } if (!(Get-Command magick -ErrorAction SilentlyContinue)) { + Write-Host "Installing imagemagick..." choco install imagemagick -y } if (!(Get-Command redis-server -ErrorAction SilentlyContinue)) { + Write-Host "Installing redis-64..." choco install redis-64 --version 3.0.503 -y } # New-Item C:\deps_installed.txt From 4a0eda9f1c58330d190870dbcbda68717f7038e2 Mon Sep 17 00:00:00 2001 From: henrikek Date: Wed, 15 Apr 2026 21:28:53 +0200 Subject: [PATCH 15/18] try7 --- .github/workflows/main.yml | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 0203320b7..00828d817 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -187,12 +187,17 @@ jobs: run: | # if (!(Test-Path "C:\deps_installed.txt")) { # if (!(Get-Command sqlcmd -ErrorAction SilentlyContinue)) { - Write-Host "Installing sql-server-express..." - choco install sql-server-express -o -ia "'/IACCEPTSQLSERVERLICENSETERMS /Q /ACTION=install /INSTANCEID=MSSQLSERVER /INSTANCENAME=MSSQLSERVER /UPDATEENABLED=FALSE /TCPENABLED=1 /SECURITYMODE=SQL /SAPWD=MyPassword42'" -f -y - # } + if (!(Get-Service -Name 'MSSQL$SQLEXPRESS' -ErrorAction SilentlyContinue)) { + Write-Host "Installing sql-server-express..." + choco install sql-server-express -o -ia "'/IACCEPTSQLSERVERLICENSETERMS /Q /ACTION=install /INSTANCEID=MSSQLSERVER /INSTANCENAME=MSSQLSERVER /UPDATEENABLED=FALSE /TCPENABLED=1 /SECURITYMODE=SQL /SAPWD=MyPassword42'" -f -y + } # Verify install - if (!(Get-Command sqlcmd -ErrorAction SilentlyContinue)) { - Write-Error "sql-server-express installation failed!" + if (!(Get-Service -Name 'MSSQL$SQLEXPRESS' -ErrorAction SilentlyContinue)) { + Write-Error "sql-server-express MSSQL$SQLEXPRESS installation failed!" + # exit 1 + } + if (!(Get-Service -Name 'MSSQLSERVER' -ErrorAction SilentlyContinue)) { + Write-Error "sql-server-express MSSQLSERVER installation failed!" # exit 1 } @@ -229,13 +234,14 @@ jobs: Start-Process -FilePath $gtk -Wait -ArgumentList "/S" } - # $odbcInstalled = Get-OdbcDriver | Where-Object { $_.Name -like "*ODBC Driver 18*" } - # if (-not $odbcInstalled) { - Write-Host "Installing ODBC driver..." - # Start-Process msiexec.exe -Wait -ArgumentList "/I $odbc IACCEPTMSODBCSQLLICENSETERMS=YES ADDLOCAL=ALL /quiet /qn /norestart" + $odbcInstalled = Get-OdbcDriver | Where-Object { $_.Name -like "*ODBC Driver 18*" } + if (-not $odbcInstalled) { + Write-Host "Installing ODBC driver..." + Start-Process msiexec.exe -Wait -ArgumentList "/I $odbc IACCEPTMSODBCSQLLICENSETERMS=YES ADDLOCAL=ALL /quiet /qn /norestart" + } # powershell "Start-Process msiexec.exe -PassThru -Wait -ArgumentList '/I C:\installers\msodbcsql.msi IACCEPTMSODBCSQLLICENSETERMS=YES ADDLOCAL=ALL /quiet /passive /qn /norestart'" - powershell wget https://download.microsoft.com/download/1/7/4/17423b83-b75d-42e1-b5b9-eaa266561c5e/Windows/amd64/1033/msodbcsql.msi -OutFile msodbcsql.msi - powershell "Start-Process msiexec.exe -PassThru -Wait -ArgumentList '/I msodbcsql.msi IACCEPTMSODBCSQLLICENSETERMS=YES ADDLOCAL=ALL /quiet /passive /qn /norestart'" + # powershell wget https://download.microsoft.com/download/1/7/4/17423b83-b75d-42e1-b5b9-eaa266561c5e/Windows/amd64/1033/msodbcsql.msi -OutFile msodbcsql.msi + # powershell "Start-Process msiexec.exe -PassThru -Wait -ArgumentList '/I msodbcsql.msi IACCEPTMSODBCSQLLICENSETERMS=YES ADDLOCAL=ALL /quiet /passive /qn /norestart'" # Start-Process msiexec.exe -Wait -NoNewWindow -ArgumentList @( # "/i", $odbc, # "IACCEPTMSODBCSQLLICENSETERMS=YES", From a83d9c312f996fa3b75151f38e5093fa3fc52ae4 Mon Sep 17 00:00:00 2001 From: henrikek Date: Wed, 15 Apr 2026 21:36:44 +0200 Subject: [PATCH 16/18] try8 --- .github/workflows/main.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 00828d817..c15981dcf 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -196,10 +196,10 @@ jobs: Write-Error "sql-server-express MSSQL$SQLEXPRESS installation failed!" # exit 1 } - if (!(Get-Service -Name 'MSSQLSERVER' -ErrorAction SilentlyContinue)) { - Write-Error "sql-server-express MSSQLSERVER installation failed!" - # exit 1 - } + # if (!(Get-Service -Name 'MSSQLSERVER' -ErrorAction SilentlyContinue)) { + # Write-Error "sql-server-express MSSQLSERVER installation failed!" + # # exit 1 + # } if (!(Get-Command magick -ErrorAction SilentlyContinue)) { Write-Host "Installing imagemagick..." From 44bcc497f0e8c66c58a9e74a135d65d76687cc82 Mon Sep 17 00:00:00 2001 From: henrikek Date: Wed, 15 Apr 2026 21:58:39 +0200 Subject: [PATCH 17/18] try9 --- .github/workflows/main.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index c15981dcf..edbfc04f4 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -192,14 +192,14 @@ jobs: choco install sql-server-express -o -ia "'/IACCEPTSQLSERVERLICENSETERMS /Q /ACTION=install /INSTANCEID=MSSQLSERVER /INSTANCENAME=MSSQLSERVER /UPDATEENABLED=FALSE /TCPENABLED=1 /SECURITYMODE=SQL /SAPWD=MyPassword42'" -f -y } # Verify install - if (!(Get-Service -Name 'MSSQL$SQLEXPRESS' -ErrorAction SilentlyContinue)) { - Write-Error "sql-server-express MSSQL$SQLEXPRESS installation failed!" - # exit 1 - } - # if (!(Get-Service -Name 'MSSQLSERVER' -ErrorAction SilentlyContinue)) { - # Write-Error "sql-server-express MSSQLSERVER installation failed!" + # if (!(Get-Service -Name 'MSSQL$SQLEXPRESS' -ErrorAction SilentlyContinue)) { + # Write-Error "sql-server-express MSSQL$SQLEXPRESS installation failed!" # # exit 1 # } + if (!(Get-Service -Name 'MSSQLSERVER' -ErrorAction SilentlyContinue)) { + Write-Error "sql-server-express MSSQLSERVER installation failed!" + # exit 1 + } if (!(Get-Command magick -ErrorAction SilentlyContinue)) { Write-Host "Installing imagemagick..." From fab27e81e9985dc12e5b120916f49d7b8d429ad8 Mon Sep 17 00:00:00 2001 From: henrikek Date: Wed, 15 Apr 2026 22:22:34 +0200 Subject: [PATCH 18/18] try10 --- .github/workflows/main.yml | 37 +++++++++++-------------------------- 1 file changed, 11 insertions(+), 26 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index edbfc04f4..bdd9969b1 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -182,35 +182,33 @@ jobs: path: C:\ProgramData\chocolatey\lib key: ${{ runner.os }}-choco-${{ hashFiles('.github/workflows/*.yml') }} + - name: Cache Chocolatey downloads + uses: actions/cache@v5 + with: + path: C:\Users\runneradmin\AppData\Local\Temp\chocolatey + key: ${{ runner.os }}-choco-downloads + - name: Install system dependencies (cached) id: deps run: | - # if (!(Test-Path "C:\deps_installed.txt")) { - # if (!(Get-Command sqlcmd -ErrorAction SilentlyContinue)) { - if (!(Get-Service -Name 'MSSQL$SQLEXPRESS' -ErrorAction SilentlyContinue)) { + if (!(Get-Service -Name 'MSSQLSERVER' -ErrorAction SilentlyContinue)) { Write-Host "Installing sql-server-express..." choco install sql-server-express -o -ia "'/IACCEPTSQLSERVERLICENSETERMS /Q /ACTION=install /INSTANCEID=MSSQLSERVER /INSTANCENAME=MSSQLSERVER /UPDATEENABLED=FALSE /TCPENABLED=1 /SECURITYMODE=SQL /SAPWD=MyPassword42'" -f -y } - # Verify install - # if (!(Get-Service -Name 'MSSQL$SQLEXPRESS' -ErrorAction SilentlyContinue)) { - # Write-Error "sql-server-express MSSQL$SQLEXPRESS installation failed!" - # # exit 1 - # } if (!(Get-Service -Name 'MSSQLSERVER' -ErrorAction SilentlyContinue)) { Write-Error "sql-server-express MSSQLSERVER installation failed!" - # exit 1 + exit 1 } if (!(Get-Command magick -ErrorAction SilentlyContinue)) { Write-Host "Installing imagemagick..." choco install imagemagick -y } + if (!(Get-Command redis-server -ErrorAction SilentlyContinue)) { Write-Host "Installing redis-64..." choco install redis-64 --version 3.0.503 -y - } - # New-Item C:\deps_installed.txt - # } + } - name: Install run: | @@ -239,24 +237,11 @@ jobs: Write-Host "Installing ODBC driver..." Start-Process msiexec.exe -Wait -ArgumentList "/I $odbc IACCEPTMSODBCSQLLICENSETERMS=YES ADDLOCAL=ALL /quiet /qn /norestart" } - # powershell "Start-Process msiexec.exe -PassThru -Wait -ArgumentList '/I C:\installers\msodbcsql.msi IACCEPTMSODBCSQLLICENSETERMS=YES ADDLOCAL=ALL /quiet /passive /qn /norestart'" - # powershell wget https://download.microsoft.com/download/1/7/4/17423b83-b75d-42e1-b5b9-eaa266561c5e/Windows/amd64/1033/msodbcsql.msi -OutFile msodbcsql.msi - # powershell "Start-Process msiexec.exe -PassThru -Wait -ArgumentList '/I msodbcsql.msi IACCEPTMSODBCSQLLICENSETERMS=YES ADDLOCAL=ALL /quiet /passive /qn /norestart'" - # Start-Process msiexec.exe -Wait -NoNewWindow -ArgumentList @( - # "/i", $odbc, - # "IACCEPTMSODBCSQLLICENSETERMS=YES", - # "ADDLOCAL=ALL", - # "/quiet", - # "/qn", - # "/norestart" - # ) - # Verify install $odbcInstalled = Get-OdbcDriver | Where-Object { $_.Name -like "*ODBC Driver 18*" } if (-not $odbcInstalled) { Write-Error "ODBC installation failed!" - # exit 1 + exit 1 } - # } python -m pip install --upgrade pip wheel setuptools git config user.email test