name: test on: push: branches: - master pull_request: types: - opened - synchronize - reopened schedule: - cron: "0 10 * * 5" # JST 19:00 (Fri) jobs: test: runs-on: ubuntu-latest strategy: fail-fast: false matrix: ruby: - "2.3" - "2.4" - "2.5" - "2.6" - "2.7" - "3.0" - "3.1" - "3.2" gemfile: - rails_5_0 - rails_5_1 - rails_5_2 - rails_6_0 - rails_6_1 - rails_7_0 - rails_7_1 exclude: # Rails 6.0+ requires Ruby 2.5+ - ruby: "2.3" gemfile: rails_6_0 - ruby: "2.4" gemfile: rails_6_0 - ruby: "2.3" gemfile: rails_6_1 - ruby: "2.4" gemfile: rails_6_1 # Rails 7.0+ requires Ruby 2.7+ - ruby: "2.3" gemfile: rails_7_0 - ruby: "2.4" gemfile: rails_7_0 - ruby: "2.5" gemfile: rails_7_0 - ruby: "2.6" gemfile: rails_7_0 - ruby: "2.3" gemfile: rails_7_1 - ruby: "2.4" gemfile: rails_7_1 - ruby: "2.5" gemfile: rails_7_1 - ruby: "2.6" gemfile: rails_7_1 # Rails 5.x doesn't work on Ruby 3.0+ - ruby: "3.0" gemfile: rails_5_0 - ruby: "3.0" gemfile: rails_5_1 - ruby: "3.0" gemfile: rails_5_2 - ruby: "3.1" gemfile: rails_5_0 - ruby: "3.1" gemfile: rails_5_1 - ruby: "3.1" gemfile: rails_5_2 - ruby: "3.2" gemfile: rails_5_0 - ruby: "3.2" gemfile: rails_5_1 - ruby: "3.2" gemfile: rails_5_2 env: BUNDLE_GEMFILE: gemfiles/${{ matrix.gemfile }}.gemfile steps: - uses: actions/checkout@v4 - uses: ruby/setup-ruby@v1 with: ruby-version: ${{ matrix.ruby }} bundler-cache: true cache-version: ${{ matrix.gemfile }} - run: bundle update --jobs $(nproc) --retry 3 - name: Setup Code Climate Test Reporter uses: aktions/codeclimate-test-reporter@v1 with: codeclimate-test-reporter-id: ${{ secrets.CC_TEST_REPORTER_ID }} command: before-build continue-on-error: true - run: bundle exec rspec - name: Teardown Code Climate Test Reporter uses: aktions/codeclimate-test-reporter@v1 with: codeclimate-test-reporter-id: ${{ secrets.CC_TEST_REPORTER_ID }} command: after-build if: always() continue-on-error: true - name: Slack Notification (not success) uses: lazy-actions/slatify@master if: "! success()" continue-on-error: true with: job_name: ${{ format('*build* ({0}, {1})', matrix.ruby, matrix.gemfile) }} type: ${{ job.status }} icon_emoji: ":octocat:" url: ${{ secrets.SLACK_WEBHOOK }} token: ${{ secrets.GITHUB_TOKEN }} notify: needs: - test runs-on: ubuntu-latest steps: - name: Slack Notification (success) uses: lazy-actions/slatify@master if: always() continue-on-error: true with: job_name: '*build*' type: ${{ job.status }} icon_emoji: ":octocat:" url: ${{ secrets.SLACK_WEBHOOK }} token: ${{ secrets.GITHUB_TOKEN }}