--- name: CI on: [push] jobs: rubocop: name: Rubocop runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Install Ruby uses: ruby/setup-ruby@v1 with: ruby-version: 3.2.2 - name: Cache gems uses: actions/cache@v1 with: path: vendor/bundle key: ${{ runner.os }}-gem-${{ hashFiles('**/Gemfile.lock') }} restore-keys: | ${{ runner.os }}-gem- - name: Install gems run: | gem install bundler bundle config path vendor/bundle bundle install --jobs 4 --retry 4 - name: Run RuboCop run: bundle exec rubocop erblint: name: Erblint runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Install Ruby uses: ruby/setup-ruby@v1 with: ruby-version: 3.2.2 - name: Cache gems uses: actions/cache@v1 with: path: vendor/bundle key: ${{ runner.os }}-gem-${{ hashFiles('**/Gemfile.lock') }} restore-keys: | ${{ runner.os }}-gem- - name: Install gems run: | gem install bundler bundle config path vendor/bundle bundle install --jobs 4 --retry 4 - name: Run Erblint run: bundle exec erblint ./app eslint: name: ESLint runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Install Node.js uses: actions/setup-node@v1 with: node-version: 16.13.1 - name: Cache directory path id: yarn-cache-dir-path run: echo "::set-output name=dir::$(yarn cache dir)" - uses: actions/cache@v1 id: yarn-cache with: path: ${{ steps.yarn-cache-dir-path.outputs.dir }} key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} restore-keys: | ${{ runner.os }}-yarn- - name: Install dependencies run: | yarn install - name: Run eslint run: | ./node_modules/eslint/bin/eslint.js "app/javascript/**/*.js" rspec: name: RSpec runs-on: ubuntu-latest services: postgres: image: postgres:14 env: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres POSTGRES_DB: docuseal_test ports: ["5432:5432"] options: >- --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 steps: - uses: actions/checkout@v2 - name: Install Ruby uses: ruby/setup-ruby@v1 with: ruby-version: 3.2.2 - name: Set up Node uses: actions/setup-node@v1 with: node-version: 16.13.1 - name: Install Chrome uses: browser-actions/setup-chrome@latest - name: Cache node_modules uses: actions/cache@v1 with: path: node_modules key: ${{ runner.os }}-node-${{ hashFiles('**/yarn.lock') }} - name: Cache gems uses: actions/cache@v1 with: path: vendor/bundle key: ${{ runner.os }}-gem-${{ hashFiles('**/Gemfile.lock') }} restore-keys: | ${{ runner.os }}-gem- - name: Install dependencies env: RAILS_ENV: test run: | gem install bundler bundle config path vendor/bundle bundle install --jobs 4 --retry 4 yarn install sudo apt-get install libvips - name: Run env: RAILS_ENV: test NODE_ENV: test COVERAGE: true DATABASE_URL: postgres://postgres:postgres@localhost:5432/docuseal_test run: | bundle exec rake db:create bundle exec rake db:migrate bundle exec rspec