This is an automated email from the ASF dual-hosted git repository. hsluoyz pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/casbin-sqlx-adapter.git
commit 0ff52c325f19ffdb79ec1a9788aa20cc56810f05 Author: Yang Luo <[email protected]> AuthorDate: Sat Jun 27 11:57:28 2026 +0800 fix(ci): use pre-installed PostgreSQL and generate sqlite3.def on Windows --- .github/workflows/ci.yml | 55 +++++++++++++++++++++++++++++++++++------------- 1 file changed, 40 insertions(+), 15 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7041c71..a843377 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -75,26 +75,51 @@ jobs: - name: Setup PostgreSQL & MySQL & SQLite (for windows) if: matrix.os == 'windows-latest' - shell: cmd + shell: pwsh run: | - choco install postgresql11 --force --params '/Password:root' - choco install mysql sqlite - "C:\Program Files\PostgreSQL\11\bin\createuser" casbin_rs - "C:\Program Files\PostgreSQL\11\bin\createdb" casbin - "C:\Program Files\PostgreSQL\11\bin\psql" -c "alter user casbin_rs with encrypted password 'casbin_rs'; grant all privileges on database casbin to casbin_rs;" - "C:\tools\mysql\current\bin\mysql" -e "create user 'casbin_rs'@'localhost' identified by 'casbin_rs'; create database casbin; grant all on `casbin`.* to 'casbin_rs'@'localhost';" -uroot - cd /D C:\ProgramData\chocolatey\lib\SQLite\tools - call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat" - lib /machine:x64 /def:sqlite3.def /out:sqlite3.lib + # PostgreSQL - use the pre-installed version on the runner (avoids broken choco package) + $pgDir = (Get-ChildItem 'C:\Program Files\PostgreSQL' -Directory | + Sort-Object Name -Descending | Select-Object -First 1).FullName + $pgBin = "$pgDir\bin" + $pgData = "$pgDir\data" + # Start via pg_ctl (the Windows service may not be initialised on the runner) + & "$pgBin\pg_ctl" start -D "$pgData" -w -t 60 + & "$pgBin\psql" -U postgres -c "CREATE USER casbin_rs WITH ENCRYPTED PASSWORD 'casbin_rs';" + & "$pgBin\psql" -U postgres -c "CREATE DATABASE casbin OWNER casbin_rs;" + & "$pgBin\psql" -U postgres -d casbin -c "GRANT USAGE, CREATE ON SCHEMA public TO casbin_rs;" + & "$pgBin\psql" -U postgres -c "GRANT ALL PRIVILEGES ON DATABASE casbin TO casbin_rs;" + echo "PG_DIR=$pgDir" >> $env:GITHUB_ENV + + # MySQL + choco install mysql -y + Start-Sleep -Seconds 10 + & 'C:\tools\mysql\current\bin\mysqld' --install MySQLService + Start-Service MySQLService + Start-Sleep -Seconds 5 + & 'C:\tools\mysql\current\bin\mysql' -uroot -e "CREATE USER 'casbin_rs'@'localhost' IDENTIFIED BY 'casbin_rs'; CREATE DATABASE casbin; GRANT ALL ON ``casbin``.* TO 'casbin_rs'@'localhost';" + + # SQLite - install, then build sqlite3.lib from sqlite3.dll via generated .def + choco install sqlite -y + $sqliteDir = 'C:\ProgramData\chocolatey\lib\SQLite\tools' + $vcvars = 'C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat' + # Generate exports list using dumpbin (needs vcvars in PATH) + cmd /c "`"$vcvars`" && dumpbin /exports `"$sqliteDir\sqlite3.dll`" > `"$sqliteDir\exports.txt`"" + # Parse exports and write .def file + $content = Get-Content "$sqliteDir\exports.txt" -Raw + $names = [regex]::Matches($content, '^\s+\d+\s+[0-9A-Fa-f]+\s+[0-9A-Fa-f]+\s+(\w+)', 'Multiline') | + ForEach-Object { $_.Groups[1].Value } + (@("LIBRARY sqlite3", "EXPORTS") + $names) | Out-File "$sqliteDir\sqlite3.def" -Encoding ASCII + # Build sqlite3.lib + cmd /c "`"$vcvars`" && lib /machine:x64 /def:`"$sqliteDir\sqlite3.def`" /out:`"$sqliteDir\sqlite3.lib`"" - name: Set environment variables (for windows) if: matrix.os == 'windows-latest' - shell: bash + shell: pwsh run: | - echo "C:\Program Files\PostgreSQL\11\bin" >> $GITHUB_PATH - echo "PQ_LIB_DIR=C:\Program Files\PostgreSQL\11\lib" >> $GITHUB_ENV - echo "MYSQLCLIENT_LIB_DIR=C:\tools\mysql\current\lib" >> $GITHUB_ENV - echo "SQLITE3_LIB_DIR=C:\ProgramData\chocolatey\lib\SQLite\tools" >> $GITHUB_ENV + echo "$env:PG_DIR\bin" >> $env:GITHUB_PATH + echo "PQ_LIB_DIR=$env:PG_DIR\lib" >> $env:GITHUB_ENV + echo "MYSQLCLIENT_LIB_DIR=C:\tools\mysql\current\lib" >> $env:GITHUB_ENV + echo "SQLITE3_LIB_DIR=C:\ProgramData\chocolatey\lib\SQLite\tools" >> $env:GITHUB_ENV - name: Create SQLite DB run: | --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
