Skip to content

Commit 56b3cf7

Browse files
Introduce matrix for unit tests.
reduce test matrix remove mongoid-head gemfile as it is no longer used reduce matrix entry to multi dimension matrix test include for mongoid 9 exclude incompatible versions remove compatible configurations remove minor version specification to reduce number of combinations reduce the number of parallel jobs and incorporate caching remove caching add caching create single entry add matrix with single entry add ruby 3.0 and mongoid 8 complete string add exclusion rules add more exclusion rules correct gem file name and add more exclusion rules add more exclusion rules for mongoid_3 add exlcusion rules add ruby 2.7 and mongoid 4 add more exclusion rules for ruby 3.7 get rid of mongodb 3.6 add ruby 2.7 and mongoid 3 and 4 to exlcusion list add ruby 2.7 and mongoid 5 exclude ruby 2.6 and mongoid 3 and allow ruby 2.6 and mongoid 7 to run
1 parent 50bcd09 commit 56b3cf7

File tree

2 files changed

+43
-77
lines changed

2 files changed

+43
-77
lines changed

.github/workflows/test.yml

Lines changed: 43 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -5,79 +5,64 @@ on: [push, pull_request]
55
jobs:
66
build:
77
name: >-
8-
Mongoid Test with: - Ruby ${{ matrix.entry.ruby }} - MongoDB ${{ matrix.entry.mongodb }} - Gemfile ${{ matrix.entry.gemfile }})
8+
Mongoid Test with: - Ruby ${{ matrix.ruby }} - MongoDB ${{ matrix.mongodb }} - Gemfile ${{ matrix.gemfile }})
99
env:
1010
CI: true
1111
TESTOPTS: "-v"
12-
BUNDLE_GEMFILE: gemfiles/${{ matrix.entry.gemfile }}.gemfile
12+
BUNDLE_GEMFILE: gemfiles/${{ matrix.gemfile }}.gemfile
1313
runs-on: ubuntu-latest
1414
continue-on-error: false
1515
strategy:
16+
max-parallel: 4
1617
matrix:
17-
entry:
18-
- { ruby: "2.6", gemfile: 'mongoid_3', mongodb: "3.6" }
19-
- { ruby: "2.6", gemfile: 'mongoid_4', mongodb: "3.6" }
20-
- { ruby: "2.6", gemfile: 'mongoid_4', mongodb: "3.6" }
21-
- { ruby: "2.6", gemfile: 'mongoid_5', mongodb: "3.6" }
22-
- { ruby: "2.6", gemfile: 'mongoid_5', mongodb: "3.6" }
23-
- { ruby: "2.6", gemfile: 'mongoid_6', mongodb: "3.6" }
24-
- { ruby: "2.6", gemfile: 'mongoid_6', mongodb: "3.6" }
25-
- { ruby: "2.6", gemfile: 'mongoid_6', mongodb: "3.6" }
26-
- { ruby: "2.6", gemfile: 'mongoid_7', mongodb: "3.6" }
27-
- { ruby: "2.6", gemfile: 'mongoid_7', mongodb: "3.6" }
28-
- { ruby: "2.7", gemfile: 'mongoid_7', mongodb: "3.6" }
29-
- { ruby: "3.0", gemfile: 'mongoid_8', mongodb: "3.6" }
30-
- { ruby: "3.1", gemfile: 'mongoid_8', mongodb: "3.6" }
31-
- { ruby: "2.6", gemfile: 'mongoid_6', mongodb: "4.0" }
32-
- { ruby: "2.6", gemfile: 'mongoid_7', mongodb: "4.0" }
33-
- { ruby: "2.6", gemfile: 'mongoid_7', mongodb: "4.0" }
34-
- { ruby: "2.7", gemfile: 'mongoid_7', mongodb: "4.0" }
35-
- { ruby: "3.0", gemfile: 'mongoid_8', mongodb: "4.0" }
36-
- { ruby: "3.1", gemfile: 'mongoid_8', mongodb: "4.0" }
37-
- { ruby: "2.6", gemfile: 'mongoid_6', mongodb: "4.2" }
38-
- { ruby: "2.6", gemfile: 'mongoid_7', mongodb: "4.2" }
39-
- { ruby: "2.6", gemfile: 'mongoid_7', mongodb: "4.2" }
40-
- { ruby: "2.7", gemfile: 'mongoid_7', mongodb: "4.2" }
41-
- { ruby: "3.0", gemfile: 'mongoid_8', mongodb: "4.2" }
42-
- { ruby: "3.1", gemfile: 'mongoid_8', mongodb: "4.2" }
43-
- { ruby: "2.6", gemfile: 'mongoid_6', mongodb: "4.4" }
44-
- { ruby: "2.6", gemfile: 'mongoid_7', mongodb: "4.4" }
45-
- { ruby: "2.6", gemfile: 'mongoid_7', mongodb: "4.4" }
46-
- { ruby: "2.7", gemfile: 'mongoid_7', mongodb: "4.4" }
47-
- { ruby: "3.0", gemfile: 'mongoid_8', mongodb: "4.4" }
48-
- { ruby: "3.1", gemfile: 'mongoid_8', mongodb: "4.4" }
49-
- { ruby: "2.6", gemfile: 'mongoid_6', mongodb: "5.0" }
50-
- { ruby: "2.6", gemfile: 'mongoid_7', mongodb: "5.0" }
51-
- { ruby: "2.6", gemfile: 'mongoid_7', mongodb: "5.0" }
52-
- { ruby: "2.7", gemfile: 'mongoid_7', mongodb: "5.0" }
53-
- { ruby: "3.0", gemfile: 'mongoid_8', mongodb: "5.0" }
54-
- { ruby: "3.1", gemfile: 'mongoid_8', mongodb: "5.0" }
55-
- { ruby: "3.1", gemfile: 'mongoid_9', mongodb: "5.0" }
56-
- { ruby: "2.6", gemfile: 'mongoid_6', mongodb: "6.0" }
57-
- { ruby: "2.6", gemfile: 'mongoid_7', mongodb: "6.0" }
58-
- { ruby: "2.6", gemfile: 'mongoid_7', mongodb: "6.0" }
59-
- { ruby: "2.7", gemfile: 'mongoid_7', mongodb: "6.0" }
60-
- { ruby: "3.0", gemfile: 'mongoid_8', mongodb: "6.0" }
61-
- { ruby: "3.1", gemfile: 'mongoid_8', mongodb: "6.0" }
62-
- { ruby: "3.1", gemfile: 'mongoid_9', mongodb: "6.0" }
63-
- { ruby: "2.6", gemfile: 'mongoid_6', mongodb: "7.0" }
64-
- { ruby: "2.6", gemfile: 'mongoid_7', mongodb: "7.0" }
65-
- { ruby: "2.6", gemfile: 'mongoid_7', mongodb: "7.0" }
66-
- { ruby: "2.7", gemfile: 'mongoid_7', mongodb: "7.0" }
67-
- { ruby: "3.0", gemfile: 'mongoid_8', mongodb: "7.0" }
68-
- { ruby: "3.1", gemfile: 'mongoid_8', mongodb: "7.0" }
69-
- { ruby: "3.1", gemfile: 'mongoid_9', mongodb: "7.0" }
18+
ruby: ["2.6", "2.7", "3.0", "3.1"]
19+
gemfile: ["mongoid_3", "mongoid_4", "mongoid_5", "mongoid_6", "mongoid_7", "mongoid_8", "mongoid_9"]
20+
mongodb: ["4.0", "5.0", "6.0", "7.0"]
21+
exclude:
22+
# Exclusion rules for incompatible versions ordered by ruby version, gemfile, and mongodb version
23+
- { ruby: "2.6", gemfile: "mongoid_3" }
24+
- { ruby: "2.6", gemfile: "mongoid_9" }
25+
- { ruby: "2.6", gemfile: "mongoid_4", mongodb: "6.0" }
26+
- { ruby: "2.6", gemfile: "mongoid_4", mongodb: "7.0" }
27+
- { ruby: "2.6", gemfile: "mongoid_8", mongodb: "4.0" }
28+
- { ruby: "2.6", gemfile: "mongoid_8", mongodb: "5.0" }
29+
- { ruby: "2.6", gemfile: "mongoid_8", mongodb: "6.0" }
30+
- { ruby: "2.7", gemfile: "mongoid_3" }
31+
- { ruby: "2.7", gemfile: "mongoid_4" }
32+
- { ruby: "2.7", gemfile: "mongoid_5" }
33+
- { ruby: "3.0", gemfile: "mongoid_3" }
34+
- { ruby: "3.0", gemfile: "mongoid_4" }
35+
- { ruby: "3.0", gemfile: "mongoid_5" }
36+
- { ruby: "3.0", gemfile: "mongoid_6" }
37+
- { ruby: "3.1", gemfile: "mongoid_3" }
38+
- { ruby: "3.1", gemfile: "mongoid_4" }
39+
- { ruby: "3.1", gemfile: "mongoid_5" }
40+
- { ruby: "3.1", gemfile: "mongoid_6" }
7041
steps:
71-
- name: Set up MongoDB ${{ matrix.entry.mongodb }}
42+
- name: Cache Gems
43+
uses: actions/cache@v3
44+
with:
45+
path: vendor/bundle
46+
key: ${{ runner.os }}-gem-${{ hashFiles('**/Gemfile.lock') }}
47+
restore-keys: |
48+
${{ runner.os }}-gem-
49+
50+
- name: Set up MongoDB ${{ matrix.mongodb }}
7251
uses: supercharge/mongodb-github-action@1.8.0
7352
with:
74-
mongodb-version: ${{ matrix.entry.mongodb }}
53+
mongodb-version: ${{ matrix.mongodb }}
54+
7555
- uses: actions/checkout@v3
56+
7657
- name: Set up Ruby
7758
uses: ruby/setup-ruby@v1
7859
with:
79-
ruby-version: ${{ matrix.entry.ruby }}
60+
ruby-version: ${{ matrix.ruby }}
8061
bundler: '2'
8162
bundler-cache: true
63+
64+
- name: Install dependencies
65+
run: bundle install
66+
8267
- name: Run tests
8368
run: bundle exec rake

gemfiles/mongoid_head.gemfile

Lines changed: 0 additions & 19 deletions
This file was deleted.

0 commit comments

Comments
 (0)