Tests #20
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: Tests | |
concurrency: | |
group: "${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}" | |
cancel-in-progress: true | |
on: | |
workflow_dispatch: | |
push: | |
branches: | |
- main | |
pull_request: | |
schedule: | |
- cron: "30 4 * * 4" | |
jobs: | |
ruby-gem: | |
name: Package Ruby gem | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: '3.4' | |
bundler-cache: true | |
- uses: actions-rust-lang/setup-rust-toolchain@v1 | |
- run: bundle exec rake build | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: ruby-gem | |
path: pkg/*.gem | |
test-ruby-gem: | |
needs: ruby-gem | |
runs-on: ubuntu-latest | |
name: Ruby ${{ matrix.ruby }} | |
strategy: | |
matrix: | |
ruby: | |
- '3.4' | |
- '3.3' | |
- '3.2' | |
- '3.1' | |
- '3.0' | |
- '2.7' | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: ${{ matrix.ruby }} | |
bundler-cache: true | |
- uses: actions-rust-lang/setup-rust-toolchain@v1 | |
- uses: actions/download-artifact@v4 | |
with: | |
name: ruby-gem | |
path: pkg | |
- run: scripts/test-gem-install default | |
cross-gem: | |
name: Compile native gem for ${{ matrix.platform }} | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
platform: | |
- arm-linux | |
- aarch64-linux | |
- aarch64-linux-musl | |
- arm64-darwin | |
- x64-mingw-ucrt | |
- x64-mingw32 | |
- x86_64-darwin | |
- x86_64-linux | |
- x86_64-linux-musl | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: '3.4' | |
bundler-cache: true | |
- uses: oxidize-rb/actions/cross-gem@v1 | |
id: cross-gem | |
with: | |
platform: ${{ matrix.platform }} | |
ruby-versions: '2.7,3.0,3.1,3.2,3.3,3.4' | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: cross-gem-${{ matrix.platform }} | |
path: ${{ steps.cross-gem.outputs.gem-path }} | |
test-precompiled-arm-linux: | |
needs: "cross-gem" | |
strategy: | |
fail-fast: false | |
matrix: | |
ruby: ["2.7", "3.0", "3.1", "3.2", "3.3", "3.4"] | |
include: | |
- { ruby: "2.7", rubygems: "3.4.22" } | |
- { ruby: "3.0", rubygems: "3.5.23" } | |
- { ruby: "3.1", rubygems: "default" } | |
- { ruby: "3.2", rubygems: "default" } | |
- { ruby: "3.3", rubygems: "default" } | |
- { ruby: "3.4", rubygems: "default" } | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/download-artifact@v4 | |
with: | |
name: cross-gem-arm-linux | |
path: pkg | |
- name: enable execution of multi-architecture containers by qemu | |
run: docker run --rm --privileged multiarch/qemu-user-static --reset -p yes | |
- run: | | |
docker run --rm -v "$(pwd):/rb-mrml" -w /rb-mrml \ | |
--platform=linux/arm/v7 \ | |
ruby:${{ matrix.ruby }} \ | |
./scripts/test-gem-install ${{ matrix.rubygems }} | |
test-precompiled-aarch64-linux: | |
needs: "cross-gem" | |
strategy: | |
fail-fast: false | |
matrix: | |
ruby: ["2.7", "3.0", "3.1", "3.2", "3.3", "3.4"] | |
include: | |
- { ruby: "2.7", rubygems: "3.4.22" } | |
- { ruby: "3.0", rubygems: "3.5.23" } | |
- { ruby: "3.1", rubygems: "default" } | |
- { ruby: "3.2", rubygems: "default" } | |
- { ruby: "3.3", rubygems: "default" } | |
- { ruby: "3.4", rubygems: "default" } | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/download-artifact@v4 | |
with: | |
name: cross-gem-aarch64-linux | |
path: pkg | |
- name: enable execution of multi-architecture containers by qemu | |
run: docker run --rm --privileged multiarch/qemu-user-static --reset -p yes | |
- run: | | |
docker run --rm -v "$(pwd):/rb-mrml" -w /rb-mrml \ | |
--platform=linux/arm64 \ | |
ruby:${{ matrix.ruby }} \ | |
./scripts/test-gem-install ${{ matrix.rubygems }} | |
test-precompiled-aarch64-linux-musl: | |
needs: "cross-gem" | |
strategy: | |
fail-fast: false | |
matrix: | |
ruby: ["2.7", "3.0", "3.1", "3.2", "3.3", "3.4"] | |
include: | |
- { ruby: "2.7", rubygems: "3.4.22" } | |
- { ruby: "3.0", rubygems: "3.5.23" } | |
- { ruby: "3.1", rubygems: "default" } | |
- { ruby: "3.2", rubygems: "default" } | |
- { ruby: "3.3", rubygems: "default" } | |
- { ruby: "3.4", rubygems: "default" } | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/download-artifact@v4 | |
with: | |
name: cross-gem-aarch64-linux-musl | |
path: pkg | |
- name: enable execution of multi-architecture containers by qemu | |
run: docker run --rm --privileged multiarch/qemu-user-static --reset -p yes | |
- run: | | |
docker run --rm -v "$(pwd):/rb-mrml" -w /rb-mrml \ | |
--platform=linux/arm64 \ | |
ruby:${{ matrix.ruby }}-alpine \ | |
./scripts/test-gem-install ${{ matrix.rubygems }} | |
test-precompiled-arm64-darwin: | |
needs: "cross-gem" | |
strategy: | |
fail-fast: false | |
matrix: | |
ruby: ["2.7", "3.0", "3.1", "3.2", "3.3", "3.4"] | |
include: | |
- { ruby: "2.7", rubygems: "3.4.22" } | |
- { ruby: "3.0", rubygems: "3.5.23" } | |
- { ruby: "3.1", rubygems: "default" } | |
- { ruby: "3.2", rubygems: "default" } | |
- { ruby: "3.3", rubygems: "default" } | |
- { ruby: "3.4", rubygems: "default" } | |
runs-on: macos-14 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: "${{ matrix.ruby }}" | |
rubygems: "${{ matrix.rubygems }}" | |
bundler-cache: true | |
- uses: actions/download-artifact@v4 | |
with: | |
name: cross-gem-arm64-darwin | |
path: pkg | |
- run: ./scripts/test-gem-install default | |
test-precompiled-x64-mingw-ucrt: | |
needs: "cross-gem" | |
strategy: | |
fail-fast: false | |
matrix: | |
ruby: ["3.1", "3.2", "3.3", "3.4"] | |
runs-on: windows-2022 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: MSP-Greg/setup-ruby-pkgs@v1 | |
with: | |
ruby-version: "${{ matrix.ruby }}" | |
bundler-cache: true | |
- uses: actions/download-artifact@v4 | |
with: | |
name: cross-gem-x64-mingw-ucrt | |
path: pkg | |
- run: ./scripts/test-gem-install default | |
shell: bash | |
test-precompiled-x64-mingw32: | |
needs: "cross-gem" | |
strategy: | |
fail-fast: false | |
matrix: | |
ruby: ["2.7", "3.0"] | |
include: | |
- { ruby: "2.7", rubygems: "3.4.22" } | |
- { ruby: "3.0", rubygems: "3.5.23" } | |
runs-on: windows-2019 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: "${{ matrix.ruby }}" | |
rubygems: "${{ matrix.rubygems }}" | |
bundler-cache: true | |
- uses: actions/download-artifact@v4 | |
with: | |
name: cross-gem-x64-mingw32 | |
path: pkg | |
- run: ./scripts/test-gem-install default | |
shell: bash | |
test-precompiled-x86_64-darwin: | |
needs: "cross-gem" | |
strategy: | |
fail-fast: false | |
matrix: | |
ruby: ["2.7", "3.0", "3.1", "3.2", "3.3", "3.4"] | |
include: | |
- { ruby: "2.7", rubygems: "3.4.22" } | |
- { ruby: "3.0", rubygems: "3.5.23" } | |
- { ruby: "3.1", rubygems: "default" } | |
- { ruby: "3.2", rubygems: "default" } | |
- { ruby: "3.3", rubygems: "default" } | |
- { ruby: "3.4", rubygems: "default" } | |
runs-on: macos-13 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: "${{ matrix.ruby }}" | |
rubygems: "${{ matrix.rubygems }}" | |
bundler-cache: true | |
- uses: actions/download-artifact@v4 | |
with: | |
name: cross-gem-x86_64-darwin | |
path: pkg | |
- run: ./scripts/test-gem-install default | |
test-precompiled-x86_64-linux: | |
needs: "cross-gem" | |
strategy: | |
fail-fast: false | |
matrix: | |
ruby: ["2.7", "3.0", "3.1", "3.2", "3.3", "3.4"] | |
include: | |
- { ruby: "2.7", rubygems: "3.4.22" } | |
- { ruby: "3.0", rubygems: "3.5.23" } | |
- { ruby: "3.1", rubygems: "default" } | |
- { ruby: "3.2", rubygems: "default" } | |
- { ruby: "3.3", rubygems: "default" } | |
- { ruby: "3.4", rubygems: "default" } | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: "${{ matrix.ruby }}" | |
rubygems: "${{ matrix.rubygems }}" | |
bundler-cache: true | |
- uses: actions/download-artifact@v4 | |
with: | |
name: cross-gem-x86_64-linux | |
path: pkg | |
- run: ./scripts/test-gem-install default | |
test-precompiled-x86_64-linux-musl: | |
needs: "cross-gem" | |
strategy: | |
fail-fast: false | |
matrix: | |
ruby: ["2.7", "3.0", "3.1", "3.2", "3.3", "3.4"] | |
include: | |
- { ruby: "2.7", rubygems: "3.4.22" } | |
- { ruby: "3.0", rubygems: "3.5.23" } | |
- { ruby: "3.1", rubygems: "default" } | |
- { ruby: "3.2", rubygems: "default" } | |
- { ruby: "3.3", rubygems: "default" } | |
- { ruby: "3.4", rubygems: "default" } | |
runs-on: ubuntu-latest | |
container: | |
image: "ruby:${{ matrix.ruby }}-alpine" | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/download-artifact@v4 | |
with: | |
name: cross-gem-x86_64-linux-musl | |
path: pkg | |
- run: ./scripts/test-gem-install ${{ matrix.rubygems }} |