From a9b01b8098f9ffe9442b84efeea4340416f5fdba Mon Sep 17 00:00:00 2001 From: Paul Mucur Date: Wed, 20 Sep 2023 20:07:10 +0100 Subject: [PATCH] Tidy up GitHub Actions Try to speed up builds by reducing duplication (no longer testing the Rake extension task but only testing the gems). --- .github/workflows/tests.yml | 197 ++++++++++++++---------------------- 1 file changed, 77 insertions(+), 120 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 0a9c3c4..a9e8fd6 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -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' @@ -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 @@ -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: @@ -92,79 +142,6 @@ 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 @@ -172,56 +149,29 @@ jobs: - 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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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