Skip to content

Commit

Permalink
Merge pull request #103 from mudge/github-actions-cleanup
Browse files Browse the repository at this point in the history
Tidy up GitHub Actions
  • Loading branch information
stanhu authored Sep 21, 2023
2 parents e37131c + a9b01b8 commit 23fab86
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 23fab86

Please sign in to comment.