name: CI
on: [push, pull_request]
jobs:
  test:
    runs-on: ubuntu-latest
    name: Test
    steps:
      - name: Checkout
        uses: actions/checkout@v2
      - name: Set up node
        uses: actions/setup-node@v2
        with:
          node-version: 12
          cache: yarn
      - name: Install dependencies
        run: yarn install
      - name: Test
        run: yarn test
      - name: Release dry-run
        run: yarn test:release
        env:
          HUSKY: 0
          GH_TOKEN: ${{ secrets.GH_TOKEN }}
          NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
          NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
      - name: Upload codecov
        uses: codecov/codecov-action@v1
        with:
          token: ${{ secrets.CODECOV_TOKEN }}
          files: ./coverage/lcov.info
          fail_ci_if_error: true
  regression:
    needs: test
    runs-on: ubuntu-latest
    name: Regression test - ${{ matrix.ember_try_scenario }} - Experimental ${{ matrix.experimental }}
    strategy:
      matrix:
        ember_try_scenario:
          - ember-lts-3.20
          - ember-lts-3.24
          - ember-release
          - ember-beta
          - ember-canary
          - ember-default-with-jquery
          - ember-classic
        experimental: [false]
        include:
          - ember_try_scenario: ember-canary
            experimental: true
          - ember_try_scenario: embroider-safe
            experimental: true
          - ember_try_scenario: embroider-optimized
            experimental: true
    continue-on-error: ${{ matrix.experimental }}
    steps:
      - name: Checkout
        uses: actions/checkout@v2
      - name: Set up node
        uses: actions/setup-node@v2
        with:
          node-version: 12
          cache: yarn
      - name: Install dependencies
        run: yarn install
      - name: Test
        run: yarn ember try:one ${{ matrix.ember_try_scenario }}
  release:
    if: github.ref == 'refs/heads/master'
    needs: [test, regression]
    runs-on: ubuntu-latest
    name: Release
    steps:
      - name: Checkout
        uses: actions/checkout@v2
        with:
          fetch-depth: 0
          token: ${{ secrets.GH_TOKEN }}
      - name: Set up node
        uses: actions/setup-node@v2
        with:
          node-version: 12
          registry-url: 'https://registry.npmjs.org'
      - name: Configure CI Git User
        run: |
          git config --global user.email adrigzr@users.noreply.github.com
          git config --global user.name adrigzr
      - name: Install dependencies
        run: yarn install
      - name: Release
        run: yarn semantic-release
        env:
          HUSKY: 0
          GH_TOKEN: ${{ secrets.GH_TOKEN }}
          NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
          NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
