From a4db3b675d8b6f8ac8491d257e59c4755fbc842a Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Tue, 28 Sep 2021 13:27:03 +1000 Subject: [PATCH] DRY actions config with matrix syntax This uses the matrix syntax for all rspec calls. It is easier to maintain than the previous list of GH Actions workflows. The execution of the rspec rake task is still in its own job because it doesn't fit in the same pattern. The JS tests are also executed in that job. --- .github/workflows/build.yml | 226 ++---------------------------------- 1 file changed, 11 insertions(+), 215 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c88dc71f8f..ca08649e82 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -13,7 +13,7 @@ env: RAILS_ENV: test jobs: - test-controllers-and-serializers: + rspec: runs-on: ubuntu-18.04 services: postgres: @@ -32,7 +32,16 @@ jobs: matrix: specs: - "spec/controllers" + - "spec/models" + - "spec/features/admin/[a-o0-9]*_spec.rb" + - "spec/features/admin/[p-z]*_spec.rb" + - "spec/features/admin/*/*_spec.rb" + - "spec/features/consumer" + - "spec/lib" + - "spec/migrations" - "spec/serializers" + - "spec/system" + - "engines/*/spec" steps: - uses: actions/checkout@v2 @@ -59,171 +68,7 @@ jobs: - name: Run controller tests run: bundle exec rspec --profile -- ${{ matrix.specs }} - test-models: - runs-on: ubuntu-18.04 - services: - postgres: - image: postgres:10 - ports: ["5432:5432"] - options: >- - --health-cmd pg_isready - --health-interval 10s - --health-timeout 5s - --health-retries 5 - env: - POSTGRES_DB: open_food_network_test - POSTGRES_USER: ofn - POSTGRES_PASSWORD: f00d - steps: - - uses: actions/checkout@v2 - - - name: Set up Ruby - uses: ruby/setup-ruby@v1 - with: - bundler-cache: true # runs 'bundle install' and caches installed gems automatically - - - uses: actions/setup-node@v2 - with: - node-version: '14.15.5' - - - name: Install JS dependencies - run: yarn install --frozen-lockfile - - - name: Set up application.yml - run: cp config/application.yml.example config/application.yml - - - name: Set up database - run: | - bundle exec rake db:create RAILS_ENV=test - bundle exec rake db:schema:load RAILS_ENV=test - - - name: Run tests - run: bundle exec rspec --profile -- spec/models - - test-admin-features-1: - runs-on: ubuntu-18.04 - services: - postgres: - image: postgres:10 - ports: ["5432:5432"] - options: >- - --health-cmd pg_isready - --health-interval 10s - --health-timeout 5s - --health-retries 5 - env: - POSTGRES_DB: open_food_network_test - POSTGRES_USER: ofn - POSTGRES_PASSWORD: f00d - steps: - - uses: actions/checkout@v2 - - - name: Set up Ruby - uses: ruby/setup-ruby@v1 - with: - bundler-cache: true # runs 'bundle install' and caches installed gems automatically - - - uses: actions/setup-node@v2 - with: - node-version: '14.15.5' - - - name: Install JS dependencies - run: yarn install --frozen-lockfile - - - name: Set up application.yml - run: cp config/application.yml.example config/application.yml - - - name: Set up database - run: | - bundle exec rake db:create RAILS_ENV=test - bundle exec rake db:schema:load RAILS_ENV=test - - - name: Run admin feature tests - run: bundle exec rspec --profile -- spec/features/admin/[a-o0-9]*_spec.rb - - test-admin-features-2: - runs-on: ubuntu-18.04 - services: - postgres: - image: postgres:10 - ports: ["5432:5432"] - options: >- - --health-cmd pg_isready - --health-interval 10s - --health-timeout 5s - --health-retries 5 - env: - POSTGRES_DB: open_food_network_test - POSTGRES_USER: ofn - POSTGRES_PASSWORD: f00d - steps: - - uses: actions/checkout@v2 - - - name: Set up Ruby - uses: ruby/setup-ruby@v1 - with: - bundler-cache: true # runs 'bundle install' and caches installed gems automatically - - - uses: actions/setup-node@v2 - with: - node-version: '14.15.5' - - - name: Install JS dependencies - run: yarn install --frozen-lockfile - - - name: Set up application.yml - run: cp config/application.yml.example config/application.yml - - - name: Set up database - run: | - bundle exec rake db:create RAILS_ENV=test - bundle exec rake db:schema:load RAILS_ENV=test - - - name: Run admin feature tests - run: bundle exec rspec --profile -- spec/features/admin/[p-z]*_spec.rb - - test-consumer-features: - runs-on: ubuntu-18.04 - services: - postgres: - image: postgres:10 - ports: ["5432:5432"] - options: >- - --health-cmd pg_isready - --health-interval 10s - --health-timeout 5s - --health-retries 5 - env: - POSTGRES_DB: open_food_network_test - POSTGRES_USER: ofn - POSTGRES_PASSWORD: f00d - steps: - - uses: actions/checkout@v2 - - - name: Set up Ruby - uses: ruby/setup-ruby@v1 - with: - bundler-cache: true # runs 'bundle install' and caches installed gems automatically - - - uses: actions/setup-node@v2 - with: - node-version: '14.15.5' - - - name: Install JS dependencies - run: yarn install --frozen-lockfile - - - name: Set up application.yml - run: cp config/application.yml.example config/application.yml - - - name: Set up database - run: | - bundle exec rake db:create RAILS_ENV=test - bundle exec rake db:schema:load RAILS_ENV=test - - - name: Run consumer feature tests - run: bundle exec rspec --profile -- spec/features/consumer - - test-engines-etc: + test-the-rest: runs-on: ubuntu-18.04 services: postgres: @@ -267,54 +112,5 @@ jobs: - name: Run jest tests run: yarn jest - # Migration tests need to be run in a separate task. - # See: https://github.com/openfoodfoundation/openfoodnetwork/pull/6924#issuecomment-813056525 - - name: Run migration tests - run: bundle exec rspec --pattern "spec/{migrations}/**/*_spec.rb" - - - name: Run system tests - run: bundle exec rspec --profile -- spec/system - - name: Run all other tests run: bundle exec rake ofn:specs:run:excluding_folders["models,controllers,serializers,features,lib,migrations,system"] - - test-the-rest: - runs-on: ubuntu-18.04 - services: - postgres: - image: postgres:10 - ports: ["5432:5432"] - options: >- - --health-cmd pg_isready - --health-interval 10s - --health-timeout 5s - --health-retries 5 - env: - POSTGRES_DB: open_food_network_test - POSTGRES_USER: ofn - POSTGRES_PASSWORD: f00d - steps: - - uses: actions/checkout@v2 - - - name: Set up Ruby - uses: ruby/setup-ruby@v1 - with: - bundler-cache: true # runs 'bundle install' and caches installed gems automatically - - - uses: actions/setup-node@v2 - with: - node-version: '14.15.5' - - - name: Install JS dependencies - run: yarn install --frozen-lockfile - - - name: Set up application.yml - run: cp config/application.yml.example config/application.yml - - - name: Set up database - run: | - bundle exec rake db:create RAILS_ENV=test - bundle exec rake db:schema:load RAILS_ENV=test - - - name: Run admin feature folders, engines, lib - run: bundle exec rspec --profile --pattern "engines/*/spec/{,/*/**}/*_spec.rb,spec/features/admin/*/*_spec.rb,spec/lib/{,/*/**}/*_spec.rb"