name: Testing on: push: branches: - '**' pull_request: permissions: contents: read # to fetch code (actions/checkout) jobs: test: name: ${{ matrix.ruby }} (Rack ${{ matrix.rack }}, Puma ${{ matrix.puma }}, Tilt ${{ matrix.tilt }}) permissions: contents: read # to fetch code (actions/checkout) actions: read # to list jobs for workflow run (8398a7/action-slack) runs-on: ubuntu-latest timeout-minutes: 15 strategy: fail-fast: false matrix: puma: - stable rack: - '~> 2' tilt: - stable # Due to https://github.com/actions/runner/issues/849, we have to use quotes for '3.0' ruby: [2.6, 2.7, '3.0', 3.1, 3.2, truffleruby] include: # Puma - { ruby: 3.1, rack: '~> 2', puma: '~> 5', tilt: stable } - { ruby: 3.2, rack: '~> 2', puma: head, tilt: stable, allow-failure: true } # Tilt - { ruby: 3.2, rack: '~> 2', puma: stable, tilt: head, allow-failure: true } # Due to flaky tests, see https://github.com/sinatra/sinatra/pull/1870 - { ruby: jruby-9.3, rack: '~> 2', puma: stable, tilt: stable, allow-failure: true } # Due to https://github.com/jruby/jruby/issues/7647 - { ruby: jruby-9.4, rack: '~> 2', puma: stable, tilt: stable, allow-failure: true } # Never fail our build due to problems with head - { ruby: ruby-head, rack: '~> 2', puma: stable, tilt: stable, allow-failure: true } - { ruby: jruby-head, rack: '~> 2', puma: stable, tilt: stable, allow-failure: true } - { ruby: truffleruby-head, rack: '~> 2', puma: stable, tilt: stable, allow-failure: true } env: rack: ${{ matrix.rack }} puma: ${{ matrix.puma }} tilt: ${{ matrix.tilt }} steps: - name: Install dependencies run: | sudo apt-get install --yes \ pandoc \ nodejs \ pkg-config \ libxml2-dev \ libxslt-dev \ libyaml-dev - uses: actions/checkout@v3 - uses: ruby/setup-ruby@v1 continue-on-error: ${{ matrix.allow-failure || false }} id: setup-ruby with: ruby-version: ${{ matrix.ruby }} bundler-cache: true - name: Run sinatra tests continue-on-error: ${{ matrix.allow-failure || false }} id: tests run: bundle exec rake - name: Run sinatra-contrib tests continue-on-error: ${{ matrix.allow-failure || false }} id: contrib-tests working-directory: sinatra-contrib run: | bundle install --jobs=3 --retry=3 bundle exec rake - name: Run rack-protection tests continue-on-error: ${{ matrix.allow-failure || false }} id: protection-tests working-directory: rack-protection run: | bundle install --jobs=3 --retry=3 bundle exec rake # because continue-on-error marks the steps as pass even if they fail - name: "setup-ruby (bundle install) outcome: ${{ steps.setup-ruby.outcome }}" run: "" - name: "sinatra tests outcome: ${{ steps.tests.outcome }}" run: "" - name: "sinatra-contrib tests outcome: ${{ steps.contrib-tests.outcome }}" run: "" - name: "rack-protection tests outcome: ${{ steps.protection-tests.outcome }}" run: "" notify: runs-on: ubuntu-latest if: always() && github.ref_name == 'main' needs: test steps: - uses: zzak/action-discord@v4 with: webhook: ${{ secrets.DISCORD_WEBHOOK }}