name: CI on: push: branches: [master] pull_request: jobs: spec: runs-on: ubuntu-latest strategy: matrix: ruby: ["2.3", "2.4", "2.5", "2.6", "2.7", "3.0", "3.1", "3.2", "head"] steps: - uses: actions/checkout@v4 - name: Set up Ruby uses: ruby/setup-ruby@v1 with: ruby-version: ${{ matrix.ruby }} bundler-cache: true - name: rake spec run: bundle exec rake spec spec-legacy: runs-on: ubuntu-20.04 strategy: matrix: ruby: ["2.0", "2.1", "2.2"] steps: - uses: actions/checkout@v4 - name: Set up Ruby uses: ruby/setup-ruby@v1 with: ruby-version: ${{ matrix.ruby }} bundler-cache: true - name: rake spec run: bundle exec rake spec spec-all: runs-on: ubuntu-latest needs: [spec, spec-legacy] 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 rubocop: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Set up Ruby uses: ruby/setup-ruby@v1 with: ruby-version: "ruby" # latest-stable bundler-cache: true - name: rake rubocop run: bundle exec rake rubocop danger: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Set up Ruby uses: ruby/setup-ruby@v1 with: ruby-version: "ruby" # latest-stable bundler-cache: true - name: danger env: DANGER_GITHUB_API_TOKEN: ${{ secrets.DANGER_GITHUB_API_TOKEN }} run: bundle exec danger features: needs: [spec, spec-legacy] runs-on: macos-12 steps: - uses: actions/checkout@v4 - name: Cache Vagrant boxes uses: actions/cache@v3 with: path: ~/.vagrant.d/boxes key: ${{ runner.os }}-vagrant-${{ hashFiles('Vagrantfile') }} restore-keys: | ${{ runner.os }}-vagrant- - name: Set up Ruby uses: ruby/setup-ruby@v1 with: ruby-version: "ruby" # latest-stable bundler-cache: true - name: rake features run: bundle exec rake features