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 ff2b943f537696df91a235d8d9e70f99c1a20260 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 | 61 ++++++++++++++++++++++++++++++++++++------------ 1 file changed, 46 insertions(+), 15 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7041c71..1143916 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -75,26 +75,57 @@ 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 binaries, init a fresh data dir + $pgDir = (Get-ChildItem 'C:\Program Files\PostgreSQL' -Directory | + Sort-Object Name -Descending | Select-Object -First 1).FullName + $pgBin = "$pgDir\bin" + $pgData = "C:\pgdata" + & "$pgBin\initdb" -D "$pgData" -U postgres -E UTF8 --auth=trust + & "$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 - install, initialize data dir, start as background process (avoids service issues) + choco install mysql -y + $mysqlBin = 'C:\tools\mysql\current\bin' + $mysqlData = 'C:\mysqldata' + & "$mysqlBin\mysqld" --initialize-insecure --datadir="$mysqlData" + Start-Process "$mysqlBin\mysqld" -ArgumentList "--datadir=$mysqlData --port=3306 --default-authentication-plugin=mysql_native_password" -WindowStyle Hidden + Start-Sleep -Seconds 15 + & "$mysqlBin\mysql" -uroot -h 127.0.0.1 -P 3306 -e "CREATE USER 'casbin_rs'@'localhost' IDENTIFIED WITH mysql_native_password BY 'casbin_rs'; CREATE DATABASE casbin; GRANT ALL ON ``casbin``.* TO 'casbin_rs'@'localhost'; FLUSH PRIVILEGES;" + + # SQLite - install, then build sqlite3.lib from sqlite3.dll via generated .def + choco install sqlite -y + $sqliteDir = 'C:\ProgramData\chocolatey\lib\SQLite\tools' + # Find vcvars64.bat across VS editions + $vcvars = @( + 'C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat', + 'C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat', + 'C:\Program Files\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvars64.bat', + 'C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars64.bat' + ) | Where-Object { Test-Path $_ } | Select-Object -First 1 + if (-not $vcvars) { throw "Could not find vcvars64.bat" } + # Capture dumpbin output directly (avoids file-redirect issues) + $dumpbinOut = cmd /c "`"$vcvars`" > nul 2>&1 && dumpbin /exports `"$sqliteDir\sqlite3.dll`"" + $names = [regex]::Matches(($dumpbinOut -join "`n"), '^\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`" > nul 2>&1 && 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]
