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 a9b01b8
Showing 1 changed file with 77 additions and 120 deletions.
197 changes: 77 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,36 @@ 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-dev - Ruby 3.2
needs: ["build-cruby-gem"]
strategy:
fail-fast: false
matrix:
ruby: ["3.1", "3.2"]
runs-on: windows-2022
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install RE2
run: sudo apt-get install -y libre2-dev
- 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/x86_64-linux-gnu/libre2.so ${{ steps.setup-ruby.outputs.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 +193,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 +215,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 +235,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 +255,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 +276,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 +296,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 +314,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 a9b01b8

Please sign in to comment.