name: Retrospring on: push: branches: [ main ] pull_request: branches: [ main ] jobs: build: runs-on: ubuntu-latest services: postgres: image: postgres:10.12 env: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres POSTGRES_DB: justask_test ports: - 5432/tcp options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 redis: image: redis ports: - 6379:6379 options: --entrypoint redis-server env: RAILS_ENV: test NODE_ENV: test POSTGRES_HOST: localhost POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres POSTGRES_DB: justask_test # used by setup-ruby with bundler-cache BUNDLE_JOBS: '4' BUNDLE_RETRY: '3' BUNDLE_WITHOUT: 'production' steps: - uses: actions/checkout@v3.2.0 - name: Install dependencies run: sudo apt update && sudo apt-get install -y libpq-dev libxml2-dev libxslt1-dev libmagickwand-dev imagemagick libidn11-dev - name: Set up Ruby uses: ruby/setup-ruby@v1 with: bundler-cache: true - name: Set up Node 14 uses: actions/setup-node@v3 with: node-version: '14' - name: Copy default configuration run: | cp config/database.yml.postgres config/database.yml cp config/justask.yml.example config/justask.yml - name: Install node modules run: | npm i -g yarn yarn install --frozen-lockfile - name: Export i18n JS files run: bundle exec i18n export - name: Compile assets run: bundle exec rake assets:precompile - name: Set up database run: bundle exec rake db:setup env: POSTGRES_PORT: ${{ job.services.postgres.ports[5432] }} - name: Run tests run: bundle exec rake spec env: POSTGRES_PORT: ${{ job.services.postgres.ports[5432] }} REDIS_URL: "redis://localhost:${{ job.services.redis.ports[6379] }}" DISABLE_WEBPACK_IN_TESTS: 1 - uses: codecov/codecov-action@v3 with: token: ${{ secrets.CODECOV_TOKEN }} file: ./coverage/coverage.xml lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3.2.0 - name: Install dependencies run: sudo apt update && sudo apt-get install -y libpq-dev libxml2-dev libxslt1-dev libmagickwand-dev imagemagick libidn11-dev - name: Set up Ruby uses: ruby/setup-ruby@v1 with: bundler-cache: true - name: Run rubocop uses: reviewdog/action-rubocop@v2 with: rubocop_version: gemfile rubocop_extensions: rubocop-rails:gemfile reporter: github-pr-check - run: yarn install - uses: reviewdog/action-eslint@v1 with: reporter: github-check eslint_flags: '--ext .ts app/javascript'