# This workflow uses actions that are not certified by GitHub. # They are provided by a third-party and are governed by # separate terms of service, privacy policy, and support # documentation. # This workflow will download a prebuilt Ruby version, install dependencies and run tests with Rake # For more information see: https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby name: CI on: push: branches: [main] pull_request: branches: ['**'] jobs: test: runs-on: ubuntu-latest name: test (${{ matrix.blacklight_version && format('bl {0} / ', matrix.blacklight_version) }}rails ${{ matrix.rails_version }} / rb ${{ matrix.ruby }} ${{ matrix.additional_name }}) strategy: fail-fast: false matrix: # We have SEVERAL axes of difference we support. # # * Blacklight: 7, 8, or 9 # * Rails: 7 or 8 # * sprockets or propshaft(with cssbundling-rails sass) # * importmap-rails or esbuild (each with sprockets or importmaps) # # We should work with almost every combo of these (even though BL itself # doesn't officially support every one), but we don't test with every one, # that'd be too much. Plus BL can't *generate* every one even though it # can be made to work with every one. We test with some good significant # representative samples. include: # BLACKLIGHT EDGE, can test with Rails 8 beta, importmap and esbuild # - rails_version: "~> 8.0.0" blacklight_version: '{ "git": "https://github.com/projectblacklight/blacklight.git" }' ruby: "3.3" additional_name: "/ importmap-rails" additional_engine_cart_rails_options: "--css=bootstrap" - rails_version: "~> 8.0.0" blacklight_version: '{ "git": "https://github.com/projectblacklight/blacklight.git" }' ruby: "3.3" additional_name: "/ esbuild" additional_engine_cart_rails_options: "--css=bootstrap --javascript=esbuild" # BLACKLIGHT 8, can test with use importmaps and esbuild # - rails_version: "7.2.1" blacklight_version: "~> 8.0" ruby: "3.3" additional_name: "/ importmap-rails, sprockets" - rails_version: "7.2.1" blacklight_version: "~> 8.0" ruby: "3.3" additional_name: "/ importmap-rails, propshaft" additional_engine_cart_rails_options: "-a propshaft --css=bootstrap" - rails_version: "7.2.1" blacklight_version: "~> 8.0" ruby: 3.3 additional_engine_cart_rails_options: "-a propshaft --javascript=esbuild --css=bootstrap" additional_name: "/ esbuild, propshaft" # We can't currently test Blacklight 8 in a few situations we'd like to. # # * Blacklight 8 can't easily generate an app with Rails 7 and sprockets and esbuild # (the default layout won't be right), although I think it should work fine. # # * Can't test with unreleaed Blacklight main and esbuild because the blacklight-frontend # npm package doens't work from git checkout. So currently can't test with Rails8 # and esbuild. # BLACKLIGHT 7, only test with esbuild, not sure if it supports importmaps, it won't generate it - rails_version: "7.2.1" blacklight_version: "~> 7.0" ruby: "3.3" additional_engine_cart_rails_options: "--javascript=esbuild" additional_name: "/ esbuild, sprockets" - rails_version: "7.2.1" blacklight_version: "~> 7.0" ruby: "3.3" additional_engine_cart_rails_options: "--javascript=esbuild --css=bootstrap -a propshaft" additional_name: "/ esbuild, propshaft" - rails_version: "7.1.4" blacklight_version: "~> 7.0" ruby: "3.2" additional_engine_cart_rails_options: "--javascript=esbuild" additional_name: "/ esbuild, sprockets" - rails_version: "7.0.8.4" blacklight_version: "~> 7.0" ruby: "3.1" additional_engine_cart_rails_options: "--javascript=esbuild" additional_name: "/ esbuild, sprockets" env: BLACKLIGHT_VERSION: ${{ matrix.blacklight_version || '~> 8.0' }} RAILS_VERSION: ${{ matrix.rails_version }} ENGINE_CART_RAILS_OPTIONS: "--skip-git --skip-listen --skip-spring --skip-keeps --skip-coffee --skip-test ${{ matrix.additional_engine_cart_rails_options }}" steps: - uses: actions/checkout@v4 - name: Set up Ruby uses: ruby/setup-ruby@v1 with: ruby-version: ${{ matrix.ruby }} bundler: "latest" - name: Install dependencies run: bundle install # Try to cache solr dist download, which may not save us much time, # but hopes to save us from being throttled/blocked on some runs by # apache foundation servers unhappy that we're downloading the dist zip # so much. - name: Cache solr install uses: actions/cache@v3 with: # these paths specified in .solr_wrapper.yml: path: | ci_dl_solr_dist key: ${{ runner.os }}-solr-${{ hashFiles('.solr_wrapper.yml') }} - name: Run tests run: bundle exec rake ci