name: Test on: - push jobs: test-linux: strategy: fail-fast: false matrix: include: - os: ubuntu-20.04 cpu: x86_64 platform: x86_64-linux image: ruby:3.1 qemu: amd64 libc: gnu - os: ubuntu-20.04 cpu: aarch64 platform: aarch64-linux image: ruby:3.1 qemu: arm64 libc: gnu - os: ubuntu-20.04 cpu: x86_64 platform: x86_64-linux image: ruby:3.0 qemu: amd64 libc: gnu - os: ubuntu-20.04 cpu: aarch64 platform: aarch64-linux image: ruby:3.0 qemu: arm64 libc: gnu - os: ubuntu-20.04 cpu: x86_64 platform: x86_64-linux image: ruby:2.7 qemu: amd64 libc: gnu - os: ubuntu-20.04 cpu: aarch64 platform: aarch64-linux image: ruby:2.7 qemu: arm64 libc: gnu - os: ubuntu-20.04 cpu: x86_64 platform: x86_64-linux image: ruby:2.6 qemu: amd64 libc: gnu - os: ubuntu-20.04 cpu: aarch64 platform: aarch64-linux image: ruby:2.6 qemu: arm64 libc: gnu - os: ubuntu-20.04 cpu: x86_64 platform: x86_64-linux image: ruby:2.5 qemu: amd64 libc: gnu - os: ubuntu-20.04 cpu: x86_64 platform: x86_64-linux image: ruby:2.4 qemu: amd64 libc: gnu - os: ubuntu-20.04 cpu: x86_64 platform: x86_64-linux image: ruby:2.3 qemu: amd64 libc: gnu - os: ubuntu-20.04 cpu: x86_64 platform: x86_64-linux image: ruby:2.2 qemu: amd64 libc: gnu - os: ubuntu-20.04 cpu: x86_64 platform: x86_64-linux image: ruby:2.1 qemu: amd64 libc: gnu - os: ubuntu-20.04 cpu: x86_64 platform: x86_64-linux image: ruby:3.1-alpine qemu: amd64 libc: musl - os: ubuntu-20.04 cpu: aarch64 platform: aarch64-linux image: ruby:3.1-alpine qemu: arm64 libc: musl - os: ubuntu-20.04 cpu: x86_64 platform: x86_64-linux image: ruby:3.0-alpine qemu: amd64 libc: musl - os: ubuntu-20.04 cpu: aarch64 platform: aarch64-linux image: ruby:3.0-alpine qemu: arm64 libc: musl - os: ubuntu-20.04 cpu: x86_64 platform: x86_64-linux image: ruby:2.7-alpine qemu: amd64 libc: musl - os: ubuntu-20.04 cpu: aarch64 platform: aarch64-linux image: ruby:2.7-alpine qemu: arm64 libc: musl - os: ubuntu-20.04 cpu: x86_64 platform: x86_64-linux image: ruby:2.6-alpine qemu: amd64 libc: musl - os: ubuntu-20.04 cpu: aarch64 platform: aarch64-linux image: ruby:2.6-alpine qemu: arm64 libc: musl # TODO: jruby images have no sudo so apt-get can't get a lock # - os: ubuntu-20.04 # cpu: x86_64 # platform: x86_64-linux # image: jruby:9.3 # qemu: amd64 # libc: gnu # - os: ubuntu-20.04 # cpu: x86_64 # platform: x86_64-linux # image: jruby:9.2 # qemu: amd64 # libc: gnu # - os: ubuntu-20.04 # cpu: x86_64 # platform: x86_64-linux # image: jruby:9.1 # qemu: amd64 # libc: gnu name: Test (${{ matrix.image }}, ${{ matrix.cpu }}) runs-on: ${{ matrix.os }} steps: - name: Enable ${{ matrix.qemu }} platform id: qemu if: ${{ matrix.cpu != 'amd64' }} run: | docker run --privileged --rm tonistiigi/binfmt:latest --install ${{ matrix.qemu }} | tee platforms.json echo "::set-output name=platforms::$(cat platforms.json)" - name: Start container id: container run: | echo ${{ matrix.image }} > container_image docker run --rm -d -v "${PWD}":"${PWD}" -w "${PWD}" --platform linux/${{ matrix.qemu }} ${{ matrix.image }} /bin/sleep 64d | tee container_id docker exec -w "${PWD}" $(cat container_id) uname -a echo "::set-output name=id::$(cat container_id)" - name: Install Alpine system dependencies if: ${{ matrix.libc == 'musl' }} run: docker exec -w "${PWD}" ${{ steps.container.outputs.id }} apk add --no-cache build-base git - name: Install JRuby system dependencies if: ${{ startsWith(matrix.image, 'jruby') }} run: | docker exec -w "${PWD}" ${{ steps.container.outputs.id }} sudo apt-get update docker exec -w "${PWD}" ${{ steps.container.outputs.id }} sudo apt-get install -y build-essential git - name: Checkout uses: actions/checkout@v2 - name: Bundle run: | docker exec -w "${PWD}" ${{ steps.container.outputs.id }} bundle install - name: Fetch binary library run: | docker exec -w "${PWD}" ${{ steps.container.outputs.id }} bundle exec rake fetch[${{ matrix.platform }}] - name: Extract binary library run: | docker exec -w "${PWD}" ${{ steps.container.outputs.id }} bundle exec rake extract[${{ matrix.platform }}] - name: Run specs run: | docker exec -w "${PWD}" ${{ steps.container.outputs.id }} bundle exec rake spec test-darwin: strategy: fail-fast: false matrix: include: - os: macos-10.15 cpu: x86_64 platform: x86_64-darwin - os: macos-11.0 cpu: x86_64 platform: x86_64-darwin # - os: macos-11.0 # cpu: arm64 # platform: arm64-darwin name: Test (${{ matrix.os }} ${{ matrix.cpu }}) runs-on: ${{ matrix.os }} steps: - name: Checkout uses: actions/checkout@v2 - name: Bundle run: | bundle install - name: Fetch binary library run: | bundle exec rake fetch[${{ matrix.platform }}] - name: Extract binary library run: | bundle exec rake extract[${{ matrix.platform }}] - name: Run specs run: | bundle exec rake spec