Skip to content

Commit

Permalink
Tidy up GitHub Actions
Browse files Browse the repository at this point in the history
Try to speed up builds by reducing duplication (no longer testing the
Rake extension task but only testing the gems).
  • Loading branch information
mudge committed Sep 21, 2023
1 parent e37131c commit 3b52dbe
Showing 1 changed file with 86 additions and 120 deletions.
206 changes: 86 additions & 120 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,19 +7,68 @@ on:
push:
branches:
- main
- v*.*.x
- v*.*
tags:
- v*.*.*
pull_request:

jobs:
build-cruby-gem:
name: "Build CRuby gem"
runs-on: "ubuntu-latest"
steps:
- uses: actions/checkout@v4
- uses: actions/cache@v3
with:
path: ports/archives
key: archives-ubuntu-${{hashFiles('ext/re2/extconf.rb')}}
- uses: ruby/setup-ruby@v1
with:
ruby-version: "3.2"
bundler-cache: true
- run: ./scripts/test-gem-build gems ruby ${{github.ref_type}}
- uses: actions/upload-artifact@v3
with:
name: cruby-gem
path: gems

build-precompiled-gems:
name: "Precompile ${{ matrix.platform }} gem"
strategy:
fail-fast: false
matrix:
platform:
- "aarch64-linux"
- "arm-linux"
- "arm64-darwin" # github actions does not support this runtime as of 2022-12, but let's build anyway
- "x64-mingw-ucrt"
- "x64-mingw32"
- "x86-linux"
- "x86-mingw32" # github actions does not support this runtime as of 2022-12, but let's build anyway
- "x86_64-darwin"
- "x86_64-linux"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/cache@v3
with:
path: ports/archives
key: archives-ubuntu-${{hashFiles('ext/re2/extconf.rb')}}
- run: |
docker run --rm -v "$(pwd):/re2" -w /re2 \
"ghcr.io/rake-compiler/rake-compiler-dock-image:1.3.0-mri-${{matrix.platform}}" \
./scripts/test-gem-build gems ${{matrix.platform}} ${{github.ref_type}}
- uses: actions/upload-artifact@v3
with:
name: "cruby-${{matrix.platform}}-gem"
path: gems

compile-and-test-system-dependencies:
name: System libre2.${{ matrix.libre2.soname }} - Ruby ${{ matrix.ruby }}
needs: ["build-cruby-gem"]
name: System Dependencies - ${{ matrix.sys }} vendored libs - Ruby ${{ matrix.ruby }} - libre2 ABI version ${{ matrix.libre2.soname }}
runs-on: ubuntu-20.04
strategy:
matrix:
sys: ["enable", "disable"]
ruby:
- '3.2'
- '3.1'
Expand All @@ -43,11 +92,13 @@ jobs:
soname: 10
- version: "20230701"
soname: 11
needs_abseil: true
steps:
- uses: actions/checkout@v4
- name: Remove any existing libre2 installation
run: sudo apt-get remove -y libre2-dev libre2-5
- name: Install Abseil for newer re2 releases
if: ${{ matrix.libre2.needs_abseil }}
run: |
sudo apt-get install -y software-properties-common
sudo add-apt-repository ppa:savoury1/build-tools
Expand All @@ -64,12 +115,11 @@ jobs:
with:
name: cruby-gem
path: gems
- name: "Link libre2 into Ruby's exec_prefix"
run: ln -s /usr/lib/libre2.so `ruby -e "puts RbConfig::CONFIG['exec_prefix']"`/lib/libre2.so
- run: ./scripts/test-gem-install gems --${{matrix.sys}}-system-libraries
- run: ./scripts/test-gem-install gems --enable-system-libraries

compile-and-test-vendored-dependencies:
name: Vendored Dependencies - Ruby ${{ matrix.ruby }} - ${{ matrix.runs-on }}
name: Vendored - Ruby ${{ matrix.ruby }} - ${{ matrix.runs-on }}
needs: ["build-cruby-gem"]
strategy:
fail-fast: false
matrix:
Expand All @@ -92,136 +142,45 @@ jobs:
- uses: ruby/setup-ruby@v1
with:
ruby-version: ${{matrix.ruby}}
bundler-cache: true
- uses: actions/cache@v3
with:
path: ports
key: ports-${{matrix.runs-on}}-${{hashFiles('ext/re2/extconf.rb')}}
- run: bundle exec rake compile spec

build-cruby-gem:
runs-on: "ubuntu-latest"
steps:
- uses: actions/checkout@v4
- uses: actions/cache@v3
with:
path: ports/archives
key: archives-ubuntu-${{hashFiles('ext/re2/extconf.rb')}}
- uses: ruby/setup-ruby@v1
with:
ruby-version: "3.2"
bundler-cache: true
- run: ./scripts/test-gem-build gems ruby ${{github.ref_type}}
- uses: actions/upload-artifact@v3
with:
name: cruby-gem
path: gems

test-cruby-gem-linux:
needs: ["build-cruby-gem"]
strategy:
fail-fast: false
matrix:
ruby: ["2.6", "2.7", "3.0", "3.1", "3.2"]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: ruby/setup-ruby@v1
with:
ruby-version: "${{matrix.ruby}}"
- uses: actions/download-artifact@v3
with:
name: cruby-gem
path: gems
- run: ./scripts/test-gem-install gems

