alexdiliberto/ember-transformicons

View on GitHub
.github/workflows/ci.yml

Summary

Maintainability
Test Coverage
name: CI

on:
  pull_request:
  push:
    # filtering branches here prevents duplicate builds from pull_request and push
    branches:
      - master

env:
  CI: true

jobs:
  install:
    name: Install Dependencies
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Code
        uses: actions/checkout@v2
      - name: Setup Volta
        uses: volta-cli/action@v1
        with:
          node-version: 12
      - name: Cache Dependencies
        uses: actions/cache@v2
        with:
          path: node_modules
          key: ${{ runner.os }}-node-${{ hashFiles('**/yarn.lock') }}
          restore-keys: |
            ${{ runner.os }}-node-
      - name: Install Dependencies
        run: yarn install --non-interactive

  lint:
    name: Lint
    runs-on: ubuntu-latest
    needs: [install]
    steps:
      - name: Checkout Code
        uses: actions/checkout@v2
      - name: Setup Volta
        uses: volta-cli/action@v1
        with:
          node-version: 12
      - name: Cache Dependencies
        uses: actions/cache@v2
        with:
          path: node_modules
          key: ${{ runner.os }}-node-${{ hashFiles('**/yarn.lock') }}
          restore-keys: |
            ${{ runner.os }}-node-
      - name: Lint
        run: yarn lint

  test-locked-deps:
    name: Locked Dependencies
    runs-on: ubuntu-latest
    needs: [install]
    steps:
      - name: Checkout Code
        uses: actions/checkout@v2
      - name: Setup Volta
        uses: volta-cli/action@v1
        with:
          node-version: 12
      - name: Cache Dependencies
        uses: actions/cache@v2
        with:
          path: node_modules
          key: ${{ runner.os }}-node-${{ hashFiles('**/yarn.lock') }}
          restore-keys: |
            ${{ runner.os }}-node-
      - name: Browser Tests
        env:
          PERCY_TOKEN: ${{ secrets.PERCY_TOKEN }}
        run: yarn test:ember

  test-floating-deps:
    name: Floating Dependencies
    runs-on: ubuntu-latest
    needs: [lint, test-locked-deps]
    steps:
      - name: Checkout Code
        uses: actions/checkout@v2
      - name: Setup Volta
        uses: volta-cli/action@v1
        with:
          node-version: 12
      - name: Install Dependencies without Lockfile
        run: yarn install --no-lockfile --non-interactive
      - name: Browser Tests
        run: yarn test:ember

  test-ember-try:
    name: Ember Try
    runs-on: ubuntu-latest
    needs: [lint, test-locked-deps]
    strategy:
      matrix:
        scenario:
          - ember-lts-3.20
          - ember-lts-3.24
          - ember-release
          - ember-beta
          - ember-canary
          - ember-default-with-jquery
          - ember-classic
          # - embroider-safe
          # - embroider-optimized
        include:
          - scenario: ember-canary
            continue-on-error: true
    steps:
      - name: Checkout Code
        uses: actions/checkout@v2
      - name: Setup Volta
        uses: volta-cli/action@v1
        with:
          node-version: 12
      - name: Cache Dependencies
        uses: actions/cache@v2
        with:
          path: node_modules
          key: ${{ runner.os }}-node-${{ hashFiles('**/yarn.lock') }}
          restore-keys: |
            ${{ runner.os }}-node-
      - name: "Scenario: ${{ matrix.scenario }}"
        run: yarn ember try:one ${{ matrix.scenario }}
        continue-on-error: ${{ matrix['continue-on-error'] == true }}

  # https://github.com/ember-learn/ember-cli-addon-docs/issues/437
  deploy-prod:
    name: Production Deploy
    runs-on: ubuntu-latest
    needs: [test-floating-deps, test-ember-try]
    # if: (branch = master OR tag IS present) AND type = push
    # if: success() && github.ref == 'refs/heads/master' && github.event_name == 'push'
    if: success() && github.event_name == 'push'
    steps:
      - name: Checkout Code
        uses: actions/checkout@v2
      - name: Setup Volta
        uses: volta-cli/action@v1
        with:
          node-version: 12
      - name: Cache Dependencies
        uses: actions/cache@v2
        with:
          path: node_modules
          key: ${{ runner.os }}-node-${{ hashFiles('**/yarn.lock') }}
          restore-keys: |
            ${{ runner.os }}-node-
      - name: Set ENV
        # 'master' or 'v1.2.3'
        run: echo "ADDON_DOCS_VERSION_PATH=${GITHUB_REF##*/}" >> $GITHUB_ENV
      - name: Deploy
        env:
          DEPLOY_KEY: ${{ secrets.DEPLOY_KEY }}
        run: yarn ember deploy production