# This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node.
# It then publish a packages to npm registry when PR against a given target branch is merged.
# For more information on github actions see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions
# For more information on publishing packages see: https://docs.github.com/en/actions/publishing-packages/publishing-nodejs-packages

name: Node.js CI

on:
  push:
    branches: [ "master" ]
  pull_request:
    branches: [ "master" ]
    
  # Allows you to run this workflow manually from the Actions tab
  workflow_dispatch:

jobs:
  build:
    runs-on: ubuntu-latest

    strategy:
      matrix:
        node-version: [16.x, 18.x, 20.x]

    steps:
      - uses: actions/checkout@v3
        # with: 
        #   fetch-depth: 0

      - name: Use Node.js ${{ matrix.node-version }}
        uses: actions/setup-node@v3
        with:
          node-version: ${{ matrix.node-version }}
     
      # TODO: enable `rush change -v` after rush migration is completed.
      # - name: Verify Change files and fail build if not available
      #   run: node common/scripts/install-run-rush.js change --verify

      - name: Install
        run: node common/scripts/install-run-rush.js install
      
      - name: Build
        run: node common/scripts/install-run-rush.js rebuild --verbose
      
      - name: Test
        run: node common/scripts/install-run-rush.js test --verbose