test-cruby-gem-macos:
needs: ["build-cruby-gem"]
strategy:
fail-fast: false
matrix:
ruby: ["2.6", "2.7", "3.0", "3.1", "3.2"]
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- uses: ruby/setup-ruby@v1
with:
ruby-version: "${{matrix.ruby}}"
- uses: actions/download-artifact@v3
with:
name: cruby-gem
path: gems
- run: ./scripts/test-gem-install gems

test-cruby-gem-windows:
needs: ["build-cruby-gem"]
strategy:
fail-fast: false
matrix:
ruby: ["2.6", "2.7", "3.0"]
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- uses: ruby/setup-ruby@v1
with:
ruby-version: "${{matrix.ruby}}"
- uses: actions/download-artifact@v3
with:
name: cruby-gem
path: gems
- run: ./scripts/test-gem-install gems
shell: bash

test-cruby-gem-windows-ucrt:
compile-and-test-vendored-dependencies-with-system-install:
name: Vendored - system libre2.11 - Ruby 3.2
needs: ["build-cruby-gem"]
strategy:
fail-fast: false
matrix:
ruby: ["3.1", "3.2"]
runs-on: windows-2022
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
- name: Remove any existing libre2 installation
run: sudo apt-get remove -y libre2-dev libre2-5
- name: Install Abseil
run: |
sudo apt-get install -y software-properties-common
sudo add-apt-repository ppa:savoury1/build-tools
sudo apt-get install -y libabsl-dev
- name: Download and install specific release of libre2
run: |
curl -Lo libre2-dev.deb https://github.com/mudge/re2-ci/releases/download/v2/libre2-dev_20230701_amd64.deb
sudo dpkg -i libre2-dev.deb
- uses: ruby/setup-ruby@v1
id: setup-ruby
with:
ruby-version: "${{matrix.ruby}}"
ruby-version: "3.2"
bundler-cache: true
- uses: actions/download-artifact@v3
with:
name: cruby-gem
path: gems
- name: "Link libre2 into Ruby's lib directory"
run: ln -s /usr/lib/libre2.so ${{ steps.setup-ruby.ruby-prefix }}/lib/libre2.so
- run: ./scripts/test-gem-install gems
shell: bash

build-precompiled-gems:
strategy:
fail-fast: false
matrix:
platform:
- "aarch64-linux"
- "arm-linux"
- "arm64-darwin" # github actions does not support this runtime as of 2022-12, but let's build anyway
- "x64-mingw-ucrt"
- "x64-mingw32"
- "x86-linux"
- "x86-mingw32" # github actions does not support this runtime as of 2022-12, but let's build anyway
- "x86_64-darwin"
- "x86_64-linux"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/cache@v3
with:
path: ports/archives
key: archives-ubuntu-${{hashFiles('ext/re2/extconf.rb')}}
- run: |
docker run --rm -v "$(pwd):/re2" -w /re2 \
"ghcr.io/rake-compiler/rake-compiler-dock-image:1.3.0-mri-${{matrix.platform}}" \
./scripts/test-gem-build gems ${{matrix.platform}} ${{github.ref_type}}
- uses: actions/upload-artifact@v3
with:
name: "cruby-${{matrix.platform}}-gem"
path: gems

test-precompiled-aarch64-linux:
name: Precompiled - Ruby ${{ matrix.ruby }} - aarch64-linux
needs: ["build-precompiled-gems"]
strategy:
fail-fast: false
Expand All @@ -243,6 +202,7 @@ jobs:
./scripts/test-gem-install ./gems
test-precompiled-arm-linux:
name: Precompiled - Ruby ${{ matrix.ruby }} - arm-linux
needs: ["build-precompiled-gems"]
strategy:
fail-fast: false
Expand All @@ -264,6 +224,7 @@ jobs:
./scripts/test-gem-install ./gems
test-precompiled-x64-mingw-ucrt:
name: Precompiled - Ruby ${{ matrix.ruby }} - x64-mingw-ucrt
needs: ["build-precompiled-gems"]
strategy:
fail-fast: false
Expand All @@ -283,6 +244,7 @@ jobs:
shell: bash

test-precompiled-x64-mingw32:
name: Precompiled - Ruby ${{ matrix.ruby }} - x64-mingw32
needs: ["build-precompiled-gems"]
strategy:
fail-fast: false
Expand All @@ -302,6 +264,7 @@ jobs:
shell: bash

test-precompiled-x86-linux:
name: Precompiled - Ruby ${{ matrix.ruby }} - x86-linux
needs: ["build-precompiled-gems"]
strategy:
fail-fast: false
Expand All @@ -322,7 +285,8 @@ jobs:
ruby:${{matrix.ruby}} \
./scripts/test-gem-install ./gems
test-precompiled-linux-x86_64:
test-precompiled-x86_64-linux:
name: Precompiled - Ruby ${{ matrix.ruby }} - x86_64-linux
needs: ["build-precompiled-gems"]
strategy:
fail-fast: false
Expand All @@ -341,6 +305,7 @@ jobs:
- run: ./scripts/test-gem-install gems

test-precompiled-x86_64-darwin:
name: Precompiled - Ruby ${{ matrix.ruby }} - x86_64-darwin
needs: ["build-precompiled-gems"]
strategy:
fail-fast: false
Expand All @@ -358,7 +323,8 @@ jobs:
path: gems
- run: ./scripts/test-gem-install gems

test-precompiled-x86_64-linux:
test-precompiled-x86_64-alpine:
name: Precompiled - Ruby ${{ matrix.ruby }} - x86_64-alpine
needs: ["build-precompiled-gems"]
strategy:
fail-fast: false
Expand Down

0 comments on commit 3b52dbe

Please sign in to comment.