# This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node # For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions name: node on: push: branches: [main] pull_request: branches: [main] jobs: format-lint: runs-on: ubuntu-latest timeout-minutes: 5 strategy: matrix: node-version: [14.x] # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ steps: - uses: actions/checkout@v2 with: ref: ${{ github.head_ref }} - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v2 with: node-version: ${{ matrix.node-version }} - uses: actions/cache@v2 with: path: '~/.npm' key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} restore-keys: | ${{ runner.os }}-node- - run: npm ci - run: npm run format --if-present - run: npm run lint --if-present -- --fix - name: Commit changes if any run: | git config user.name "GitHub Actions" git config user.email "action@github.com" if output=$(git status --porcelain) && [ ! -z "$output" ]; then git commit -m "ci: Automatic code formatting" -a git push fi typecheck: runs-on: ubuntu-latest timeout-minutes: 5 strategy: matrix: node-version: [14.x] # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ steps: - uses: actions/checkout@v2 with: ref: ${{ github.head_ref }} - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v2 with: node-version: ${{ matrix.node-version }} - uses: actions/cache@v2 with: path: '~/.npm' key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} restore-keys: | ${{ runner.os }}-node- - run: npm ci - run: npm run type-check --if-present run: runs-on: ${{ matrix.os }} timeout-minutes: 10 strategy: matrix: os: [ubuntu-latest, windows-latest, macOS-latest] node-version: [14.x, 16.x] # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ exclude: - {os: windows-latest, node-version: 16.x} - {os: macOS-latest, node-version: 16.x} steps: - uses: actions/checkout@v2 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v2 with: node-version: ${{ matrix.node-version }} - uses: denoland/setup-deno@v1 with: deno-version: v1.x - uses: actions/cache@v2 with: path: '~/.npm' key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} restore-keys: | ${{ runner.os }}-node- - run: npm ci # TODO: Generate and publish a HTML artifact - run: npm start # vim: set et ts=2 sw=2: