Update dependencies for Windows build and drop 32-bit support #31
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
push: | |
pull_request: | |
workflow_dispatch: | |
jobs: | |
cross-compile: | |
strategy: | |
fail-fast: false | |
matrix: | |
platform: | |
- "x64-mingw32" | |
- "x64-mingw-ucrt" | |
name: cross-compile-windows | |
runs-on: ubuntu-22.04 | |
container: | |
image: "ghcr.io/rake-compiler/rake-compiler-dock-image:1.4.0-mri-${{ matrix.platform }}" | |
steps: | |
- uses: actions/checkout@v4 | |
- run: git config --global --add safe.directory /__w/tiny_tds/tiny_tds # shrug | |
- name: Install gems | |
shell: bash | |
run: bundle install | |
- name: Write used versions into file | |
shell: bash | |
run: bundle exec rake ports:version_file[${{ matrix.platform }}] | |
- name: Cache ports | |
uses: actions/cache@v4 | |
with: | |
path: ports | |
key: cross-compiled-v3-${{ matrix.platform }}-${{ hashFiles('**/.ports_versions') }} | |
restore-keys: | | |
cross-compiled-v3-${{ matrix.platform }}-${{ hashFiles('**/.ports_versions') }} | |
cross-compiled-v3-${{ matrix.platform }}- | |
- name: Build gem | |
shell: bash | |
run: bundle exec rake gem:for_platform[${{ matrix.platform }}] | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: gem-${{ matrix.platform }} | |
path: pkg/*.gem | |
install-windows-mingw: | |
needs: | |
- cross-compile | |
strategy: | |
fail-fast: false | |
matrix: | |
ruby-version: | |
- "2.7" | |
- "3.0" | |
name: install-windows-mingw | |
runs-on: windows-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: ${{ matrix.ruby-version }} | |
bundler-cache: true | |
- name: Download precompiled gem | |
uses: actions/download-artifact@v4 | |
with: | |
name: gem-x64-mingw32 | |
- name: Install native gem | |
shell: pwsh | |
run: | | |
$rubyArchitecture = (ruby -e "puts RbConfig::CONFIG['arch']").Trim() | |
$gemVersion = (Get-Content VERSION).Trim() | |
$gemToInstall = "./tiny_tds-$gemVersion-$rubyArchitecture.gem" | |
Write-Host "Looking to install $gemToInstall" | |
gem install "$gemToInstall" | |
- name: Test if TinyTDS loads | |
shell: pwsh | |
run: | | |
ruby -e "require 'tiny_tds'; puts TinyTds::Gem.root_path" | |
exit $LASTEXITCODE | |
test-windows-mingw: | |
needs: | |
- cross-compile | |
strategy: | |
fail-fast: false | |
matrix: | |
force-encryption: | |
- "false" | |
- "true" | |
mssql-version: | |
- 2017 | |
- 2019 | |
- 2022 | |
ruby-version: | |
- "2.7" | |
- "3.0" | |
name: test-windows-mingw | |
runs-on: windows-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: ${{ matrix.ruby-version }} | |
bundler-cache: true | |
- name: Download precompiled gem | |
uses: actions/download-artifact@v4 | |
with: | |
name: gem-x64-mingw32 | |
- name: Install native gem and restore cross-compiled code from it | |
shell: pwsh | |
run: | | |
$rubyArchitecture = (ruby -e "puts RbConfig::CONFIG['arch']").Trim() | |
$gemVersion = (Get-Content VERSION).Trim() | |
$gemToUnpack = "./tiny_tds-$gemVersion-$rubyArchitecture.gem" | |
Write-Host "Looking to unpack $gemToUnpack" | |
gem unpack --target ./tmp "$gemToUnpack" | |
# Restore precompiled code | |
$source = (Resolve-Path ".\tmp\tiny_tds-$gemVersion-$rubyArchitecture\lib\tiny_tds").Path | |
$destination = (Resolve-Path ".\lib\tiny_tds").Path | |
Get-ChildItem $source -Recurse -Exclude "*.rb" | Copy-Item -Destination {Join-Path $destination $_.FullName.Substring($source.length)} | |
# Restore ports | |
Copy-Item -Path ".\tmp\tiny_tds-$gemVersion-$rubyArchitecture\ports" -Destination "." -Recurse | |
- name: Setup MSSQL | |
uses: andyundso/setup-mssql@v1 | |
with: | |
components: sqlcmd,sqlengine | |
version: ${{ matrix.mssql-version }} | |
sa-password: c0MplicatedP@ssword | |
force-encryption: ${{ matrix.force-encryption }} | |
- name: Setup MSSQL database | |
shell: pwsh | |
run: | | |
& sqlcmd -S localhost -U sa -P "c0MplicatedP@ssword" -i ./test/sql/db-create.sql | |
& sqlcmd -S localhost -U sa -P "c0MplicatedP@ssword" -i ./test/sql/db-login.sql | |
- name: Install toxiproxy-server | |
shell: pwsh | |
run: | | |
choco install toxiproxy-server --version=2.5.0 -y | |
Start-Process toxiproxy-server | |
- name: Test gem | |
shell: pwsh | |
run: bundle exec rake test | |
env: | |
TOXIPROXY_HOST: "localhost" | |
- name: Test Summary | |
uses: test-summary/action@v2 | |
with: | |
paths: "test/reports/TEST-*.xml" | |
if: always() | |
install-windows-ucrt: | |
needs: | |
- cross-compile | |
strategy: | |
fail-fast: false | |
matrix: | |
ruby-version: | |
- "3.1" | |
- "3.2" | |
- "3.3" | |
name: install-windows-ucrt | |
runs-on: windows-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: ${{ matrix.ruby-version }} | |
bundler-cache: true | |
- name: Download precompiled gem | |
uses: actions/download-artifact@v4 | |
with: | |
name: gem-x64-mingw-ucrt | |
- name: Install native gem | |
shell: pwsh | |
run: | | |
$rubyArchitecture = (ruby -e "puts RbConfig::CONFIG['arch']").Trim() | |
$gemVersion = (Get-Content VERSION).Trim() | |
$gemToInstall = "./tiny_tds-$gemVersion-$rubyArchitecture.gem" | |
Write-Host "Looking to install $gemToInstall" | |
gem install "$gemToInstall" | |
- name: Test if TinyTDS loads | |
shell: pwsh | |
run: | | |
ruby -e "require 'tiny_tds'; puts TinyTds::Gem.root_path" | |
exit $LASTEXITCODE | |
test-windows-ucrt: | |
needs: | |
- cross-compile | |
strategy: | |
fail-fast: false | |
matrix: | |
force-encryption: | |
- "false" | |
- "true" | |
mssql-version: | |
- 2017 | |
- 2019 | |
- 2022 | |
ruby-version: | |
- "3.1" | |
- "3.2" | |
- "3.3" | |
name: test-windows-ucrt | |
runs-on: windows-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: ${{ matrix.ruby-version }} | |
bundler-cache: true | |
- name: Download precompiled gem | |
uses: actions/download-artifact@v4 | |
with: | |
name: gem-x64-mingw-ucrt | |
- name: Install native gem and restore cross-compiled code from it | |
shell: pwsh | |
run: | | |
$rubyArchitecture = (ruby -e "puts RbConfig::CONFIG['arch']").Trim() | |
$gemVersion = (Get-Content VERSION).Trim() | |
$gemToUnpack = "./tiny_tds-$gemVersion-$rubyArchitecture.gem" | |
Write-Host "Looking to unpack $gemToUnpack" | |
gem unpack --target ./tmp "$gemToUnpack" | |
# Restore precompiled code | |
$source = (Resolve-Path ".\tmp\tiny_tds-$gemVersion-$rubyArchitecture\lib\tiny_tds").Path | |
$destination = (Resolve-Path ".\lib\tiny_tds").Path | |
Get-ChildItem $source -Recurse -Exclude "*.rb" | Copy-Item -Destination {Join-Path $destination $_.FullName.Substring($source.length)} | |
# Restore ports | |
Copy-Item -Path ".\tmp\tiny_tds-$gemVersion-$rubyArchitecture\ports" -Destination "." -Recurse | |
- name: Setup MSSQL | |
uses: andyundso/setup-mssql@v1 | |
with: | |
components: sqlcmd,sqlengine | |
version: ${{ matrix.mssql-version }} | |
sa-password: c0MplicatedP@ssword | |
force-encryption: ${{ matrix.force-encryption }} | |
- name: Setup MSSQL database | |
shell: pwsh | |
run: | | |
& sqlcmd -S localhost -U sa -P "c0MplicatedP@ssword" -i ./test/sql/db-create.sql | |
& sqlcmd -S localhost -U sa -P "c0MplicatedP@ssword" -i ./test/sql/db-login.sql | |
- name: Install toxiproxy-server | |
shell: pwsh | |
run: | | |
choco install toxiproxy-server --version=2.5.0 -y | |
Start-Process toxiproxy-server | |
- name: Test gem | |
shell: pwsh | |
run: bundle exec rake test | |
env: | |
TOXIPROXY_HOST: "localhost" | |
- name: Test Summary | |
uses: test-summary/action@v2 | |
with: | |
paths: "test/reports/TEST-*.xml" | |
if: always() | |
install-windows-native: | |
strategy: | |
fail-fast: false | |
matrix: | |
ruby-version: | |
- "2.7" | |
- "3.0" | |
- "3.1" | |
- "3.2" | |
- "3.3" | |
name: install-windows-native | |
runs-on: windows-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: ${{ matrix.ruby-version }} | |
bundler-cache: true | |
- name: Build gem | |
shell: pwsh | |
run: gem build tiny_tds.gemspec | |
- name: Install gem | |
shell: pwsh | |
run: | | |
$gemVersion = (Get-Content VERSION).Trim() | |
gem install "tiny_tds-$gemVersion.gem" | |
- name: Test if TinyTDS loads | |
shell: pwsh | |
run: | | |
ruby -e "require 'tiny_tds'; puts TinyTds::Gem.root_path" | |
exit $LASTEXITCODE | |
compile-native-ports: | |
runs-on: ubuntu-22.04 | |
name: cross-compile-linux | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: 3.3 | |
bundler-cache: true | |
- name: Write used versions into file | |
run: bundle exec rake ports:version_file | |
- name: Cache ports | |
uses: actions/cache@v4 | |
with: | |
path: ports | |
key: native-v3-${{ hashFiles('**/.ports_versions') }} | |
restore-keys: | | |
native-v3-${{ hashFiles('* */.ports_versions') }} | |
native-v3- | |
- name: Build required libraries | |
run: | | |
bundle exec rake ports | |
test-linux: | |
needs: | |
- compile-native-ports | |
name: test-linux | |
strategy: | |
fail-fast: false | |
matrix: | |
mssql-version: | |
- 2017 | |
- 2019 | |
- 2022 | |
ruby-version: | |
- "2.7" | |
- "3.0" | |
- "3.1" | |
- "3.2" | |
- "3.3" | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: ${{ matrix.ruby-version }} | |
bundler-cache: true | |
- name: Write used versions into file | |
run: | | |
bundle exec rake ports:version_file | |
- name: Cache ports | |
uses: actions/cache@v4 | |
with: | |
path: ports | |
key: native-v3-${{ hashFiles('**/.ports_versions') }} | |
fail-on-cache-miss: true | |
- name: Build gem | |
run: | | |
bundle exec rake build | |
- name: Setup MSSQL | |
uses: andyundso/setup-mssql@v1 | |
with: | |
components: sqlcmd,sqlengine | |
version: ${{ matrix.mssql-version }} | |
sa-password: "c0MplicatedP@ssword" | |
- name: Setup MSSQL database | |
run: | | |
sqlcmd -S localhost -U sa -P "c0MplicatedP@ssword" -i ./test/sql/db-create.sql | |
sqlcmd -S localhost -U sa -P "c0MplicatedP@ssword" -i ./test/sql/db-login.sql | |
- name: Install toxiproxy-server | |
run: | | |
wget -O toxiproxy-2.5.0.deb https://github.com/Shopify/toxiproxy/releases/download/v2.5.0/toxiproxy_2.5.0_linux_amd64.deb | |
sudo dpkg -i toxiproxy-2.5.0.deb | |
sudo toxiproxy-server & | |
- name: Run tests | |
run: bundle exec rake test | |
env: | |
TOXIPROXY_HOST: "localhost" | |
- name: Test Summary | |
uses: test-summary/action@v2 | |
with: | |
paths: "test/reports/TEST-*.xml" | |
if: always() | |
install_macos: | |
strategy: | |
fail-fast: false | |
matrix: | |
ruby-version: | |
- "2.7" | |
- "3.0" | |
- "3.1" | |
- "3.2" | |
- "3.3" | |
name: install-macos-m1 | |
runs-on: macos-14 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install FreeTDS | |
run: brew install freetds | |
shell: bash | |
- uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: ${{ matrix.ruby-version }} | |
bundler-cache: true | |
- name: Build gem | |
shell: bash | |
run: gem build tiny_tds.gemspec | |
- name: Install gem and test if TinyTDS loads | |
shell: bash | |
run: | | |
gemVersion=$(<VERSION tr -d '[:space:]') | |
gem install "tiny_tds-$gemVersion.gem" | |
- name: Test if TinyTDS loads | |
shell: bash | |
run: | | |
ruby -e "require 'tiny_tds'; puts TinyTds::Gem.root_path" |