diff --git a/.github/workflows/ci-features.yml b/.github/workflows/ci-features.yml new file mode 100644 index 0000000000..72e1ac4486 --- /dev/null +++ b/.github/workflows/ci-features.yml @@ -0,0 +1,122 @@ +name: CI + +on: [pull_request] + +jobs: + contributors: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Install ruby version specified in .ruby-version + uses: ruby/setup-ruby@v1 + with: + bundler-cache: true + - name: Install gem bundle + run: | + gem install bundler + bundle install + - name: Check contributors + run: | + bundle exec script/check_contributors_md.rb + rspec: + runs-on: ubuntu-latest + services: + db: + image: postgres + env: + ## + # The Postgres service fails its docker health check unless you + # specify these environment variables + # + POSTGRES_USER: postgres + POSTGRES_PASSWORD: postgres + POSTGRES_DB: growstuff_test + ports: ['5432:5432'] + options: >- + --health-cmd pg_isready + --health-interval 10s + --health-timeout 5s + --health-retries 5 + env: + APP_DOMAIN_NAME: localhost:3000 + APP_PROTOCOL: http + CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }} + DATABASE_URL: postgres://postgres:postgres@localhost:5432/growstuff_test + DEVISE_SECRET_KEY: secret + ELASTIC_SEARCH_VERSION: "7.5.1-amd64" + GROWSTUFF_EMAIL: "noreply@test.growstuff.org" + GROWSTUFF_FLICKR_KEY: secretkey" + GROWSTUFF_FLICKR_SECRET: secretsecret + GROWSTUFF_SITE_NAME: "Growstuff (travis)" + RAILS_ENV: test + RAILS_SECRET_TOKEN: supersecret + + steps: + - name: Checkout this repo + uses: actions/checkout@v4 + + - name: Configure sysctl limits + run: | + sudo swapoff -a + sudo sysctl -w vm.swappiness=1 + sudo sysctl -w fs.file-max=262144 + sudo sysctl -w vm.max_map_count=262144 + + - name: Start Elasticsearch + uses: elastic/elastic-github-actions/elasticsearch@master + with: + stack-version: 7.5.1 + + ## + # Cache Yarn modules + # + # See https://github.com/actions/cache/blob/master/examples.md#node---yarn for details + # + - name: Get yarn cache directory path + id: yarn-cache-dir-path + run: echo "::set-output name=dir::$(yarn cache dir)" + - name: Setup yarn cache + uses: actions/cache@v4 + id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`) + with: + path: ${{ steps.yarn-cache-dir-path.outputs.dir }} + key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} + restore-keys: | + ${{ runner.os }}-yarn- + + - name: Install required OS packages + run: | + sudo apt-get -y install libpq-dev google-chrome-stable + + - name: Install NodeJS + uses: actions/setup-node@v4 + with: + node-version: '12' + + - name: Install Ruby (version given by .ruby-version) and Bundler + uses: ruby/setup-ruby@v1 + with: + bundler-cache: true + + - name: Install required JS packages + run: yarn install + + - name: install chrome + run: sudo apt-get install google-chrome-stable + + - name: Prepare database for testing + run: bundle exec rails db:prepare + + - name: precompile assets + run: bundle exec rails assets:precompile + + - name: index into elastic search + run: bundle exec rails search:reindex + + - name: Run rspec - features (report results to Percy.io and CodeClimate) + run: bundle exec rspec spec/features/ -fd --only-failures + + - name: Report to code climate + run: | + gem install codeclimate-test-reporter + codeclimate-test-reporter diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 167bc60207..50b1a1f98a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -67,26 +67,9 @@ jobs: with: stack-version: 7.5.1 - ## - # Cache Yarn modules - # - # See https://github.com/actions/cache/blob/master/examples.md#node---yarn for details - # - - name: Get yarn cache directory path - id: yarn-cache-dir-path - run: echo "::set-output name=dir::$(yarn cache dir)" - - name: Setup yarn cache - uses: actions/cache@v4 - id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`) - with: - path: ${{ steps.yarn-cache-dir-path.outputs.dir }} - key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} - restore-keys: | - ${{ runner.os }}-yarn- - - name: Install required OS packages run: | - sudo apt-get -y install libpq-dev google-chrome-stable + sudo apt-get -y install libpq-dev - name: Install NodeJS uses: actions/setup-node@v4 @@ -107,14 +90,26 @@ jobs: - name: Prepare database for testing run: bundle exec rails db:prepare - - name: precompile assets - run: bundle exec rails assets:precompile - - name: index into elastic search run: bundle exec rails search:reindex - - name: Run rspec (report results to Percy.io and CodeClimate) - run: bundle exec rspec spec -fd + - name: Run rspec - spec/helpers + run: bundle exec rspec spec/helpers/ -fd --only-failures --fail-fast + + - name: Run rspec - spec/models + run: bundle exec rspec spec/models/ -fd --only-failures --fail-fast + + - name: Run rspec - spec/controllers + run: bundle exec rspec spec/controllers/ -fd --only-failures --fail-fast + + - name: Run rspec - spec/views + run: bundle exec rspec spec/views/ -fd --only-failures --fail-fast + + - name: Run rspec - spec/routes + run: bundle exec rspec spec/routes/ -fd --only-failures --fail-fast + + - name: Run rspec - spec/services + run: bundle exec rspec spec/services/ -fd --only-failures --fail-fast - name: Report to code climate run: |