name: test on: push: branches: - master pull_request: types: - opened - synchronize - reopened schedule: - cron: "0 10 * * 5" # JST 19:00 (Fri) env: CI: "true" jobs: test: runs-on: ubuntu-latest container: ${{ matrix.ruby }} strategy: fail-fast: false matrix: ruby: - ruby:2.4 - ruby:2.5 - ruby:2.6 - ruby:2.7 - rubylang/ruby:master-nightly-bionic include: - ruby: rubylang/ruby:master-nightly-bionic allow_failures: "true" steps: - uses: actions/checkout@v2 - name: Cache vendor/bundle uses: actions/cache@v1 id: cache_gem with: path: vendor/bundle key: v1-gem-${{ runner.os }}-${{ matrix.ruby }}-${{ github.sha }} restore-keys: | v1-gem-${{ runner.os }}-${{ matrix.ruby }}- continue-on-error: ${{ matrix.allow_failures == 'true' }} - name: bundle update run: | set -xe bundle config path vendor/bundle bundle update --jobs $(nproc) --retry 3 continue-on-error: ${{ matrix.allow_failures == 'true' }} - 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 if: matrix.ruby >= 'ruby:2.4' continue-on-error: true - name: Set up git run: | set -xe git config --global user.email "github-runner@example.com" git config --global user.name "github runner" - name: Run test run: | set -xe bundle exec rspec bundle exec rubocop -P continue-on-error: ${{ matrix.allow_failures == 'true' }} - 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: matrix.ruby >= 'ruby:2.4' && always() continue-on-error: true - name: Slack Notification (not success) uses: homoluctus/slatify@master if: "! success()" continue-on-error: true with: job_name: ${{ format('*build* ({0})', matrix.ruby) }} 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: homoluctus/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 }}