Skip to content

CI

CI #3077

Workflow file for this run

name: CI
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
on:
pull_request:
branches: [ master ]
schedule:
- cron: '0 1 * * *'
permissions:
contents: read
jobs:
tests:
timeout-minutes: 30
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
ruby:
- '4.0'
- '3.4'
- '3.3'
- '3.2'
include:
- ruby: '4.0'
coverage: 'true'
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0
- name: Install package dependencies
run: "[ -e $APT_DEPS ] || sudo apt-get install -y --no-install-recommends $APT_DEPS"
- name: Set up Ruby
uses: ruby/setup-ruby@09a7688d3b55cf0e976497ff046b70949eeaccfd # v1.288.0
with:
ruby-version: ${{matrix.ruby}}
bundler: 'latest'
- name: Install latest bundler
run: |
gem install bundler --no-document
gem update --system --no-document
bundle config set without 'tools benchmarks docs'
- name: Bundle install
run: |
bundle install --jobs 4 --retry 3
- name: Run all tests
env:
GITHUB_COVERAGE: ${{matrix.coverage}}
run: bundle exec rake test
rubocop:
timeout-minutes: 5
runs-on: ubuntu-latest
env:
BUNDLE_GEMFILE: Gemfile.lint
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0
- name: Set up Ruby
uses: ruby/setup-ruby@09a7688d3b55cf0e976497ff046b70949eeaccfd # v1.288.0
with:
ruby-version: '4.0.1'
bundler-cache: true
- name: Run rubocop
run: bundle exec rubocop
yard-lint:
timeout-minutes: 5
runs-on: ubuntu-latest
env:
BUNDLE_GEMFILE: Gemfile.lint
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Set up Ruby
uses: ruby/setup-ruby@09a7688d3b55cf0e976497ff046b70949eeaccfd # v1.288.0
with:
ruby-version: '4.0.1'
bundler-cache: true
- run: bundle exec yard-lint lib/
minitest-integration:
timeout-minutes: 5
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0
- name: Set up Ruby
uses: ruby/setup-ruby@09a7688d3b55cf0e976497ff046b70949eeaccfd # v1.288.0
with:
ruby-version: '4.0.1'
bundler: 'latest'
- name: Install dependencies
run: bundle install --jobs 4 --retry 3
- name: Run minitest integration tests
run: bundle exec ruby -e "Dir['test/integration/minitest/*_test.rb'].sort.each { |f| require File.expand_path(f) }"
rspec-integration:
timeout-minutes: 5
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0
- name: Set up Ruby
uses: ruby/setup-ruby@09a7688d3b55cf0e976497ff046b70949eeaccfd # v1.288.0
with:
ruby-version: '4.0.1'
bundler: 'latest'
- name: Install dependencies
run: bundle install --jobs 4 --retry 3
- name: Run rspec integration tests
run: bundle exec rspec test/integration/rspec --require ./test/integration/rspec_helper.rb
lostconf:
timeout-minutes: 5
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0
- name: Set up Node.js
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
with:
node-version: '20'
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Run lostconf
run: npx lostconf --fail-on-stale
ci-success:
name: CI Success
runs-on: ubuntu-latest
if: always()
needs:
- rubocop
- tests
- minitest-integration
- rspec-integration
- yard-lint
- lostconf
steps:
- name: Check all jobs passed
if: |
contains(needs.*.result, 'failure') ||
contains(needs.*.result, 'cancelled') ||
contains(needs.*.result, 'skipped')
run: exit 1
- run: echo "All CI checks passed!"