name: CI on: pull_request: push: branches: - main jobs: rubocop: name: "RuboCop" runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: ruby/setup-ruby@v1 with: ruby-version: "2.7" bundler-cache: true - run: bundle exec rubocop test: name: "Test / Ruby ${{ matrix.ruby }}" runs-on: ubuntu-latest strategy: matrix: ruby: ["2.4", "2.5", "2.6", "2.7", "3.0", "3.1", "3.2", "3.3"] env: sshkit: "master" steps: - uses: actions/checkout@v4 - uses: ruby/setup-ruby@v1 with: ruby-version: ${{ matrix.ruby }} bundler-cache: true - run: bundle exec rake test test_legacy_ruby_19: name: "Test / Ruby 1.9 / SSHKit ${{ matrix.sshkit }}" runs-on: ubuntu-20.04 strategy: matrix: sshkit: ["1.6.1", "1.7.1"] env: sshkit: ${{ matrix.sshkit }} RUBYOPT: "-Ku" steps: - uses: actions/checkout@v4 - uses: ruby/setup-ruby@v1 with: ruby-version: "1.9" rubygems: "2.6.9" bundler: "1.17.3" bundler-cache: true - run: bundle exec rake test test_legacy_ruby: name: "Test / Ruby ${{ matrix.ruby }} / SSHKit ${{ matrix.sshkit }}" runs-on: ubuntu-20.04 strategy: matrix: ruby: ["2.0", "2.0", "2.1", "2.2", "2.3"] sshkit: ["1.6.1", "1.7.1", "master"] env: sshkit: ${{ matrix.sshkit }} steps: - uses: actions/checkout@v4 - uses: ruby/setup-ruby@v1 with: ruby-version: ${{ matrix.ruby }} bundler: "1.17.3" bundler-cache: true - run: bundle exec rake test spec_all: name: "Test / Ruby (All)" runs-on: ubuntu-latest needs: [test, test_legacy_ruby, test_legacy_ruby_19] if: always() steps: - name: All tests ok if: ${{ !(contains(needs.*.result, 'failure')) }} run: exit 0 - name: Some tests failed if: ${{ contains(needs.*.result, 'failure') }} run: exit 1