Provide precompiled gem for Linux #51
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" | |
- "x86_64-linux-gnu" | |
- "x86_64-linux-musl" | |
- "aarch64-linux-gnu" | |
- "aarch64-linux-musl" | |
name: cross-compile | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Ruby | |
uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: "2.7" | |
- name: "Install dependencies" | |
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-v1-${{ matrix.platform }}-${{ hashFiles('**/.ports_versions') }} | |
restore-keys: | | |
cross-compiled-v1-${{ matrix.platform }}-${{ hashFiles('**/.ports_versions') }} | |
cross-compiled-v1-${{ matrix.platform }}- | |
- name: Build gem | |
shell: bash | |
run: bundle exec rake gem:native:${{ 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 | |
- name: Test if tsql wrapper works | |
shell: pwsh | |
run: | | |
tsql-ttds -C | |
exit $LASTEXITCODE | |
- name: Test if defncopy wrapper works | |
shell: pwsh | |
run: | | |
defncopy-ttds -v | |
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: "& ./test/bin/restore-from-native-gem.ps1" | |
env: | |
RUBY_ARCHITECTURE: "x64-mingw32" | |
- name: Setup MSSQL | |
uses: rails-sqlserver/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" | |
- "3.4" | |
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 | |
- name: Test if tsql wrapper works | |
shell: pwsh | |
run: | | |
tsql-ttds -C | |
exit $LASTEXITCODE | |
- name: Test if defncopy wrapper works | |
shell: pwsh | |
run: | | |
defncopy-ttds -v | |
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" | |
- "3.4" | |
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: "& ./test/bin/restore-from-native-gem.ps1" | |
env: | |
RUBY_ARCHITECTURE: "x64-mingw-ucrt" | |
- name: Setup MSSQL | |
uses: rails-sqlserver/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" | |
- "3.4" | |
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 | |
- name: Test if tsql wrapper works | |
shell: pwsh | |
run: | | |
tsql-ttds -C | |
exit $LASTEXITCODE | |
- name: Test if defncopy wrapper works | |
shell: pwsh | |
run: | | |
defncopy-ttds -v | |
exit $LASTEXITCODE | |
install-linux: | |
needs: | |
- cross-compile | |
strategy: | |
fail-fast: false | |
matrix: | |
platform: | |
- "x86_64-linux-gnu" | |
- "x86_64-linux-musl" | |
- "aarch64-linux-gnu" | |
- "aarch64-linux-musl" | |
ruby-version: | |
- "2.7" | |
- "3.0" | |
- "3.1" | |
- "3.2" | |
- "3.3" | |
- "3.4" | |
include: | |
- platform: x86_64-linux-musl | |
docker_tag: "-alpine" | |
bootstrap: "apk add -U build-base &&" # required to compile bigdecimal on Ruby 2.7 | |
- platform: aarch64-linux-gnu | |
docker_platform: "--platform=linux/arm64" | |
- platform: aarch64-linux-musl | |
docker_platform: "--platform=linux/arm64" | |
docker_tag: "-alpine" | |
bootstrap: "apk add -U build-base &&" | |
name: install-linux | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Download precompiled gem | |
uses: actions/download-artifact@v4 | |
with: | |
name: gem-${{ matrix.platform }} | |
path: precompiled/gems | |
- name: Setup QEMU for docker | |
uses: docker/setup-qemu-action@v3 | |
if: ${{ matrix.docker_platform }} != '' | |
- run: | | |
docker run --rm -v $PWD/precompiled:/precompiled -w /precompiled \ | |
${{ matrix.docker_platform }} ruby:${{ matrix.ruby-version }}${{ matrix.docker_tag }} \ | |
sh -c " | |
gem update --system 3.3.22 && | |
${{ matrix.bootstrap }} | |
gem install --no-document ./gems/tiny_tds-$(cat VERSION)-${{ matrix.platform }}.gem && | |
ruby -e \"require 'tiny_tds'; puts TinyTds::Gem.root_path\" && | |
tsql-ttds -C && | |
defncopy-ttds -v | |
" | |
test-linux: | |
needs: | |
- cross-compile | |
name: test-linux | |
strategy: | |
fail-fast: false | |
matrix: | |
force-encryption: | |
- false | |
- true | |
mssql-version: | |
- 2017 | |
- 2019 | |
- 2022 | |
ruby-version: | |
- "2.7" | |
- "3.0" | |
- "3.1" | |
- "3.2" | |
- "3.3" | |
- "3.4" | |
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: Download precompiled gem | |
uses: actions/download-artifact@v4 | |
with: | |
name: gem-x86_64-linux-gnu | |
- name: Install native gem and restore cross-compiled code from it | |
shell: pwsh | |
run: "& ./test/bin/restore-from-native-gem.ps1" | |
env: | |
RUBY_ARCHITECTURE: "x86_64-linux-gnu" | |
- name: Setup MSSQL | |
uses: rails-sqlserver/setup-mssql@v1 | |
with: | |
components: sqlcmd,sqlengine | |
version: ${{ matrix.mssql-version }} | |
sa-password: "c0MplicatedP@ssword" | |
force-encryption: ${{ matrix.force-encryption }} | |
- 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-linux-native: | |
strategy: | |
fail-fast: false | |
matrix: | |
ruby-version: | |
- "2.7" | |
- "3.0" | |
- "3.1" | |
- "3.2" | |
- "3.3" | |
- "3.4" | |
name: install-linux-native | |
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: Install FreeTDS | |
shell: bash | |
run: ./test/bin/install-freetds.sh | |
- name: Build gem | |
shell: bash | |
run: gem build tiny_tds.gemspec | |
- name: Install gem | |
shell: bash | |
run: gem install "tiny_tds-$(cat VERSION).gem" | |
- name: Test if TinyTDS loads | |
shell: bash | |
run: ruby -e "require 'tiny_tds'; puts TinyTds::Gem.root_path" | |
- name: Test if tsql wrapper works | |
shell: bash | |
run: tsql-ttds -C | |
- name: Test if defncopy wrapper works | |
shell: bash | |
run: defncopy-ttds -v | |
install_macos: | |
strategy: | |
fail-fast: false | |
matrix: | |
ruby-version: | |
- "2.7" | |
- "3.0" | |
- "3.1" | |
- "3.2" | |
- "3.3" | |
- "3.4" | |
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" |