name: Main workflow

on:
  pull_request:
  push:
    branches:
      - master
      - releases/*

jobs:
  build:
    runs-on: ${{ matrix.operating-system }}
    strategy:
      matrix:
        operating-system: [ubuntu-latest, windows-latest]
    steps:
      - uses: actions/checkout@v2
      - name: Setup node 12
        uses: actions/setup-node@v1
        with:
          node-version: 12.x
      - run: npm ci
      - run: npm run build
      - run: npm run format-check
      - run: npm test
      - name: Verify no unstaged changes
        if: runner.os != 'windows'
        run: __tests__/verify-no-unstaged-changes.sh

  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Clear tool cache
        run: rm -rf $RUNNER_TOOL_CACHE/*
      - name: Setup node 10
        uses: ./
        with:
          node-version: 10.x
      - name: Verify node and npm
        run: __tests__/verify-node.sh 10

  test-fallback:
    runs-on: windows-latest
    steps:
      - uses: actions/checkout@v2
      - name: Clear tool cache
        run: mv "${{ runner.tool_cache }}" "${{ runner.tool_cache }}.old"
      - name: Setup node 0.12.18 # For non LTS versions of Node, the zip is not always available
        uses: ./                 # and falls back to downloading node.exe and node.lib
        with:
          node-version: 0.12.18
      - name: Verify node
        shell: bash
        run: __tests__/verify-node.sh 0.12.18 SKIP_NPM

  test-proxy:
    runs-on: ubuntu-latest
    container:
      image: ubuntu:latest
      options: --dns 127.0.0.1
    services:
      squid-proxy:
        image: datadog/squid:latest
        ports:
          - 3128:3128
    env:
      https_proxy: http://squid-proxy:3128
    steps:
      - uses: actions/checkout@v2
      - name: Clear tool cache
        run: rm -rf $RUNNER_TOOL_CACHE/*
      - name: Setup node 10
        uses: ./
        with:
          node-version: 10.x
      - name: Verify node and npm
        run: __tests__/verify-node.sh 10

  test-bypass-proxy:
    runs-on: ubuntu-latest
    env:
      https_proxy: http://no-such-proxy:3128
      no_proxy: github.com,nodejs.org,registry.npmjs.org
    steps:
      - uses: actions/checkout@v2
      - name: Clear tool cache
        run: rm -rf $RUNNER_TOOL_CACHE/*
      - name: Setup node 10
        uses: ./
        with:
          node-version: 10.x
      - name: Verify node and npm
        run: __tests__/verify-node.sh 10