name: Houdini build
on: [push, pull_request]
jobs:
  notice_ruby:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Set up Ruby
      # To automatically get bug fixes and new Ruby versions for ruby/setup-ruby,
      # change this to (see https://github.com/ruby/setup-ruby#versioning):
      # uses: ruby/setup-ruby@v1
        uses: ruby/setup-ruby@ec106b438a1ff6ff109590de34ddc62c540232e0
      - uses: actions/cache@v1
        name: Use Gem cache
        with:
          path: vendor/bundle
          key: bundle-use-ruby-ubuntu-latest-2.6.6-${{ hashFiles('**/Gemfile.lock') }}
          restore-keys: |
            bundle-use-ruby-ubuntu-latest-2.6.6-
      - name: bundle install
        run: |
          bundle config deployment true
          bundle config path vendor/bundle
          bundle install --jobs 4
      - name: run notice:ruby:verify
        run: |
            bin/rails notice:ruby:verify
  notice_js:
    runs-on: ubuntu-latest
    needs: notice_ruby
    steps:
      - uses: actions/checkout@v2
      - name: Set up Ruby
      # To automatically get bug fixes and new Ruby versions for ruby/setup-ruby,
      # change this to (see https://github.com/ruby/setup-ruby#versioning):
      # uses: ruby/setup-ruby@v1
        uses: ruby/setup-ruby@ec106b438a1ff6ff109590de34ddc62c540232e0
      - name: Setup Node.js environment
        uses: actions/setup-node@v1.4.2
      - uses: actions/cache@v1
        name: Use Node package cache
        with:
          path: node_modules
          key: bundle-use-node-js-ubuntu-latest-12-${{ hashFiles('**/yarn.lock') }}
          restore-keys: |
            bundle-use-node-js-ubuntu-latest-12-
      - uses: actions/cache@v1
        name: Use Gem cache
        with:
          path: vendor/bundle
          key: bundle-use-ruby-ubuntu-latest-2.6.6-${{ hashFiles('**/Gemfile.lock') }}
          restore-keys: |
            bundle-use-ruby-ubuntu-latest-2.6.6-
      - name: bundle install
        run: |
          bundle config deployment true
          bundle config path vendor/bundle
          bundle install --jobs 4
      - name: install node packages
        run: yarn install --frozen-lockfile
      - name: run notice:js:verify
        run: |
            bin/rails notice:js:verify
  main_build:
    needs: [notice_js]
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest]
        node: [12]
        ruby: [2.6.6]
    steps:
    - uses: actions/checkout@v2
    - name: Setup PostgreSQL with PostgreSQL extensions and unprivileged user
      uses: Daniel-Marynicz/postgresql-action@0.1.0
      with:
        postgres_image_tag: 11-alpine
        postgres_user: houdini_user
        postgres_password: password
    - name: Set up Ruby
    # To automatically get bug fixes and new Ruby versions for ruby/setup-ruby,
    # change this to (see https://github.com/ruby/setup-ruby#versioning):
    # uses: ruby/setup-ruby@v1
      uses: ruby/setup-ruby@ec106b438a1ff6ff109590de34ddc62c540232e0
    - name: Setup Node.js environment
      uses: actions/setup-node@v1.4.2
    - uses: actions/cache@v1
      name: Use Gem cache
      with:
        path: vendor/bundle
        key: bundle-use-ruby-${{ matrix.os }}-${{ matrix.ruby }}-${{ hashFiles('**/Gemfile.lock') }}
        restore-keys: |
          bundle-use-ruby-${{ matrix.os }}-${{ matrix.ruby }}-
    - name: bundle install
      run: |
        bundle config deployment true
        bundle config path vendor/bundle
        bundle install --jobs 4
    - uses: actions/cache@v1
      name: Use Node package cache
      with:
        path: node_modules
        key: bundle-use-node-js-${{ matrix.os }}-${{ matrix.node }}-${{ hashFiles('**/yarn.lock') }}
        restore-keys: |
          bundle-use-node-js-${{ matrix.os }}-${{ matrix.node }}-
    - name: run setup
      run: bin/setup ci
    - name: run spec
      run: bin/rails spec
    - name: run jest
      run: yarn jest